diff options
author | allen <allen@c78560ca-4b45-4335-b268-5f3340f3cb52> | 1999-09-27 17:02:43 +0000 |
---|---|---|
committer | allen <allen@c78560ca-4b45-4335-b268-5f3340f3cb52> | 1999-09-27 17:02:43 +0000 |
commit | 1bd138bb37a1ef2107603ced1f2f7943fb0933d2 (patch) | |
tree | 4a171e54c64d2916dd306873d5f8ffbdaf49d3b8 | |
parent | 9628fc9f2662c1da20fff57ee3f94db58cc1ca0e (diff) |
Updated function names
git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/CartGrid3D/trunk@59 c78560ca-4b45-4335-b268-5f3340f3cb52
-rw-r--r-- | src/Symmetry.c | 141 |
1 files changed, 124 insertions, 17 deletions
diff --git a/src/Symmetry.c b/src/Symmetry.c index 4fcb559..182dd63 100644 --- a/src/Symmetry.c +++ b/src/Symmetry.c @@ -144,14 +144,16 @@ void FMODIFIER FORTRAN_NAME(SetCartSymmetry)(cGH *GH, int *sym, ONE_FORTSTRING_ @@*/ -void ApplySymmetry(cGH *GH, char *name) { + + + +int CartSymBCGroupI(cGH *GH, int groupnum) { void FORTRAN_NAME(SymmetryCondition)(int *, CCTK_REAL *, int *, int *, int *); DECLARE_CCTK_PARAMETERS SymmetryGHex *sGHex; - int groupnum; int first,last,index,j; int doSym[6]; @@ -161,18 +163,12 @@ void ApplySymmetry(cGH *GH, char *name) { /* Get the pointer to the Symmetry GH extension */ sGHex = (SymmetryGHex*)GH->extensions[CCTK_GHExtensionHandle("Symmetry")]; -#ifdef DEBUG_BOUND - printf("\n In ApplySymmetry\n -----------\n"); - printf(" Applying boundary conditions to -%s-\n",name); -#endif - /* Get the group number */ - groupnum = CCTK_GroupIndex(name); if (groupnum < 0) { char *message=NULL; - message = (char *)malloc(300*sizeof(char)+sizeof(name)); - sprintf(message,"Invalid group number decomposing %s",name); + message = (char *)malloc(300*sizeof(char)); + sprintf(message,"Invalid group number %d",groupnum); CCTK_WARN(0,message); free(message); } @@ -193,8 +189,8 @@ void ApplySymmetry(cGH *GH, char *name) { (sGHex->GFSym[index][2]==GFSYM_UNSET)|| (sGHex->GFSym[index][4]==GFSYM_UNSET)) { char *message=NULL; - message = (char *)malloc(300*sizeof(char)+sizeof(name)); - sprintf(message,"Cannot apply symmetry to -%s- without registered symmetries",name); + message = (char *)malloc(300*sizeof(char)); + sprintf(message,"Cannot apply symmetry to -%d- without registered symmetries",index); CCTK_WARN(1,message); free(message); } @@ -230,20 +226,131 @@ void ApplySymmetry(cGH *GH, char *name) { } -void FMODIFIER FORTRAN_NAME(ApplySymmetry)(cGH *GH, ONE_FORTSTRING_ARG) { - ONE_FORTSTRING_CREATE(name) + + +int CartSymBCVarI(cGH *GH, int varnum) { + + void FORTRAN_NAME(SymmetryCondition)(int *, CCTK_REAL *, int *, int *, int *); - ApplySymmetry(GH,name); + DECLARE_CCTK_PARAMETERS + + SymmetryGHex *sGHex; + int index,j; + int doSym[6]; + + /* Get out if we are sure no symmetries should be applied */ + if (CCTK_Equals(domain,"full")) return; + + /* Get the pointer to the Symmetry GH extension */ + sGHex = (SymmetryGHex*)GH->extensions[CCTK_GHExtensionHandle("Symmetry")]; + + /* and check that we actually have a grid function (and not a scalar)*/ + if (CCTK_GroupTypeFromVarI(index) == GROUP_GF) { + + /*at this point, there should be NO ESYM_UNSET anymore + if there is, we forgot to register the symmetries for a GF */ + if ((sGHex->GFSym[varnum][0]==GFSYM_UNSET)|| + (sGHex->GFSym[varnum][2]==GFSYM_UNSET)|| + (sGHex->GFSym[varnum][4]==GFSYM_UNSET)) { + char *message=NULL; + message = (char *)malloc(300*sizeof(char)); + sprintf(message,"Cannot apply symmetry to -%d- without registered symmetries",varnum); + CCTK_WARN(1,message); + free(message); + } + + /* whether we want to apply sym depends on several things: */ + for (j=0;j<3;j++) + { + doSym[2*j+1]=0; + if ( (GH->cctk_lsh[j]>1) && (GH->cctk_bbox[2*j]==1) && + (sGHex->GFSym[varnum][2*j] != GFSYM_UNSET) && + (sGHex->GFSym[varnum][2*j] != GFSYM_NOSYM) + ) + doSym[2*j] = 1; + else + doSym[2*j] = 0; + } + /* Call the Fortran Symmetry Routine */ + FORTRAN_NAME(SymmetryCondition)( + GH->cctk_lsh, + /* xyz-size of PE local grid */ + GH->data[varnum][0], + /* pointer to start of data array for GF[varnum]*/ + GH->cctk_nghostzones, + /* number of ghost zones */ + sGHex->GFSym[varnum], + /* the symmetries for this GF */ + doSym + /* flags whether to apply syms */ + ); + } +} + + +int CartSymBCVar(cGH *GH, char *name) +{ + + int index; + index = CCTK_VarIndex(name); + CartSymBCVarI(GH,index); + return 0; + +} + +int CartSymBCGroup(cGH *GH, char *name) +{ + + int index; + int retval; + index = CCTK_GroupIndex(name); + retval = CartSymBCGroupI(GH,index); + return retval; + +} + +void FMODIFIER FORTRAN_NAME(CartSymBCVar)(int *ierr, cGH *GH, ONE_FORTSTRING_ARG) +{ + + ONE_FORTSTRING_CREATE(name) + *ierr = CartSymBCVar(GH,name); + free(name); +} + +void FMODIFIER FORTRAN_NAME(CartSymBCGroup)(int *ierr, cGH *GH, ONE_FORTSTRING_ARG) +{ + + ONE_FORTSTRING_CREATE(name) + *ierr = CartSymBCGroup(GH,name); + free(name); +} + +void FMODIFIER FORTRAN_NAME(ApplySymmetry)(cGH *GH, ONE_FORTSTRING_ARG) +{ + + ONE_FORTSTRING_CREATE(name) + CartSymBCGroup(GH,name); free(name); } -void FMODIFIER FORTRAN_NAME(ApplySymmetryVarI)(cGH *GH, int *vi) { - ApplySymmetry(GH, CCTK_GroupNameFromVarI(*vi)); +void FMODIFIER FORTRAN_NAME(CartSymBCVarI)(int *ierr, cGH *GH, int *index) +{ + *ierr = CartSymBCVarI(GH,*index); +} + +void FMODIFIER FORTRAN_NAME(CartSymBCGRoupI)(int *ierr, cGH *GH, int *index) +{ + *ierr = CartSymBCGroupI(GH,*index); } + + + + + |