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_ */
|