diff options
Diffstat (limited to 'CarpetAttic/CartGrid3D/src/GHExtension.c')
-rw-r--r-- | CarpetAttic/CartGrid3D/src/GHExtension.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/CarpetAttic/CartGrid3D/src/GHExtension.c b/CarpetAttic/CartGrid3D/src/GHExtension.c new file mode 100644 index 000000000..a6e54ea19 --- /dev/null +++ b/CarpetAttic/CartGrid3D/src/GHExtension.c @@ -0,0 +1,94 @@ + /*@@ + @file GHExtension.c + @date Mon Mar 15 15:48:42 1999 + @author Gerd Lanfermann + @desc + Set up the symmetry GH extension. This should really be done + with StoredData + @enddesc + @version $Id: GHExtension.c,v 1.1 2002/04/03 16:33:29 schnetter Exp $ + @@*/ + +#include <stdlib.h> + +#include "cctk.h" +#include "Symmetry.h" + +static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/GHExtension.c,v 1.1 2002/04/03 16:33:29 schnetter Exp $"; + +CCTK_FILEVERSION(CactusBase_CartGrid3D_GHExtension_c) + +int Symmetry_InitGHex(cGH *GH); +void *Symmetry_AllocGHex(tFleshConfig *config, int convlevel, cGH *GH); +int Symmetry_InitFGHex(cGH *GH); + +void *Symmetry_AllocGHex(tFleshConfig *config, int convlevel, cGH *GH) +{ + + int gf,grid_dim,NumVars; /* Number of dimensions, grid functions */ + SymmetryGHex *newGHex; /* Type of GHextension is EinsteinBoundGHex */ + + + /* avoid compiler warnings about unused arguments */ + config = config; + convlevel = convlevel; + GH = GH; + + NumVars = CCTK_NumVars(); /* Get number of grid functions */ + grid_dim = CCTK_MaxDim(); /* Get maximal dimension of the grid */ + + /* allocate the GHextension */ + newGHex = (SymmetryGHex*)malloc(sizeof(SymmetryGHex)); + + /* allocation for the number of grid functions*/ + newGHex->GFSym = (int **)malloc(NumVars*sizeof(int *)); + + /* allocation for the number of dimensions*/ + for (gf=0;gf<NumVars;gf++) + { + newGHex->GFSym[gf] = (int *)malloc(2*grid_dim*sizeof(int)); + } + + /* Now we have something, that looks like [0..NumVars-1][0..grid_dim-1] + and we return that: This will be merged into + the GH and can be referenced in the following manner: + int handle = CCTK_GHExtensionHandle("Symmetry"); + ..... which returns a pointer the GHextension + BoundGHEx = ((pGH *)GH->extensions[handle]); + ..... BoundGHex can now be used as: + BoundGHex->GFSym[3][2] = 1 ; + */ + + return newGHex; + +} + +int Symmetry_InitGHex(cGH *GH) +{ + int retval = 0; + SymmetryGHex *newGHex; + int handle; + int gf,d; + int NumVars =CCTK_NumVars(); + int grid_dim; + + grid_dim = CCTK_MaxDim(); + handle = CCTK_GHExtensionHandle("Symmetry"); + newGHex = (SymmetryGHex*) GH->extensions[handle]; + + /* ... and initialize them: */ + for (gf=0;gf<NumVars;gf++) + { + for(d=0;d<2*grid_dim;d++) + { + newGHex->GFSym[gf][d] = GFSYM_UNSET; /* not set */ + } + } + + return retval; +} + + + + + |