#469 interface for periodic grids
|Reported by||Andreas Dedner (A.S.Dedner@warwick.ac.uk)|
|Reported at||Nov 24, 2008 12:47|
|Version||Git (pre2.4) [autotools]|
|Operating System||Unspecified / All|
In the attached files two relevant cases (CASE 1,CASE 2 in the following) from application are described where periodic grids are used.
So far there are two suggestions for implementing periodic grids:
- use of ghost cells and communication
- use of periodic
GridViews (periodic index sets and intersections)
GridView can always be implemented (we think) if the communication
method is available. For CASE 1 this is the simpler approach and it would
be a good idea to additionally provide a
As far as we can see CASE 2 can not be realized using
but with the communication method available in DUNE it is also
not clear how to implement this setting since the transformation from
one boundary to the other is required.
scatter should be extended:
template< class Buffer, class Entity, class Transformation > void scatter ( Buffer &buffer, const Entity &entity, const Transformation &transformation, size_t n );
This transformation should map a neighborhood of the sending boundary to the receiving boundary and implement the Jacobian (or Jacobian inverse transpose) for the transformation of vector field. In the case of a simple periodic topology transformation=identity and could be implemented in a way that the compiler can remove any call to the transformation (template argument).
Here are a few questions which should be answered by the DUNE documentation — some of them are but a discussion over the last few months show that a lot is still not clear):
- (1) equality of entity pointers (notation taken from periodic.eps) e=e_g? f=f_g? f'=f_g? f'=f?
- (2) id/index sets (same question as in (1))
- (3) intersection iterators:
- on e' should e or e_g be returned (different geometry)?
- on e' should boundary and neighbor be true or should this depend on the grid view used?
- If a transformed geometry is used, should e_g allow an intersection iterator to its neighbor (ghost or overlap behavior?)