Skip to content

#469 interface for periodic grids

Metadata

Property Value
Reported by Andreas Dedner (A.S.Dedner@warwick.ac.uk)
Reported at Nov 24, 2008 12:47
Type Unknown
Version Git (pre2.4) [autotools]
Operating System Unspecified / All

Description

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:

  1. use of ghost cells and communication
  2. use of periodic GridViews (periodic index sets and intersections)

The 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 PeriodicGridView.

As far as we can see CASE 2 can not be realized using PeriodicGridViews 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.

Suggestion:

the method 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?)

Attachments