diff options
Diffstat (limited to 'CarpetAttic/CartGrid3D/src')
-rw-r--r-- | CarpetAttic/CartGrid3D/src/CartGrid3D.c | 431 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/DecodeSymParameters.c | 93 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/GHExtension.c | 94 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/ParamCheck.c | 100 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/SetSymmetry.c | 288 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/Startup.c | 107 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/Symmetry.c | 224 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/Symmetry.h | 57 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/SymmetryCondition.c | 103 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/SymmetryWrappers.c | 432 | ||||
-rw-r--r-- | CarpetAttic/CartGrid3D/src/make.code.defn | 17 |
11 files changed, 0 insertions, 1946 deletions
diff --git a/CarpetAttic/CartGrid3D/src/CartGrid3D.c b/CarpetAttic/CartGrid3D/src/CartGrid3D.c deleted file mode 100644 index 865397439..000000000 --- a/CarpetAttic/CartGrid3D/src/CartGrid3D.c +++ /dev/null @@ -1,431 +0,0 @@ - /*@@ - @file CartGrid3D.c - @date Thu Oct 7 13:20:06 1999 - @author Tom Goodale - @desc - Set up coordinates for a 3D Cartesian grid. - C Conversion of Fortran routine written by Gab. - @enddesc - @@*/ - -/*#define CCTK_DEBUG*/ - -#include <assert.h> -#include <stdio.h> -#include <math.h> - -#include "cctk.h" -#include "cctk_Arguments.h" -#include "cctk_Parameters.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/CartGrid3D.c,v 1.1 2002/04/03 16:33:28 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_CartGrid3D_c) - -void DecodeSymParameters3D(int sym[6]); -void CartGrid3D(CCTK_ARGUMENTS); - -#define max(a,b) ((a) > (b) ? (a) : (b)) -#define SQR(a) ((a)*(a)) - -void CartGrid3D(CCTK_ARGUMENTS) -{ - - DECLARE_CCTK_ARGUMENTS - DECLARE_CCTK_PARAMETERS - - int iconv, i, j, k; - double dconv; - CCTK_REAL x_origin,y_origin,z_origin; - CCTK_REAL this_dx,this_dy,this_dz; - CCTK_REAL xmin1,ymin1,zmin1,xmax1,ymax1,zmax1; - CCTK_REAL lowerx,upperx,lowery,uppery,lowerz,upperz; - int lowerxi,upperxi,loweryi,upperyi,lowerzi,upperzi; - char infoline[120]; - int ierr; - - int domainsym[6]; - int cntstag[3]; - - - if (cctk_levfac[0] == 1 && cctk_levfac[1] == 1 && cctk_levfac[2] == 1) { - /* Calculate the coordinate ranges only for the coarsest level */ - - - - /* Some compilers warn about variables which might be uninitialized - because they are assigned in some if/else statements only */ - x_origin = y_origin = z_origin = 0.0; - lowerxi = loweryi = lowerzi = 0; - upperxi = cctk_gsh[0]-1; - upperyi = cctk_gsh[1]-1; - upperzi = cctk_gsh[2]-1; - this_dx = this_dy = this_dz = 0.0; - - /* Avoid origin? Default is yes */ - cntstag[0] = no_origin && no_originx && avoid_origin && avoid_originx; - cntstag[1] = no_origin && no_originy && avoid_origin && avoid_originy; - cntstag[2] = no_origin && no_originz && avoid_origin && avoid_originz; - - /* Determine symmetries of domain */ - DecodeSymParameters3D(domainsym); - - /* Calculate physical indices, using symmetries and periodicity */ - if (domainsym[0]) - { - lowerxi = cctk_nghostzones[0]; - } - else - { - lowerxi = 0; - } - if (domainsym[2]) - { - loweryi = cctk_nghostzones[1]; - } - else - { - loweryi = 0; - } - if (domainsym[4]) - { - lowerzi = cctk_nghostzones[2]; - } - else - { - lowerzi = 0; - } - - if (periodic) - { - if (periodic_x) - { - lowerxi = cctk_nghostzones[0]; - upperxi = cctk_gsh[0]-1-cctk_nghostzones[0]; - } - if (periodic_y) - { - loweryi = cctk_nghostzones[1]; - upperyi = cctk_gsh[1]-1-cctk_nghostzones[1]; - } - if (periodic_z) - { - lowerzi = cctk_nghostzones[2]; - upperzi = cctk_gsh[2]-1-cctk_nghostzones[2]; - } - } - - dconv = pow(2, cctk_convlevel); - iconv = (int)dconv; - - /**************************************************************** - * - * BYRANGE - * - * User gives: minimum and maximum values of coordinates and - * the number of gridpoints on the coarse grid - * - ***************************************************************/ - /************************************************************** - * - * BOX (-0.5 to 0.5) - * - * User gives: number of gridpoints on the coarse grid - * - **************************************************************/ - - if (CCTK_Equals(type,"byrange") || CCTK_Equals(type,"box")) - { - - if (CCTK_Equals(type,"box")) - { - - /* Coordinates are all -0.5 to 0.5 */ - xmax1 = 0.5; - ymax1 = 0.5; - zmax1 = 0.5; - - xmin1 = -0.5; - ymin1 = -0.5; - zmin1 = -0.5; - - } - else - { - - if (xyzmax != -424242) - { - xmax1 = xyzmax; - ymax1 = xyzmax; - zmax1 = xyzmax; - } - else - { - xmax1 = xmax; - ymax1 = ymax; - zmax1 = zmax; - } - - if (xyzmin != -424242) - { - xmin1 = xyzmin; - ymin1 = xyzmin; - zmin1 = xyzmin; - } - else - { - xmin1 = xmin; - ymin1 = ymin; - zmin1 = zmin; - } - - } - - - - /* Grid spacing on coarsest grid */ - /* TODO: Put the coordinates into arrays, and loop over the - dimensions. That gets ride of all the triplicated code. */ - if (domainsym[0]) - { - if (cntstag[0]) - { - *coarse_dx = xmax1 / (cctk_gsh[0] - cctk_nghostzones[0] - 0.5); - x_origin = - (cctk_nghostzones[0] - 0.5) * *coarse_dx * iconv; - } - else - { - *coarse_dx = xmax1 / (cctk_gsh[0] - cctk_nghostzones[0] - 1); - x_origin = - cctk_nghostzones[0] * *coarse_dx * iconv; - } - } - else - { - *coarse_dx = (xmax1 - xmin1) / max(cctk_gsh[0] - 1, 1); - x_origin = xmin1; - } - - if (domainsym[2]) - { - if (cntstag[1]) - { - *coarse_dy = ymax1 / (cctk_gsh[1] - cctk_nghostzones[1] - 0.5); - y_origin = - (cctk_nghostzones[1] - 0.5) * *coarse_dy * iconv; - } - else - { - *coarse_dy = ymax1 / (cctk_gsh[1] - cctk_nghostzones[1] - 1); - y_origin = - cctk_nghostzones[1] * *coarse_dy * iconv; - } - } - else - { - *coarse_dy = (ymax1 - ymin1) / max(cctk_gsh[1] - 1, 1); - y_origin = ymin1; - } - - if (domainsym[4]) - { - if (cntstag[2]) - { - *coarse_dz = zmax1 / (cctk_gsh[2] - cctk_nghostzones[2] - 0.5); - z_origin = - (cctk_nghostzones[2] - 0.5) * *coarse_dz * iconv; - } - else - { - *coarse_dz = zmax1 / (cctk_gsh[2] - cctk_nghostzones[2] - 1); - z_origin = - cctk_nghostzones[2] * *coarse_dz * iconv; - } - } - else - { - *coarse_dz = (zmax1 - zmin1) / max(cctk_gsh[2] - 1, 1); - z_origin = zmin1; - } - - /* dx,dy,dz on the grid we are on */ - this_dx = *coarse_dx * iconv; - this_dy = *coarse_dy * iconv; - this_dz = *coarse_dz * iconv; - - } - - /************************************************************** - * BYSPACING - * - * User gives: grid spacing on the coarsest GH and - * the number of gridpoints on the coarsest GH - * - **************************************************************/ - - else if (CCTK_Equals(type,"byspacing")) - { - - /* Dx, Dy, Dx on the coarsest grid */ - - if (dxyz > 0) - { - *coarse_dx = dxyz; - *coarse_dy = dxyz; - *coarse_dz = dxyz; - } - else - { - *coarse_dx = dx; - *coarse_dy = dy; - *coarse_dz = dz; - } - - /* dx, dy, dz on the grid we are on */ - this_dx = *coarse_dx * iconv; - this_dy = *coarse_dy * iconv; - this_dz = *coarse_dz * iconv; - - - - /* Set minimum values of coordinates */ - if (domainsym[0]) - { - x_origin = (- cctk_nghostzones[0] + cntstag[0] * 0.5) * this_dx; - } - else - { - x_origin = - 0.5 * (cctk_gsh[0]-1 - cntstag[0] * (cctk_gsh[0])%2) - * this_dx; - } - - if (domainsym[2]) - { - y_origin = (- cctk_nghostzones[1] + cntstag[1] * 0.5) * this_dy; - } - else - { - y_origin = - 0.5 * (cctk_gsh[1]-1 - cntstag[1] * (cctk_gsh[1])%2) - * this_dy; - } - - if (domainsym[4]) - { - z_origin = (- cctk_nghostzones[2] + cntstag[2] * 0.5) * this_dz; - } - else - { - z_origin = - 0.5 * (cctk_gsh[2]-1 - cntstag[2] * (cctk_gsh[2])%2) - * this_dz; - } - } - - } else { /* if (not coarsest refinement level) */ - - /* Use the already calculated coordinate ranges for all but the - coarsest levels */ - - this_dx = cctk_delta_space[0] / cctk_levfac[0]; - this_dy = cctk_delta_space[1] / cctk_levfac[1]; - this_dz = cctk_delta_space[2] / cctk_levfac[2]; - - x_origin = cctk_origin_space[0]; - y_origin = cctk_origin_space[1]; - z_origin = cctk_origin_space[2]; - - } /* if (not coarsest refinement level) */ - - - - /* Set spatial coordinates */ - - for(i=0; i < cctk_lsh[0]; i++) - { - for(j=0; j < cctk_lsh[1]; j++) - { - for(k=0; k < cctk_lsh[2]; k++) - { - x[CCTK_GFINDEX3D(cctkGH,i,j,k)] = this_dx*(i+cctk_lbnd[0]) + x_origin; - y[CCTK_GFINDEX3D(cctkGH,i,j,k)] = this_dy*(j+cctk_lbnd[1]) + y_origin; - z[CCTK_GFINDEX3D(cctkGH,i,j,k)] = this_dz*(k+cctk_lbnd[2]) + z_origin; - r[CCTK_GFINDEX3D(cctkGH,i,j,k)] = sqrt(SQR(x[CCTK_GFINDEX3D(cctkGH,i,j,k)])+ - SQR(y[CCTK_GFINDEX3D(cctkGH,i,j,k)])+ - SQR(z[CCTK_GFINDEX3D(cctkGH,i,j,k)])); - } - } - } - - if (cctk_levfac[0] == 1 && cctk_levfac[1] == 1 && cctk_levfac[2] == 1) { - /* Register the coordinate ranges only for the coarsest level */ - - cctk_delta_space[0] = this_dx; - cctk_delta_space[1] = this_dy; - cctk_delta_space[2] = this_dz; - - cctk_origin_space[0] = x_origin; - cctk_origin_space[1] = y_origin; - cctk_origin_space[2] = z_origin; - - lowerx = x_origin; - upperx = x_origin+this_dx*(cctk_gsh[0]-1); - ierr = CCTK_CoordRegisterRange(cctkGH,lowerx,upperx,-1,"x","cart3d"); - assert (ierr==0); - ierr = CCTK_CoordRegisterRangePhysIndex(cctkGH,lowerxi,upperxi,-1,"x","cart3d"); - assert (ierr==0); - - lowery = y_origin; - uppery = y_origin+this_dy*(cctk_gsh[1]-1); - ierr = CCTK_CoordRegisterRange(cctkGH,lowery,uppery,-1,"y","cart3d"); - assert (ierr==0); - ierr = CCTK_CoordRegisterRangePhysIndex(cctkGH,loweryi,upperyi,-1,"y","cart3d"); - assert (ierr==0); - - lowerz = z_origin; - upperz = z_origin+this_dz*(cctk_gsh[2]-1); - ierr = CCTK_CoordRegisterRange(cctkGH,lowerz,upperz,-1,"z","cart3d"); - assert (ierr==0); - ierr = CCTK_CoordRegisterRangePhysIndex(cctkGH,lowerzi,upperzi,-1,"z","cart3d"); - assert (ierr==0); - - CCTK_INFO("Grid Spacings:"); - sprintf(infoline," %s%12.7e %s%12.7e %s%12.7e ", - "dx=>",cctk_delta_space[0], - "dy=>",cctk_delta_space[1], - "dz=>",cctk_delta_space[2]); - CCTK_INFO(infoline); - - CCTK_INFO("Computational Coordinates:"); - sprintf(infoline," %s[%6.3f,%6.3f] %s[%6.3f,%6.3f] %s[%6.3f,%6.3f] ", - "x=>",lowerx,upperx, - "y=>",lowery,uppery, - "z=>",lowerz,upperz); - CCTK_INFO(infoline); - - CCTK_INFO("Indices of Physical Coordinates:"); - sprintf(infoline," %s[%d,%d] %s[%d,%d] %s[%d,%d] ", - "x=>",lowerxi,upperxi, - "y=>",loweryi,upperyi, - "z=>",lowerzi,upperzi); - CCTK_INFO(infoline); - - } /* if (coarsest refinement level) */ - - -#ifdef CCTK_DEBUG - printf("\n"); - printf("CartGrid3D\n"); - printf(" ----------\n"); - printf("Dx,Dy,Dz on coarse grid %6.3f %6.3f, %6.3f\n", *coarse_dx,*coarse_dy,*coarse_dz); - printf("Dx,Dy,Dz on this grid %6.3f %6.3f, %6.3f\n", cctk_delta_space[0],cctk_delta_space[1],cctk_delta_space[2]); - printf(" Convergence level = %d\n",cctk_convlevel); - printf(" Minimum global coords %6.3f %6.3f %6.3f\n", x_origin,y_origin,z_origin); - printf(" Maximum global coords %6.3f %6.3f %6.3f\n", x_origin+this_dx*(cctk_gsh[0]-1), - y_origin+this_dy*(cctk_gsh[1]-1), - z_origin+this_dz*(cctk_gsh[2]-1)); - printf(" Minimum local coords %6.3f %6.3f %6.3f\n", x[0],y[0],z[0]); - printf(" Maximum local coords %6.3f %6.3f %6.3f\n", x[CCTK_GFINDEX3D(cctkGH, cctk_lsh[0]-1,cctk_lsh[1]-1,cctk_lsh[2]-1)], - y[CCTK_GFINDEX3D(cctkGH, cctk_lsh[0]-1,cctk_lsh[1]-1,cctk_lsh[2]-1)], - z[CCTK_GFINDEX3D(cctkGH, cctk_lsh[0]-1,cctk_lsh[1]-1,cctk_lsh[2]-1)]); - -#endif - - return; - -} - - diff --git a/CarpetAttic/CartGrid3D/src/DecodeSymParameters.c b/CarpetAttic/CartGrid3D/src/DecodeSymParameters.c deleted file mode 100644 index 9336eee6e..000000000 --- a/CarpetAttic/CartGrid3D/src/DecodeSymParameters.c +++ /dev/null @@ -1,93 +0,0 @@ - /*@@ - @file DecodeSymParameters.c - @date Wed May 10 18:58:00 EST 2000 - @author Erik Schnetter - @desc - Decode the symmetry parameters. - @enddesc - @version $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/DecodeSymParameters.c,v 1.1 2002/04/03 16:33:28 schnetter Exp $ - @@*/ - -#include "cctk.h" -#include "cctk_Arguments.h" -#include "cctk_Parameters.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/DecodeSymParameters.c,v 1.1 2002/04/03 16:33:28 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_DecodeSymParameters_c) - -void DecodeSymParameters3D(int sym[6]); - -/*@@ - @routine DecodeSymParameters3D - @date Thu May 11 11:49:08 2000 - @author Erik Schnetter - @desc - Decode the Symmetry parameters. - returns the symmetry flags (yes/no=1/0) - in the array sym - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -void DecodeSymParameters3D(int sym[6]) -{ - DECLARE_CCTK_PARAMETERS - - /* The default is as set by the explicit symmetry parameters */ - /* lower faces */ - sym[0] = symmetry_xmin; - sym[2] = symmetry_ymin; - sym[4] = symmetry_zmin; - - /* upper faces */ - sym[1] = symmetry_xmax; - sym[3] = symmetry_ymax; - sym[5] = symmetry_zmax; - - /* The default can be overridden by bitant, quadrant, and octant mode */ - if (CCTK_Equals(domain, "bitant")) - { - if (CCTK_Equals(bitant_plane, "xy")) - { - sym[4] = 1; - } - else if (CCTK_Equals(bitant_plane, "xz")) - { - sym[2] = 1; - } - else if (CCTK_Equals(bitant_plane, "yz")) - { - sym[0] = 1; - } - } - else if (CCTK_Equals(domain, "quadrant")) - { - if (CCTK_Equals(quadrant_direction, "x")) - { - sym[2] = 1; - sym[4] = 1; - } - else if (CCTK_Equals(quadrant_direction, "y")) - { - sym[0] = 1; - sym[4] = 1; - } - else if (CCTK_Equals(quadrant_direction, "z")) - { - sym[0] = 1; - sym[2] = 1; - } - } - else if (CCTK_Equals(domain, "octant")) - { - sym[0] = 1; - sym[2] = 1; - sym[4] = 1; - } -} diff --git a/CarpetAttic/CartGrid3D/src/GHExtension.c b/CarpetAttic/CartGrid3D/src/GHExtension.c deleted file mode 100644 index a6e54ea19..000000000 --- a/CarpetAttic/CartGrid3D/src/GHExtension.c +++ /dev/null @@ -1,94 +0,0 @@ - /*@@ - @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; -} - - - - - diff --git a/CarpetAttic/CartGrid3D/src/ParamCheck.c b/CarpetAttic/CartGrid3D/src/ParamCheck.c deleted file mode 100644 index 49d3bd9d5..000000000 --- a/CarpetAttic/CartGrid3D/src/ParamCheck.c +++ /dev/null @@ -1,100 +0,0 @@ - /*@@ - @file ParamCheck.c - @date Thu Oct 7 17:11:44 1999 - @author Tom Goodale - @desc - C version of Gab's paramcheck stuff - @enddesc - @@*/ - -#include "cctk.h" -#include "cctk_Arguments.h" -#include "cctk_Parameters.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/ParamCheck.c,v 1.1 2002/04/03 16:33:29 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_ParamCheck_c) - -void ParamCheck_CartGrid3D(CCTK_ARGUMENTS); - - /*@@ - @routine ParamCheckCartGrid3D - @date Tue Feb 23 1999 - @author Gabrielle Allen - @desc - Check parameters for CartGrid3D - @enddesc - @calls - @calledby - @history - @hdate Thu Oct 7 17:23:15 1999 @hauthor Tom Goodale - @hdesc Converted to C - @endhistory - -@@*/ -void ParamCheck_CartGrid3D(CCTK_ARGUMENTS) -{ - DECLARE_CCTK_ARGUMENTS - DECLARE_CCTK_PARAMETERS - - int iflag; - - iflag = 0; - - if (CCTK_Equals(type,"byrange")) - { - if (CCTK_Equals(domain,"octant")) - { - iflag++; - } - else if (CCTK_Equals(domain,"quadrant")) - { - iflag++; - } - else if (CCTK_Equals(domain,"bitant")) - { - iflag++; - } - else if (CCTK_Equals(domain,"full")) - { - iflag++; - } - - } - else if (CCTK_Equals(type,"byspacing")) - { - if (CCTK_Equals(domain,"bitant")) - { - iflag++; - } - else if (CCTK_Equals(domain,"quadrant")) - { - iflag++; - } else if (CCTK_Equals(domain,"octant")) - { - iflag++; - } - else if (CCTK_Equals(domain,"full")) - { - iflag++; - } - } - else if (CCTK_Equals(type,"box")) - { - iflag++; - - if (!CCTK_Equals(domain,"full")) - CCTK_PARAMWARN("No symmetries can be used with box grid"); - } - - /* No grid was set up */ - - if (iflag != 1) - { - CCTK_PARAMWARN("No grid set up in CartGrid3D"); - } - - return; - -} - diff --git a/CarpetAttic/CartGrid3D/src/SetSymmetry.c b/CarpetAttic/CartGrid3D/src/SetSymmetry.c deleted file mode 100644 index be215c90c..000000000 --- a/CarpetAttic/CartGrid3D/src/SetSymmetry.c +++ /dev/null @@ -1,288 +0,0 @@ - -/*@@ - @file Symmetry.c - @date Mon Mar 15 15:09:00 1999 - @author Gerd Lanfermann - @desc - This file contains the routines for registering and applying symmetry - boundary conditions - @enddesc - @@*/ - -#include <stdlib.h> - -#include "cctk.h" -#include "cctk_Parameters.h" -#include "cctk_FortranString.h" -#include "Symmetry.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/SetSymmetry.c,v 1.1 2002/04/03 16:33:29 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_SetSymmetry_c) - -#define MAX_DIM 3 -#define MAX_FACE 6 - - -/******************************************************************** - ********************* Local Data Types *********************** - ********************************************************************/ - -/******************************************************************** - ********************* Local Routine Prototypes ********************* - ********************************************************************/ - -void DecodeSymParameters3D(int sym[6]); - -void CCTK_FCALL CCTK_FNAME(SetCartSymVI) - (int *ierr, cGH *GH, int *sym, int *vi); -void CCTK_FCALL CCTK_FNAME(SetCartSymVN) - (int *ierr, cGH *GH, int *sym, ONE_FORTSTRING_ARG); -void CCTK_FCALL CCTK_FNAME(SetCartSymGI) - (int *ierr, cGH *GH, int *sym, int *gi); -void CCTK_FCALL CCTK_FNAME(SetCartSymGN) - (int *ierr, cGH *GH, int *sym, ONE_FORTSTRING_ARG); - - - -/******************************************************************** - ********************* External Routines ********************** - ********************************************************************/ - - /*@@ - @routine SetCartSymmetry - @date Mon Mar 15 15:10:58 1999 - @author Gerd Lanfermann - @desc - This routine sets the GH extension (EinsteinBoundGHex *bGHex), - which describes the symmetry boundary type of each GF. Takes - the name of the GF ("implementation::gfname") and the symmetry operators - sx,sy,sz and inserts them in the array bGHex. - These values will looked up by the application routines SymmetryWrappers - @enddesc - @calls - @calledby - @history enhanced by E.Schnetter - - @endhistory - -@@*/ - -int SetCartSymVI(cGH *GH, int *sym, int vi) -{ - - DECLARE_CCTK_PARAMETERS - - int domainsym[MAX_FACE]; - SymmetryGHex *sGHex; - int dir; - - /* Pointer to the SymmetryGHextension */ - sGHex = (SymmetryGHex *)GH->extensions[CCTK_GHExtensionHandle("Symmetry")]; - - /* Reference the hash table in the GHex and tell it what kind of - symmetry is being applied - (depending on sym and the grid layout) - If there is no symmetry necessary,set ESYM_NOSYM - When we apply a symmetry and find ESYM_UNSET, something went wrong! - */ - -#ifdef SYM_DEBUG - printf("SetSymmetry: %s [%d,%d,%d]\n",CCTK_VarName(vi), sym[0],sym[1],sym[2]); -#endif - - DecodeSymParameters3D(domainsym); - for (dir=0; dir<MAX_FACE; ++dir) - { - if (domainsym[dir]) - { - sGHex->GFSym[vi][dir] = sym[dir/2]; - } - else - { - sGHex->GFSym[vi][dir] = GFSYM_NOSYM; - } - } - -#ifdef SYM_DEBUG - printf("SetSymmetry: %s [%d,%d,%d]\n\n",imp_gf, - sGHex->GFSym[vi][0], - sGHex->GFSym[vi][2], - sGHex->GFSym[vi][4]); -#endif - return 0; -} - -void CCTK_FCALL CCTK_FNAME(SetCartSymVI) - (int *ierr, cGH *GH, int *sym, int *vi) -{ - *ierr = SetCartSymVI(GH, sym, *vi); -} - - /*@@ - @routine SetCartSymVN - @date Thu May 11 13:32:55 2000 - @author Gerd Lanfermann - @desc - Applies symmetry boundary conditions from - variable index - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int SetCartSymVN(cGH *GH, int *sym, const char *vn) { - int vi; - vi = CCTK_VarIndex(vn); - - if (vi>-1) - { - return(SetCartSymVI(GH, sym, vi)); - } - else - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "Cannot find variable %s in SetCartSymVN",vn); - return(-1); - } -} - -void CCTK_FCALL CCTK_FNAME(SetCartSymVN) - (int *ierr, cGH *GH, int *sym, ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(vn) - *ierr = SetCartSymVN(GH, sym, vn); - free(vn); -} - - - - /*@@ - @routine SetCartSymGI - @date - @author Gerd Lanfermann - @desc - Applies symmetry boundary conditions from - Group index - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int SetCartSymGI(cGH *GH, int *sym, int gi) -{ - - DECLARE_CCTK_PARAMETERS - - int domainsym[MAX_FACE]; - SymmetryGHex *sGHex; - int first_vari,numvars,vi; - int dir; - - sGHex = (SymmetryGHex *)GH->extensions[CCTK_GHExtensionHandle("Symmetry")]; - - first_vari = CCTK_FirstVarIndexI(gi); - numvars = CCTK_NumVarsInGroupI(gi); - - if (first_vari<0) - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "Cannot find group %s (grp.index: %d) in SetCartSymGI", - CCTK_GroupName(gi),first_vari); - return(-1); - } - - /* Reference the hash table in the GHex and tell it what kind of - symmetry is being applied - (depending on sym and the grid layout) - If there is no symmetry necessary,set ESYM_NOSYM - When we apply a symmetry and find ESYM_UNSET, something went wrong! - */ - for (vi=first_vari; vi<first_vari+numvars; vi++) - { - -#ifdef SYM_DEBUG - printf("SetSymmetry: %s [%d,%d,%d]\n",CCTK_VarName(vi), - sym[0],sym[1],sym[2]); -#endif - - DecodeSymParameters3D (domainsym); - for (dir=0; dir<MAX_FACE; dir++) - { - if (domainsym[dir]) - { - sGHex->GFSym[vi][dir] = sym[dir/2]; - } - else - { - sGHex->GFSym[vi][dir] = GFSYM_NOSYM; - } - } - -#ifdef SYM_DEBUG - printf("SetSymmetry: %s [%d,%d,%d]\n\n",imp_gf, - sGHex->GFSym[vi][0], - sGHex->GFSym[vi][2], - sGHex->GFSym[vi][4]); -#endif - } - return(0); -} - -void CCTK_FCALL CCTK_FNAME(SetCartSymGI) - (int *ierr, cGH *GH, int *sym, int *gi) -{ - *ierr = SetCartSymGI(GH, sym, *gi); -} - - - - /*@@ - @routine - @date - @author - @desc - Applies symmetry boundary conditions from - "Implementation::Groupname" - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int SetCartSymGN(cGH *GH, int *sym, const char *gn) -{ - int gi = CCTK_GroupIndex(gn); - - if (gi>-1) - { - return(SetCartSymGI(GH, sym, gi)); - } - else - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "Cannot find group %s in SetCartSymGN",gn); - return(-1); - } -} - -void CCTK_FCALL CCTK_FNAME(SetCartSymGN) - (int *ierr, cGH *GH, int *sym, ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(gn) - *ierr = SetCartSymGN(GH, sym, gn); - free(gn); -} - - diff --git a/CarpetAttic/CartGrid3D/src/Startup.c b/CarpetAttic/CartGrid3D/src/Startup.c deleted file mode 100644 index b91951c38..000000000 --- a/CarpetAttic/CartGrid3D/src/Startup.c +++ /dev/null @@ -1,107 +0,0 @@ - /*@@ - @file Startup.c - @date Mon Mar 15 15:48:42 1999 - @author Gerd Lanfermann - @desc - Startup file to register the GHextension and coordinates - @enddesc - @@*/ - -#include "cctk.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/Startup.c,v 1.1 2002/04/03 16:33:29 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_Startup_c) - -void *Symmetry_AllocGHex(tFleshConfig *config, int convlevel, cGH *GH); -int Symmetry_InitGHex(cGH *GH); -int SymmetryStartup(void); -int RegisterCartGrid3DCoords(void); - - /*@@ - @routine SymmetryStartup - @date Mon Mar 15 15:49:16 1999 - @author Gerd Lanfermann - @desc - Routine registers the Setup and Initialation routines for the - GHExtension, which holds the symmetry BCs. We name the - GHextension "Symmetry" and get an integer ("handle") - identifying the GHex. - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -/* Store the handle in a global variable for the moment. */ -int Symmetry_handle; - - -int SymmetryStartup(void) -{ - Symmetry_handle = CCTK_RegisterGHExtension("Symmetry"); - - /* Register the allocation and init routine */ - CCTK_RegisterGHExtensionSetupGH(Symmetry_handle,Symmetry_AllocGHex); - CCTK_RegisterGHExtensionInitGH(Symmetry_handle,Symmetry_InitGHex); - - return 0; -} - - - /*@@ - @routine RegisterCartGrid3DCoords - @date - @author Gabrielle Allen - @desc - Routine registers the coordinates provided by CartGrid3D - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int RegisterCartGrid3DCoords(void) -{ - - int ierr; - int nerrors=0; - - ierr=CCTK_CoordRegisterSystem(3,"cart3d"); - ierr=CCTK_CoordRegisterSystem(3,"spher3d"); - - ierr=CCTK_CoordRegisterData(1,"grid::x","x","cart3d"); - if (ierr<0) - { - CCTK_WARN(1,"Problem with registering coordinate x"); - nerrors--; - } - ierr=CCTK_CoordRegisterData(2,"grid::y","y","cart3d"); - if (ierr<0) - { - CCTK_WARN(1,"Problem with registering coordinate y"); - nerrors--; - } - ierr=CCTK_CoordRegisterData(3,"grid::z","z","cart3d"); - if (ierr<0) - { - CCTK_WARN(1,"Problem with registering coordinate z"); - nerrors--; - } - ierr=CCTK_CoordRegisterData(1,"grid::r","r","spher3d"); - if (ierr<0) - { - CCTK_WARN(1,"Problem with registering coordinate r"); - nerrors--; - } - - return nerrors; -} - - diff --git a/CarpetAttic/CartGrid3D/src/Symmetry.c b/CarpetAttic/CartGrid3D/src/Symmetry.c deleted file mode 100644 index 0c5f6b002..000000000 --- a/CarpetAttic/CartGrid3D/src/Symmetry.c +++ /dev/null @@ -1,224 +0,0 @@ - - /*@@ - @file Symmetry.c - @date Tue Apr 18 14:14:16 2000 - @author Gerd Lanfermann - @desc - Routines to apply the 1/2/3D Symmetries for - all symmetry domains (octant/bitant/quadrant). - @enddesc - @@*/ - -#include <stdio.h> -#include <assert.h> -#include <stdlib.h> -#include <string.h> - -#include "cctk.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/Symmetry.c,v 1.1 2002/04/03 16:33:29 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_Symmetry_c) - -/*#define SYM_DEBUG*/ - -int CartApplySym3Di(cGH *GH, int *doSym, int *cntstag, - int *lssh, int *ghostz, int *sym, CCTK_REAL *var); -int CartApplySym2Di(cGH *GH, int *doSym, int *cntstag, - int *lssh, int *ghostz, int *sym, CCTK_REAL *var); -int CartApplySym1Di(cGH *GH, int *doSym, int *cntstag, - int *lssh, int *ghostz, int *sym, CCTK_REAL *var); - - -/*@@ - @routine CartApplySym3Di - @date Tue Apr 18 14:17:23 2000 - @author Gerd Lanfermann - @desc Apply Symmetry BC to 3D variables - - Variables passed through: - cGH *GH pointer to cGH - int *doSym flags whether to apply a symmetries on a given face - size 2*dim, here we only check for lower faces:0,2,4 - int *cntstag value used when the gridpoints are staggered - around the origin - int *lssh size of the domain, - int *ghostz size of the ghostzone - int *sym symmetry values - CCTK_REAL *var pointer to variable - - index convention: - i ~ x ~ 0 - j ~ y ~ 1 - k ~ z ~ 2 - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - - -int CartApplySym3Di(cGH *GH, int *doSym, int *cntstag, - int *lssh, int *ghostz, int *sym, CCTK_REAL *var) -{ - - int i,j,k; - -#ifdef SYM_DEBUG - printf(" doSym: %d %d / %d %d / %d %d \n", - doSym[0],doSym[1], - doSym[2],doSym[3], - doSym[4],doSym[5]); - printf(" lssh: %d %d %d sym: %d %d %d \n", - lssh[0],lssh[1],lssh[2], sym[0], sym[2], sym[4] ); - printf(" ghostz %d %d %d \n",ghostz[0],ghostz[1],ghostz[2]); - printf(" cntstag: %d %d %d\n",cntstag[0],cntstag[1],cntstag[2]); -#endif - - if (doSym[0] == 1) - { - for(k=0; k < lssh[2]; k++) - { - for(j=0; j < lssh[1]; j++) - { - for(i=0; i < ghostz[0]; i++) - { - var[CCTK_GFINDEX3D(GH,i,j,k)] = - sym[0]*var[CCTK_GFINDEX3D(GH,2*ghostz[0]-cntstag[0]-i,j,k)]; - } - } - } - } - if (doSym[2] == 1) - { - for(i=0; i < lssh[0]; i++) - { - for(k=0; k < lssh[2]; k++) - { - for(j=0; j < ghostz[1]; j++) - { - var[CCTK_GFINDEX3D(GH,i,j,k)] = - sym[2]*var[CCTK_GFINDEX3D(GH,i,2*ghostz[1]-cntstag[1]-j,k)]; - } - } - } - } - if (doSym[4] == 1) - { - for(i=0; i < lssh[0]; i++) - { - for(j=0; j < lssh[1]; j++) - { - for(k=0; k < ghostz[2]; k++) - { - var[CCTK_GFINDEX3D(GH,i,j,k)] = - sym[4]*var[CCTK_GFINDEX3D(GH,i,j,2*ghostz[2]-cntstag[2]-k)]; - } - } - } - } - return(0); -} - - -/*@@ - @routine CartApplySym2Di - @date Tue Apr 18 14:17:23 2000 - @author Gerd Lanfermann - @desc Apply Symmetry BC to 2D variables - - - index convention: - i ~ x ~ 0 - j ~ y ~ 1 - k ~ z ~ 2 - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int CartApplySym2Di(cGH *GH, int *doSym, int *cntstag, - int *lssh, int *ghostz, int *sym, CCTK_REAL *var) -{ - int i,j; - - if (doSym[0] == 1) - { - for(j=0; j < lssh[1]; j++) - { - for(i=0; i < ghostz[0]; i++) - { - var[CCTK_GFINDEX2D(GH,i,j)] = - sym[0]*var[CCTK_GFINDEX2D(GH,2*ghostz[0]-cntstag[0]-i,j)]; - } - } - } - - if (doSym[2] == 1) - { - for(i=0; i < lssh[0]; i++) - { - for(j=0; j < ghostz[1]; j++) - { - var[CCTK_GFINDEX2D(GH,i,j)] = - sym[2]*var[CCTK_GFINDEX2D(GH,i,2*ghostz[1]-cntstag[1]-j)]; - } - } - } - - return(0); -} - - -/*@@ - @routine CartApplySym1Di - @date Tue Apr 18 14:17:23 2000 - @author Gerd Lanfermann - @desc Apply Symmetry BC to 1D variables - - - index convention: - i ~ x ~ 0 - j ~ y ~ 1 - k ~ z ~ 2 - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int CartApplySym1Di(cGH *GH, int *doSym, int *cntstag, - int *lssh, int *ghostz, int *sym, CCTK_REAL *var) -{ - int i; - - - /* avoid compiler warnings about unused parameters */ - GH = GH; - lssh = lssh; - - if (doSym[0] == 1) - { - for(i=0; i < ghostz[0]; i++) - { - var[CCTK_GFINDEX1D(GH,i)] = - sym[0]*var[CCTK_GFINDEX1D(GH,2*ghostz[0]-cntstag[0]-i)]; - } - } - - return(0); -} - diff --git a/CarpetAttic/CartGrid3D/src/Symmetry.h b/CarpetAttic/CartGrid3D/src/Symmetry.h deleted file mode 100644 index ba1bfeb73..000000000 --- a/CarpetAttic/CartGrid3D/src/Symmetry.h +++ /dev/null @@ -1,57 +0,0 @@ -/*@@ - @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 - @history - @endhistory - @version $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/Symmetry.h,v 1.1 2002/04/03 16:33:51 schnetter Exp $ - @@*/ - -#ifndef _SYMMETRY_H_ -#define _SYMMETRY_H_ - -#define GFSYM_UNSET -42 -#define GFSYM_NOSYM -41 - -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 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_ */ diff --git a/CarpetAttic/CartGrid3D/src/SymmetryCondition.c b/CarpetAttic/CartGrid3D/src/SymmetryCondition.c deleted file mode 100644 index e94bbb34b..000000000 --- a/CarpetAttic/CartGrid3D/src/SymmetryCondition.c +++ /dev/null @@ -1,103 +0,0 @@ - /*@@ - @file SymmetryCondition.c - @date Thu Oct 7 16:45:19 1999 - @author Tom Goodale - @desc - C version of Gerd's symmetry stuff. - @enddesc - @@*/ - -#include "cctk.h" - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/SymmetryCondition.c,v 1.1 2002/04/03 16:33:30 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_SymmetryCondition_c) - - -/*@@ - @routine SymmetryCondition - @date Mon Mar 15 15:51:57 1999 - @author Gerd Lanfermann - @desc - Routine performs the symmetry boundary operations. - @enddesc - @calls - @calledby - @history - @hdate Thu Oct 7 16:47:35 1999 @hauthor Tom Goodale - @hdesc Converted to C - @endhistory -@@*/ - - -#define GFINDEX3D(sh,i,j,k) ((i) + sh[0]*((j)+sh[1]*(k))) - -void SymmetryCondition(int nxyz[],CCTK_REAL var[], int nghostzones,int sym[], int doSym[]) -{ - int i,j,k; - - int sw; - - /* - * Apply symmetry if - * * the grid chunk has a physical boundary (bbox) - * * its size in a direction is bigger than one (sh) - * * we actually want a symmetry (sx.ne.ESYM_UNSET) - */ - if (doSym[1] == 1 || doSym[3] == 1 || doSym[5] == 1) - { - CCTKi_NotYetImplemented("Right hand side boundary conditions"); - } - - if (doSym[0] == 1) - { - for(k=0; k < nxyz[2]; k++) - { - for(j=0; j < nxyz[1]; j++) - { - for(sw=0; sw < nghostzones; sw++) - { - var[GFINDEX3D(nxyz,sw,j,k)] = - sym[0]*var[GFINDEX3D(nxyz,2*nghostzones-1-sw,j,k)]; - } - } - } - } - - if (doSym[2] == 1) - { - for(k=0; k < nxyz[2]; k++) - { - for(sw=0; sw < nghostzones; sw++) - { - for(i=0; i < nxyz[0]; i++) - { - var[GFINDEX3D(nxyz,i,sw,k)] = - sym[2]*var[GFINDEX3D(nxyz,i,2*nghostzones-1-sw,k)]; - } - } - } - } - - if (doSym[4] == 1) - { - for(sw=0; sw < nghostzones; sw++) - { - for(j=0; j < nxyz[1]; j++) - { - for(i=0; i < nxyz[0]; i++) - { - var[GFINDEX3D(nxyz,i,j,sw)] = - sym[4]*var[GFINDEX3D(nxyz,i,j,2*nghostzones-1-sw)]; - } - } - } - } - - return; -} - -void CCTK_FNAME(SymmetryCondition)(int nxyz[],CCTK_REAL var[], int *nghostzones,int sym[], int doSym[]) -{ - SymmetryCondition(nxyz, var, *nghostzones, sym, doSym); -} diff --git a/CarpetAttic/CartGrid3D/src/SymmetryWrappers.c b/CarpetAttic/CartGrid3D/src/SymmetryWrappers.c deleted file mode 100644 index cc3f6a690..000000000 --- a/CarpetAttic/CartGrid3D/src/SymmetryWrappers.c +++ /dev/null @@ -1,432 +0,0 @@ - /*@@ - @file SymmetryWrappers.c - @date April 2000 - @author Gerd Lanfermann - @desc - Apply symmetry boundary conditions - @enddesc - @@*/ - -#include <stdlib.h> - -#include "cctk.h" -#include "cctk_Parameters.h" -#include "cctk_FortranString.h" -#include "Symmetry.h" - -void CCTK_FCALL CCTK_FNAME(CartSymGI)(int *ierr, cGH *GH, int *gi); -void CCTK_FCALL CCTK_FNAME(CartSymGN) - (int *ierr, cGH *GH, ONE_FORTSTRING_ARG); -void CCTK_FCALL CCTK_FNAME(CartSymVI)(int *ierr, cGH *GH, int *vi); -void CCTK_FCALL CCTK_FNAME(CartSymVN) - (int *ierr, cGH *GH, ONE_FORTSTRING_ARG); - -int CartApplySym3Di(cGH *GH, - int *doSym, - int *cntstag, - int *lssh, - int *ghostz, - int *sym, - CCTK_REAL *var); - -int CartApplySym2Di(cGH *GH, - int *doSym, - int *cntstag, - int *lssh, - int *ghostz, - int *sym, - CCTK_REAL *var); - -int CartApplySym1Di(cGH *GH, - int *doSym, - int *cntstag, - int *lssh, - int *ghostz, - int *sym, - CCTK_REAL *var); - - -static const char *rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/SymmetryWrappers.c,v 1.1 2002/04/03 16:33:30 schnetter Exp $"; - -CCTK_FILEVERSION(CactusBase_CartGrid3D_SymmetryWrappers_c) - -/*$#define SYM_DEBUG$*/ - - - /*@@ - @routine - @date - @author - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int CartSymGI(cGH *GH, int gi) -{ - DECLARE_CCTK_PARAMETERS - - int numvars, vi, first_vi; - int idim, gdim; - int berr=-1,ierr=-1; - int time; - int *doSym, *dstag, *lssh, *cntstag; - SymmetryGHex *sGHex; - - /* Get out if we are sure no symmetries should be applied */ - /* FIXME: There has to be a better way early bailout! */ - /*$if (CCTK_Equals(domain,"full")) return 0;$*/ - - first_vi = CCTK_FirstVarIndexI(gi); - if (first_vi<0) - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "CartSymGI: Cannot find group %d (%s)",gi,CCTK_GroupName(gi)); - return(-1); - } - - numvars = CCTK_NumVarsInGroupI(gi); - gdim = CCTK_GroupDimI(gi); - - - sGHex = (SymmetryGHex*)GH->extensions[CCTK_GHExtensionHandle("Symmetry")]; - doSym = (int *)malloc((2*gdim)*sizeof(int)); - dstag = (int *)malloc(gdim*sizeof(int)); - lssh = (int *)malloc(gdim*sizeof(int)); - cntstag= (int *)malloc(gdim*sizeof(int)); - - /* get the directional staggering of the group */ - ierr = CCTK_GroupStaggerDirArrayGI(dstag, gdim, gi); - - /* Set value to one if grid is staggered around the center */ - - /* Avoid origin? Default is yes */ - cntstag[0] = no_origin && no_originx && avoid_origin && avoid_originx; - cntstag[1] = no_origin && no_originy && avoid_origin && avoid_originy; - cntstag[2] = no_origin && no_originz && avoid_origin && avoid_originz; - - /* Use next time level, if present */ - time = 0; - /*if (time < 0) - { - time = 0; - }*/ - - for (vi=first_vi; vi<first_vi+numvars; vi++) - { - /* Apply Symmetries to lower sides [0,2,4,...] if: - + if the Symmetry is activated (== NOT NOSYM) - + if the Symmetry is set (== NOT UNSET) - + if the length in the direction is more than 1 grid point - + if the processor has a lower physical boundary. - Whether a grid allows a symmetry along a direction (e.g. octant=all) - is part if the Symmetry Setup process. - - No Symmetries for "upper" sides : [1,3,5,...] - */ - for (idim=0; idim<gdim; idim++) - { - if ((sGHex->GFSym[vi][idim*2] == GFSYM_UNSET)) - { - CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, - "Symmetries unspecified for %s",CCTK_FullName(vi)); - } - - lssh[idim] = GH->cctk_lssh[CCTK_LSSH_IDX(dstag[idim],idim)]; - - doSym[idim*2] = (((sGHex->GFSym[vi][idim*2]!=GFSYM_NOSYM) && - (sGHex->GFSym[vi][idim*2]!=GFSYM_UNSET)) && - lssh[idim]>1 && GH->cctk_bbox[idim*2]==1); - doSym[idim*2+1] = 0; - - } - -#ifdef SYM_DEBUG - printf(" DOSYM: %s [%d,%d] [%d,%d] [%d,%d] --- %d %d %d \n", - CCTK_VarName(vi), - doSym[0],doSym[1], - doSym[2],doSym[3], - doSym[4],doSym[5], - sGHex->GFSym[vi][0], - sGHex->GFSym[vi][2], - sGHex->GFSym[vi][4]); -#endif - - switch (gdim) - { - case 1: berr = CartApplySym1Di(GH, - doSym, - cntstag, - lssh, - GH->cctk_nghostzones, - sGHex->GFSym[vi], - GH->data[vi][time]); break; - case 2: berr = CartApplySym2Di(GH, - doSym, - cntstag, - lssh, - GH->cctk_nghostzones, - sGHex->GFSym[vi], - GH->data[vi][time]); break; - case 3: berr = CartApplySym3Di(GH, - doSym, - cntstag, - lssh, - GH->cctk_nghostzones, - sGHex->GFSym[vi], - GH->data[vi][time]); break; - default: berr = -1; CCTK_WARN(1, "No Symmetries for GF of dim>3"); - } - berr=(berr>-1)?0:-1; - } - - free(dstag); - free(doSym); - free(lssh); - free(cntstag); - - return(ierr); -} - -void CCTK_FCALL CCTK_FNAME(CartSymGI)(int *ierr, cGH *GH, int *gi) -{ - *ierr = CartSymGI(GH,*gi); - return; -} - - - - /*@@ - @routine - @date - @author - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int CartSymGN(cGH *GH, const char *gn) -{ - int gi=CCTK_GroupIndex(gn); - int retval=-1; - if (gi>-1) - { - retval = CartSymGI(GH,gi); - } - else - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "CartSymGN: Cannot find group %s",gn); - } - return retval; -} - -void CCTK_FCALL CCTK_FNAME(CartSymGN) - (int *ierr, cGH *GH, ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(gn) - *ierr = CartSymGN(GH,gn); - free(gn); - return; -} - - - /*@@ - @routine - @date - @author - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int CartSymVI(cGH *GH, int vi) -{ - DECLARE_CCTK_PARAMETERS - - int gi; - int idim, gdim; - int berr=-1; - int time; - int *doSym, *dstag, *lssh, *cntstag; - SymmetryGHex *sGHex; - - /* Get out if we are sure no symmetries should be applied */ - /* FIXME: There has to be a better way early bailout! */ - if (CCTK_Equals(domain,"full")) return 0; - - /* get the dimension/directional staggering of the - group that vi belongs to */ - gi = CCTK_GroupIndexFromVarI(vi); - if (gi<0) - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "Cannot find variable index %d (%s) in CartSymVI", - vi,CCTK_FullName(vi)); - return(-1); - } - - gdim = CCTK_GroupDimI(gi); - - sGHex = (SymmetryGHex*)GH->extensions[CCTK_GHExtensionHandle("Symmetry")]; - doSym = (int *)malloc((2*gdim)*sizeof(int)); - dstag = (int *)malloc(gdim*sizeof(int)); - lssh = (int *)malloc(gdim*sizeof(int)); - cntstag= (int *)malloc(gdim*sizeof(int)); - - /* get the directional staggering of the group */ - berr = CCTK_GroupStaggerDirArrayGI(dstag, gdim, gi); - - /* Avoid origin? Default is yes */ - cntstag[0] = no_origin && no_originx && avoid_origin && avoid_originx; - cntstag[1] = no_origin && no_originy && avoid_origin && avoid_originy; - cntstag[2] = no_origin && no_originz && avoid_origin && avoid_originz; - - /* Use next time level, if present */ - time = 0; - /* if (time < 0) - { - time = 0; - }*/ - - - /* Apply Symmetries to lower sides [0,2,4] if: - + if the Symmetry is activated (== NOT NOSYM) - + if the Symmetry is set (== NOT UNSET) - + if the length in the direction is more than 1 grid point - + if the processor has a lower physical boundary. - Whether a grid allows a symmetry along a direction (e.g. octant=all) - is part if the Symmetry Setup process. - - No Symmetries for "upper" sides : [1,3,5] - */ - for (idim=0; idim<gdim; idim++) - { - if (sGHex->GFSym[vi][idim*2]==GFSYM_UNSET) - { - CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, - "Symmetries unspecified for %s", CCTK_FullName(vi)); - } - - lssh[idim] = GH->cctk_lssh[CCTK_LSSH_IDX(dstag[idim],idim)]; - - doSym[idim*2] = (((sGHex->GFSym[vi][idim*2]!=GFSYM_NOSYM) && - (sGHex->GFSym[vi][idim*2]!=GFSYM_UNSET)) && - lssh[idim]>1 && GH->cctk_bbox[idim*2]); - doSym[idim*2+1] = 0; - } - -#ifdef SYM_DEBUG - printf(" DOSYM: %s [%d,%d] [%d,%d] [%d,%d] --- %d %d %d \n", - CCTK_VarName(vi), - doSym[0],doSym[1], - doSym[2],doSym[3], - doSym[4],doSym[5], - sGHex->GFSym[vi][0], - sGHex->GFSym[vi][2], - sGHex->GFSym[vi][4]); -#endif - - - - switch (gdim) - { - case 1: berr = CartApplySym1Di(GH, - doSym, - cntstag, - lssh, - GH->cctk_nghostzones, - sGHex->GFSym[vi], - GH->data[vi][time]); break; - case 2: berr = CartApplySym2Di(GH, - doSym, - cntstag, - lssh, - GH->cctk_nghostzones, - sGHex->GFSym[vi], - GH->data[vi][time]); break; - case 3: berr = CartApplySym3Di(GH, - doSym, - cntstag, - lssh, - GH->cctk_nghostzones, - sGHex->GFSym[vi], - GH->data[vi][time]); break; - default: berr = -1; CCTK_WARN(1, "No Symmetries for GF dim>3"); - } - - free(lssh); - free(dstag); - free(doSym); - free(cntstag); - - return(berr); -} - -void CCTK_FCALL CCTK_FNAME(CartSymVI)(int *ierr, cGH *GH, int *vi) -{ - *ierr = CartSymVI(GH, *vi); - return; -} - - - - /*@@ - @routine - @date - @author - @desc - - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ - -int CartSymVN(cGH *GH, const char *vn) -{ - int retval=-1; - int vi=CCTK_VarIndex(vn); - - if (vi>-1) - { - retval = CartSymVI(GH, vi); - } - else - { - CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, - "Cannot find variable %s in CartSymVN",vn); - } - return retval; -} - -void CCTK_FCALL CCTK_FNAME(CartSymVN) - (int *ierr, cGH *GH, ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(vn) - *ierr = CartSymVN(GH,vn); - free(vn); - return; -} - diff --git a/CarpetAttic/CartGrid3D/src/make.code.defn b/CarpetAttic/CartGrid3D/src/make.code.defn deleted file mode 100644 index 3ee0bb482..000000000 --- a/CarpetAttic/CartGrid3D/src/make.code.defn +++ /dev/null @@ -1,17 +0,0 @@ -# Main make.code.defn file for thorn CartGrid3D -# $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CartGrid3D/src/Attic/make.code.defn,v 1.1 2002/04/03 16:33:30 schnetter Exp $ - -# Source files in this directory -SRCS = DecodeSymParameters.c\ - CartGrid3D.c\ - GHExtension.c\ - ParamCheck.c\ - Startup.c\ - SetSymmetry.c\ - Symmetry.c\ - SymmetryWrappers.c - - -# Subdirectories containing source files -SUBDIRS = - |