[ET Trac] [Einstein Toolkit] #755: Provide better support for implementing boundary conditions
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Fri Feb 17 06:41:05 CST 2012
#755: Provide better support for implementing boundary conditions
-------------------------+--------------------------------------------------
Reporter: hinder | Owner:
Type: enhancement | Status: new
Priority: major | Milestone:
Component: Cactus | Version:
Keywords: |
-------------------------+--------------------------------------------------
Whenever an application thorn wants to apply a boundary condition (i.e.
not using the hard-coded boundary conditions from thorn Boundary), it is
necessary to identify which points on the local component correspond to
physical (as opposed to symmetry, inter-process or refinement boundaries).
This functionality is available in KrancNumericalTools/GenericFD. The
function is GenericFD_GetBoundaryInfo in
https://github.com/ianhinder/Kranc/blob/master/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.c
The function takes various Cactus variables as input and outputs arrays
indicating the nature of each boundary: bounding box and whether the face
is a symmetry, physical or interprocessor boundary (including refinement
boundaries).
There is also a function GenericFD_LoopOverBoundary which splits the
domain into the 26 different regions (6 faces, 12 edges and 8 corners) and
calls a function (passed by pointer) on each region that corresponds to a
physical boundary. Input parameters to the function identify the boundary
normal, face, direction, etc. This calls GenericFD_GetBoundaryInfo to
identify this information. This functionality is obviously core to
implementing boundary conditions.
I propose that this functionality be included in Cactus. Thorn Boundary
would be a logical place, since GenericFD_GetBoundaryInfo calls aliased
functions usually provided by CoordBase or multipatch thorns, so I don't
think this belongs in the flesh. The function-pointer interface might not
be the right one - perhaps we could refactor the code so that there was a
macro similar to the flesh CCTK_LOOP macros. The user would write
BEGIN_BOUNDARY_LOOP(args...)
...
END_BOUNDARY_LOOP
where args gave names for the local variables indicating the normal
direction, face number etc. This macro would evaluate whatever was inside
it on each of the physical boundaries with appropriate values for the
arguments.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/755>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list