aboutsummaryrefslogtreecommitdiff
path: root/src/Symmetry.h
blob: ca21967925128a3e6fecd45bcc8395beb9fea238 (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
/*@@
   @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_

#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 vi);
int GetCartSymVN(const cGH *GH, int *sym, const char *vn); 

int SetCartSymVI(cGH *GH, int *sym, int vi);
int SetCartSymGI(cGH *GH, int *sym, int vi);
int SetCartSymVN(cGH *GH, int *sym, const char *vn); 
int SetCartSymGN(cGH *GH, int *sym, const char *vn); 

int CartSymVI(cGH *GH, int vi);
int CartSymGI(cGH *GH, int gi);
int CartSymVN(cGH *GH, const char *vn);
int CartSymGN(cGH *GH, const char *gn);

#ifdef __cplusplus
}
#endif

#endif /* _SYMMETRY_H_ */