diff options
author | tradke <tradke@6a38eb6e-646e-4a02-a296-d141613ad6c4> | 2001-04-14 17:40:57 +0000 |
---|---|---|
committer | tradke <tradke@6a38eb6e-646e-4a02-a296-d141613ad6c4> | 2001-04-14 17:40:57 +0000 |
commit | e3a1be2809877922fdec91cc3e2d3bf1f06a9eb6 (patch) | |
tree | a60f4dc7f504918cfbfe8e886553674f77d82e8d /src | |
parent | fdf3ae56f451e6f563ba4d2048413907a05bfb66 (diff) |
This code went into RobinBoundary.c.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/Boundary/trunk@138 6a38eb6e-646e-4a02-a296-d141613ad6c4
Diffstat (limited to 'src')
-rw-r--r-- | src/RobinBoundaryWrappers.c | 440 |
1 files changed, 0 insertions, 440 deletions
diff --git a/src/RobinBoundaryWrappers.c b/src/RobinBoundaryWrappers.c deleted file mode 100644 index 4bc2c99..0000000 --- a/src/RobinBoundaryWrappers.c +++ /dev/null @@ -1,440 +0,0 @@ - /*@@ - @file RobinBoundary.c - @date July 6th 2000 - @author Gabrielle Allen, Gerd Lanfermann - @desc - Routines for Robin boundary conditions boundary conditions - @enddesc - @@*/ - - -#include <stdio.h> -#include <assert.h> -#include <stdlib.h> -#include <ctype.h> -#include <stdarg.h> -#include <string.h> - -#include "cctk.h" -#include "cctk_Parameters.h" -#include "cctk_FortranString.h" - -#include "BoundarySymmetries.h" - -int BndApplyRobin3Di(cGH *GH, - int *sw, - int *doBC, - int *lsh, - CCTK_REAL *var, - CCTK_REAL *r, - CCTK_REAL finf, - int npow); - -int ApplyBndRobin(cGH *GH, - int *sw, - CCTK_REAL finf, - int npow, - int first_var, - int num_vars); - -int BndRobinGI(cGH *GH, - int *stencil, - CCTK_REAL finf, - int npow, - int gi); - -int BndRobinGN(cGH *GH, - int *sw, - CCTK_REAL finf, - int npow, - const char *gn); - -int BndRobinVI(cGH *GH, - int *stencil, - CCTK_REAL finf, - int npow, - int vi); - -int BndRobinVN(cGH *GH, - int *stencil, - CCTK_REAL finf, - int npow, - const char *vn); - - -/******************************************************************** - ******************** External Routines ************************ - ********************************************************************/ - -/*@@ - @routine BndRobinGI - @date Tue Jul 18 18:08:28 2000 - @author Gerd Lanfermann - @desc - Apply Robin boundary condition by group index - @enddesc - @calls - @calledby - @history - @endhistory -@@*/ - -int BndRobinGI(cGH *GH, - int *stencil, - CCTK_REAL finf, - int npow, - int gi) -{ - int numvars, first_vi; - - first_vi = CCTK_FirstVarIndexI(gi); - numvars = CCTK_NumVarsInGroupI(gi); - - return ApplyBndRobin(GH,stencil,finf,npow,first_vi,numvars); -} - -void CCTK_FCALL CCTK_FNAME(BndRobinGI) - (int *ierr, cGH *GH, int *stencil, - CCTK_REAL *finf, int *npow, int *gi) -{ - *ierr = BndRobinGI(GH,stencil, *finf, *npow, *gi); - return; -} - -/*@@ - @routine BndRobinGI - @date Tue Jul 18 18:08:28 2000 - @author Gerd Lanfermann - @desc - Apply Robin boundary condition by group mame - @enddesc - @calls - @calledby - @history - @endhistory -@@*/ - -int BndRobinGN(cGH *GH, - int *sw, - CCTK_REAL finf, - int npow, - const char *gn) -{ - int retval; - int gi; - gi = CCTK_GroupIndex(gn); - - if (gi>-1) - { - retval=BndRobinGI(GH, sw, finf, npow, gi); - } - else - { - CCTK_VWarn(1,__LINE__,__FILE__,"Boundary", - "BndFlatGN: Grid variable %s not found",gn); - retval=-1; - } - return retval; -} - -void CCTK_FCALL CCTK_FNAME(BndRobinGN) - (int *ierr, cGH *GH, int *stencil, - CCTK_REAL *finf, int *npow, ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(gn) - *ierr = BndRobinVN(GH, stencil, *finf, *npow, gn); - free(gn); - return; -} - - -/*@@ - @routine BndRobinGI - @date Tue Jul 18 18:08:28 2000 - @author Gerd Lanfermann - @desc - Apply Robin boundary condition by variable index - @enddesc - @calls - @calledby - @history - @endhistory -@@*/ - -int BndRobinVI(cGH *GH, - int *stencil, - CCTK_REAL finf, - int npow, - int vi) -{ - return(ApplyBndRobin(GH, stencil, finf, npow, vi, 1)); -} - -void CCTK_FCALL CCTK_FNAME(BndRobinVI) - (int *ierr, cGH *GH, int *stencil, - CCTK_REAL *finf, int *npow, int *vi) -{ - *ierr = BndRobinVI(GH, stencil, *finf, *npow, *vi); - return; -} - - -/*@@ - @routine BndRobinGI - @date Tue Jul 18 18:08:28 2000 - @author Gerd Lanfermann - @desc - Apply Robin boundary condition by variable index - @enddesc - @calls - @calledby - @history - @endhistory -@@*/ - -int BndRobinVN(cGH *GH, - int *stencil, - CCTK_REAL finf, - int npow, - const char *vn) -{ - int vi; - int retval; - - vi = CCTK_VarIndex(vn); - if (vi>-1) - { - retval = BndRobinVI(GH, stencil, finf, npow, vi); - } - else - { - retval = -1; - CCTK_VWarn(1,__LINE__,__FILE__,"Boundary", - "BndRobinVN: Grid variable %s not found",vn); - } - return retval; -} - -void CCTK_FCALL CCTK_FNAME(BndRobinVN) - (int *ierr, cGH *GH, int *stencil, - CCTK_REAL *finf, int *npow, ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(vn) - *ierr = BndRobinVN(GH, stencil, *finf, *npow, vn); - free(vn); - return; -} - -/******************************************************************** - ********************* Local Routines ************************* - ********************************************************************/ - -/*@@ - @routine ApplyBndRobin - @date Tue Jul 18 18:08:28 2000 - @author Gerd Lanfermann - @desc - Apply Robin boundary condition - internal routine - @enddesc - @calls - @calledby - @history - @endhistory -@@*/ - -int ApplyBndRobin(cGH *GH, - int *sw, - CCTK_REAL finf, - int npow, - int first_var, - int num_vars) -{ - - SymmetryGHex *sGHex; - int symmetry_handle; /* handle for the optional symmetry structure */ - int *doBC; /* lower/upper BCs applied (1) not applied (0) */ - /* indexing as in bbox: 0 xlow, 1 xup, 2 ylow */ - int timelevel; /* timelevel that condition applied on */ - int ri; /* index of the radial coordinate field */ - int vi, dim, idim; - int berr=0; - - /* See if we have a symmetry array */ - symmetry_handle = CCTK_GHExtensionHandle("Symmetry"); - if (symmetry_handle < 0) - { - sGHex = NULL; - } - else - { - sGHex = (SymmetryGHex*)GH->extensions[symmetry_handle]; - } - - /* Get group dimension */ - dim = CCTK_GroupDimFromVarI(first_var); - - /* allocate arrays */ - doBC = (int *)malloc((2*dim)*sizeof(int)); - - /* get the current timelevel */ - timelevel = CCTK_NumTimeLevelsFromVarI (first_var) - 1; - /* if (timelevel > 0) - timelevel--;*/ - - /* Apply boundary condition if - - grid boundary are not symmetries - - have a physical boundary - - have enough gridpoints - */ - for (vi=first_var; vi<first_var+num_vars; vi++) - { - if (sGHex) - { - for (idim=0;idim<dim;idim++) - { - doBC[idim*2] = (((sGHex->GFSym[vi][idim*2]==GFSYM_NOSYM)|| - (sGHex->GFSym[vi][idim*2]==GFSYM_UNSET)) && - GH->cctk_lsh[idim]>1 && GH->cctk_bbox[idim*2]); - doBC[idim*2+1] = (((sGHex->GFSym[vi][idim*2+1]==GFSYM_NOSYM)|| - (sGHex->GFSym[vi][idim*2+1]==GFSYM_UNSET)) && - GH->cctk_lsh[idim]>1 && GH->cctk_bbox[idim*2+1]); - } - } - else - { - for (idim=0;idim<dim;idim++) - { - doBC[idim*2] = (GH->cctk_lsh[idim]>1 && GH->cctk_bbox[idim*2]); - doBC[idim*2+1] = (GH->cctk_lsh[idim]>1 && GH->cctk_bbox[idim*2+1]); - } - } - - switch(dim) - { - case 3:/* Robin boundaries need radial coordinate */ - ri = CCTK_CoordIndex(-1,"r","spher3d"); - berr = BndApplyRobin3Di(GH, - sw, - doBC, - GH->cctk_lsh, - GH->data[vi][timelevel], - GH->data[ri][0], - finf, - npow); break; - default: - berr = -1; CCTK_VWarn(1,__LINE__,__FILE__,"Boundary", - "ApplyBndRobin: No Robin BC for Grid variables with dim.NE.3: %s", - CCTK_VarName(vi)); - } - berr = (berr>-1) ? 0 : -1; - } - - free(doBC); - - return (berr); -} - -/******************************************************************** - ********************* DEPRECATED: Beta 8 ********************** - ********************************************************************/ - -int RobinBCVarI(cGH *GH, CCTK_REAL finf, int npow, int *sw, int vi) -{ - CCTK_WARN(1,"RobinBCVarI going to be deprecated\n"); - return(BndRobinVI(GH,sw,finf,npow,vi)); -} - - -void CCTK_FCALL CCTK_FNAME(RobinBCVarI)(int *ierr, - cGH *GH, - CCTK_REAL *finf, - int *npow, - int *sw, - int *vi) -{ - *ierr = RobinBCVarI(GH, *finf, *npow, sw, *vi); -} - -int RobinBCVar(cGH *GH, - CCTK_REAL finf, - int npow, - int *sw, - const char *vn) -{ - int vi; - - vi = CCTK_VarIndex(vn); - return(RobinBCVarI(GH, finf, npow, sw, vi)); -} - -void CCTK_FCALL CCTK_FNAME(RobinBCVar)(int *ierr, - cGH *GH, - CCTK_REAL *finf, - int *npow, - int *sw, - ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(vn); - *ierr = RobinBCVar(GH, *finf, *npow, sw, vn); - free(vn); -} - - -int RobinBCGroupI(cGH *GH, - CCTK_REAL finf, - int npow, - int *sw, - int gi) -{ - int firstVarI, numVar, vi; - int retval = 0, rettmp = 0; - - firstVarI = CCTK_FirstVarIndexI(gi); - numVar = CCTK_NumVarsInGroupI(gi); - for (vi=0;vi<numVar;vi++) - { - rettmp = RobinBCVarI(GH, finf, npow, sw, firstVarI+vi); - if (rettmp!=0) CCTK_VWarn(1,__LINE__,__FILE__,"Boundary", - "Failed to apply Robin BC for GF : %s", - CCTK_VarName(vi)); - retval = retval || rettmp; - } - return(retval); -} - -void CCTK_FCALL CCTK_FNAME(RobinBCGroupI)(int *ierr, - cGH *GH, - CCTK_REAL *finf, - int *npow, - int *sw, - int *gi) -{ - *ierr = RobinBCGroupI(GH,*finf,*npow, sw, *gi); -} - - -int RobinBCGroup(cGH *GH, - CCTK_REAL finf, - int npow, - int *sw, - const char *impgrpname) -{ - int gi; - gi = CCTK_GroupIndex(impgrpname); - - return(RobinBCGroupI(GH, finf, npow, sw, gi)); -} - -void CCTK_FCALL CCTK_FNAME(RobinBCGroup)(int *ierr, - cGH *GH, - CCTK_REAL *finf, - int *npow, - int *sw, - ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(gn); - *ierr = RobinBCGroup(GH, *finf, *npow, sw, gn); - free(gn); -} - - |