aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorschnetter <schnetter@f69c4107-0314-4c4f-9ad4-17e986b73f4a>2006-10-05 05:48:46 +0000
committerschnetter <schnetter@f69c4107-0314-4c4f-9ad4-17e986b73f4a>2006-10-05 05:48:46 +0000
commit249587a578563cb27f5b23fa6044b3ac603612e0 (patch)
treeb3a6e12ee5ad083f18d20c8d088b707b17b5b9bf /src
parent5ae57c39d83cdabb15b1238a6c142d6f7f8a4456 (diff)
Call SBP_determine_onesided_stencil instead of determining the
boundary type independently. This may correct an error on multiple processors. git-svn-id: https://svn.cct.lsu.edu/repos/numrel/LSUThorns/SummationByParts/trunk@78 f69c4107-0314-4c4f-9ad4-17e986b73f4a
Diffstat (limited to 'src')
-rw-r--r--src/set_norm_mask.F9041
1 files changed, 15 insertions, 26 deletions
diff --git a/src/set_norm_mask.F90 b/src/set_norm_mask.F90
index 40bae3e..3c892f0 100644
--- a/src/set_norm_mask.F90
+++ b/src/set_norm_mask.F90
@@ -15,8 +15,8 @@ subroutine SBP_SetNormMask (CCTK_ARGUMENTS)
CCTK_REAL, parameter :: zero = 0.0
integer, parameter :: wp = kind(zero)
- CCTK_INT :: symtable, n_elements, nchar, pen_sym_handle, np
- CCTK_INT, dimension(6) :: symbnd
+ integer :: onesided(6)
+ CCTK_INT :: np
CCTK_REAL, dimension(:), allocatable :: mask_x, mask_y, mask_z
! Note: The first number is twice the value from the paper, since Carpet
@@ -47,13 +47,10 @@ subroutine SBP_SetNormMask (CCTK_ARGUMENTS)
ni = cctk_lsh(1); nj = cctk_lsh(2); nk = cctk_lsh(3)
- symtable = SymmetryTableHandleForGrid ( cctkGH )
- call Util_TableGetIntArray ( n_elements, symtable, 6, &
- symbnd, 'symmetry_handle' )
-
- pen_sym_handle = SymmetryHandleOfName ( 'multipatch' )
+ call SBP_determine_onesided_stencil (cctkGH, onesided)
+
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. any ( symbnd == pen_sym_handle )) ) then
+ if (any (onesided/=0)) then
allocate ( mask_x(ni), mask_y(nj), mask_z(nk) )
mask_x = 1.0d0; mask_y = 1.0d0; mask_z = 1.0d0
@@ -67,6 +64,8 @@ subroutine SBP_SetNormMask (CCTK_ARGUMENTS)
bmask(1:6) = bmask_6
case(8)
bmask(1:8) = bmask_8
+ case default
+ call CCTK_WARN (0, "Unknown stencil specified")
end select
np = order
else
@@ -74,27 +73,17 @@ subroutine SBP_SetNormMask (CCTK_ARGUMENTS)
case (4,6)
bmask(1:3) = bmask_3
np = 3
+ case default
+ call CCTK_WARN (0, "Unknown stencil specified")
end select
end if
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. symbnd(1) == pen_sym_handle) ) then
- mask_x(1:np) = bmask(1:np)
- end if
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. symbnd(2) == pen_sym_handle) ) then
- mask_x(ni:ni-np+1:-1) = bmask(1:np)
- end if
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. symbnd(3) == pen_sym_handle) ) then
- mask_y(1:np) = bmask(1:np)
- end if
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. symbnd(4) == pen_sym_handle) ) then
- mask_y(nj:nj-np+1:-1) = bmask(1:np)
- end if
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. symbnd(5) == pen_sym_handle) ) then
- mask_z(1:np) = bmask(1:np)
- end if
- if ( pen_sym_handle < 0 .or. (pen_sym_handle >= 0 .and. symbnd(6) == pen_sym_handle) ) then
- mask_z(nk:nk-np+1:-1) = bmask(1:np)
- end if
+ if (onesided(1)/=0) mask_x(1:np) = bmask(1:np)
+ if (onesided(2)/=0) mask_x(ni:ni-np+1:-1) = bmask(1:np)
+ if (onesided(3)/=0) mask_y(1:np) = bmask(1:np)
+ if (onesided(4)/=0) mask_y(nj:nj-np+1:-1) = bmask(1:np)
+ if (onesided(5)/=0) mask_z(1:np) = bmask(1:np)
+ if (onesided(6)/=0) mask_z(nk:nk-np+1:-1) = bmask(1:np)
nmask = outer_prod_3d ( mask_x, mask_y, mask_z )
else