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

Registering Symmetries for Faces

Thorn SymBase keeps two registries. The first, mentioned in the previous section, is the set of symmetry boundary conditions. The second, the symmetry table, prescribes to which faces of the grids which symmetry boundary condition is to be applied. Each entry of this table constitutes a mapping from grid faces to symmetry boundary conditions, described by arrays whose elements correspond to grid faces:

CCTK_INT symmetry_handle[]
CCTK_INT symmetry_zone_width[]

The faces are numbered in the same way those of the cctk_bbox array. Each element of symmetry_handle is a symmetry handle as described in section A11.3. The symmetry zone is the same as a Cactus ghost zone, just in the context of a symmetry boundary, so the symmetry_zone_width will be typically be the same as the ghost zone width.

There is one such table for the grid hierarchy, which is valid for all grid functions. There is additionally one such table for each grid array group.

The API for registering symmetries for faces is

CCTK_INT FUNCTION
    SymmetryRegisterGrid
         (CCTK_POINTER IN cctkGH,
          CCTK_INT IN sym_handle,
          CCTK_INT IN ARRAY which_faces,
          CCTK_INT IN ARRAY symmetry_zone_width)

CCTK_INT FUNCTION
    SymmetryRegisterGI
        (CCTK_POINTER IN cctkGH,
         CCTK_INT IN sym_handle,
         CCTK_INT IN ARRAY which_faces,
         CCTK_INT IN ARRAY symmetry_zone_width,
         CCTK_INT IN group_index)

CCTK_INT FUNCTION
    SymmetryRegisterGN
        (CCTK_POINTER IN cctkGH,
         CCTK_INT IN sym_handle,
         CCTK_INT IN ARRAY which_faces,
         CCTK_INT IN ARRAY symmetry_zone_width,
         CCTK_STRING IN group_name)

The first routine registers a symmetry condition for the grid hierarchy; the other two routines register for grid array groups (by index or name, respectively) sym_handle must be a symmetry handle obtained as described in the previous section. which_faces and symmetry_zone_width are arrays with one element per face, numbered in the same way as the cctk_bbox array. which_faces selects which faces to register, and symmetry_zone_width sets the number of symmetry zones for these faces.

These routines may be called at anytime after SymmetryRegister.

It is not possible to register multiple symmetry boundary conditions for the same face.


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