diff options
Diffstat (limited to 'src/RadiationBoundary.c')
-rw-r--r-- | src/RadiationBoundary.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/RadiationBoundary.c b/src/RadiationBoundary.c index 47944d1..49fc1ef 100644 --- a/src/RadiationBoundary.c +++ b/src/RadiationBoundary.c @@ -74,7 +74,6 @@ #include "cctk_FortranString.h" #include "cctk_Parameters.h" -#include "Symmetry.h" #include "Boundary.h" /* #define DEBUG */ @@ -1477,11 +1476,14 @@ static int ApplyBndRadiative (const cGH *GH, int i, gdim, indx; int var_to, var_from; int timelvl_from; - SymmetryGHex *sGHex; char coord_system_name[10]; CCTK_REAL dxyz[MAXDIM], rho[MAXDIM]; const CCTK_REAL *xyzr[MAXDIM+1]; int doBC[2*MAXDIM], widths[2*MAXDIM], offset[MAXDIM]; + CCTK_INT symtable; + CCTK_INT symbnd[2*MAXDIM]; + CCTK_INT is_physical[2*MAXDIM]; + CCTK_INT ierr; CCTK_REAL dtv, dtvh, dtvvar0, dtvvar0H; void *to_ptr; const void *from_ptr; @@ -1573,8 +1575,15 @@ static int ApplyBndRadiative (const cGH *GH, xyzr[MAXDIM] = GH->data[indx][0]; - /* see if we have a symmetry array */ - sGHex = CCTK_GHExtension (GH, "Symmetry"); + /* see if we have a physical boundary */ + symtable = SymmetryTableHandleForGrid (GH); + if (symtable < 0) CCTK_WARN (0, "internal error"); + ierr = Util_TableGetIntArray (symtable, 2 * gdim, symbnd, "symmetry_handle"); + if (ierr != 2 * gdim) CCTK_WARN (0, "internal error"); + for (i = 0; i < 2 * gdim; i++) + { + is_physical[i] = symbnd[i] < 0; + } /* now loop over all variables */ for (var_to = first_var_to, var_from = first_var_from; @@ -1585,19 +1594,13 @@ static int ApplyBndRadiative (const cGH *GH, from_ptr = GH->data[var_from][timelvl_from]; /* Apply condition if: - + boundary is not a symmetry boundary - (no symmetry or unset(=unsed)) + boundary is a physical boundary + + boundary is an outer boundary + have enough grid points */ - memset (doBC, 1, sizeof (doBC)); - if (sGHex) + for (i = 0; i < 2 * MAXDIM; i++) { - for (i = 0; i < 2 * MAXDIM; i++) - { - doBC[i] = sGHex->GFSym[var_to][i] == GFSYM_NOSYM || - sGHex->GFSym[var_to][i] == GFSYM_UNSET; - } + doBC[i] = is_physical[i]; } for (i = 0; i < MAXDIM; i++) { |