aboutsummaryrefslogtreecommitdiff
path: root/src/Symmetry.h
blob: 5295766fbddcbd37319f1c3dae3bf032cfb9097a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*@@
   @header    Symmetry.h
   @date      Sun 7th Mar 1999
   @author    Gerd Lanfermann
   @desc
              The extensions to the GH structure for 3D grid symmetry treatment.

              We'll have six int array for every GF, which holds a flag
              for which symmetry or (physical) bnd-condition to apply
              at the grid faces.

                * These tables are set by SetSymmetry(GF,int,int,int)
                  during initialization.
                * Default values ?
                * The information is used during evolution
                  by Einstein_DoBound(GF), Einstein_DoSym(GF).
   @enddesc
   @version   $Header$
 @@*/

#ifndef _SYMMETRY_H_
#define _SYMMETRY_H_ 1

#include "cctk.h"

#define GFSYM_UNSET      -41
#define GFSYM_NOSYM      -42

#define GFSYM_REFLECTION  1
#define GFSYM_ROTATION_X  2
#define GFSYM_ROTATION_Y  3
#define GFSYM_ROTATION_Z  4

#define MAX_DIM  3
#define MAX_FACE 6

typedef struct Symmetry
{
  /* Symmetry[0..GF-1][0..dim-1] */
  /* in each direction [0,..dim-1], this will hold the symmetry
     operation across that plane, iff the grid layout requires this.
     this compares to the {sx,sy,sz} of Cactus3.2  */
  int **GFSym;
} SymmetryGHex;

#ifdef __cplusplus
extern "C"
{
#endif

int GetCartSymVI (const cGH *GH, int *sym, int varindexi);
int GetCartSymVN (const cGH *GH, int *sym, const char *varname);

int SetCartSymVI (const cGH *GH, const int *sym, int varindex);
int SetCartSymGI (const cGH *GH, const int *sym, int groupindex);
int SetCartSymVN (const cGH *GH, const int *sym, const char *varname);
int SetCartSymGN (const cGH *GH, const int *sym, const char *groupname);

int CartSymVI (const cGH *GH, int varindex);
int CartSymGI (const cGH *GH, int groupindexi);
int CartSymVN (const cGH *GH, const char *varname);
int CartSymGN (const cGH *GH, const char *groupname);

#ifdef __cplusplus
}
#endif

#endif /* _SYMMETRY_H_ */