next up previous contents
Next: Interaction With Symmetry Conditions Up: SymBase Previous: Querying Symmetries of Faces   Contents

Symmetry Interpolation

The mechanism by which the grid points are mapped into the domain works as follows:

  1. The user calls CCTK_InterpGridArrays with a list of coordinates.
  2. The Flesh forwards this call to the driver.
  3. The driver calls SymBase's aliased function, SymmetryInterpolate, passing along all arguments.
  4. SymBase sets a flag for each face for which a symmetry condition has been registered, and then calls SymmetryInterpolateFaces, passing along all arguments. This is the beginning of a chain of recursive calls.
  5. SymmetryInterpolateFaces checks whether any faces are flagged.
  6. If no faces are flagged, SymBase calls the driver's aliased function DriverInterpolate, which performs the actual interpolation. This ends the chain of recursive calls.
  7. If there are faces with symmetry conditions flagged, SymBase chooses one such face, and then calls the ``symmetry interpolation'' routine of the symmetry condition registered for this face, passing along all arguments.
  8. The ``symmetry interpolation'' routine maps the coordinates into the domain by applying the symmetry condition for this face. It then removes the flag for the corresponding face, and calls SymmetryInterpolateFaces, passing along the arguments with the changed interpolation locations.
  9. After the actual interpolation has happened in the driver, the recursive call will return. The ``symmetry interpolation'' routine then examines the tensor types of the interpolated quantities and un-maps the values back onto their original locations. That is, e.g., after a reflection on the lower $x$-boundary, $x$-components of vectors need their sign changed.
  10. The chain of recursive calls unravels until the call to CCTK_InterpGridArrays returns.

Figure A11.2: The recursive calls involved in symmetry interpolation. Values of grid functions $a$ at global Cartesian coordinates $x$ are calculated by nested calls to the symmetry interpolators, which first apply the symmetry transformation to the coordinates. When all the symmetries have been applied, the local interpolator is called, producing the interpolation of grid function values in the local basis. As the symmetry interpolators return, they apply the inverse basis transformation to the interpolated grid function values.
[scale=.833,clip=true]/home/cactus_web/CheckOut/CactusStable/arrangements/CactusBase/SymBase/doc/fig/recursion

This mechanism has thus four players:

  • The driver forwards any CCTK_InterpGridArrays call to SymBase SymmetryInterpolate so that the list of interpolation points can be mapped into the domain. (See section A11.6.2.)
  • Thorn SymBase controls which symmetry conditions perform this mapping on which faces.
  • Each symmetry boundary condition has to register a ``symmetry interpolation'' routine that first maps the points into the domain, then calls SymBase SymmetryInterpolateFaces recursively. Before returning, it performs the inverse coordinate transformation on the interpolated quantities.
  • The user calls CCTK_InterpGridArrays. For them the rest of the mechanism is transparent.



Subsections
next up previous contents
Next: Interaction With Symmetry Conditions Up: SymBase Previous: Querying Symmetries of Faces   Contents