diff options
author | schnetter <schnetter@f69c4107-0314-4c4f-9ad4-17e986b73f4a> | 2006-10-05 05:48:46 +0000 |
---|---|---|
committer | schnetter <schnetter@f69c4107-0314-4c4f-9ad4-17e986b73f4a> | 2006-10-05 05:48:46 +0000 |
commit | 249587a578563cb27f5b23fa6044b3ac603612e0 (patch) | |
tree | b3a6e12ee5ad083f18d20c8d088b707b17b5b9bf | |
parent | 5ae57c39d83cdabb15b1238a6c142d6f7f8a4456 (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
-rw-r--r-- | src/set_norm_mask.F90 | 41 |
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 |