diff options
Diffstat (limited to 'src/GetScalProdDiag.F90')
-rw-r--r-- | src/GetScalProdDiag.F90 | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/GetScalProdDiag.F90 b/src/GetScalProdDiag.F90 index 00e3dff..c4ec3d1 100644 --- a/src/GetScalProdDiag.F90 +++ b/src/GetScalProdDiag.F90 @@ -20,6 +20,8 @@ subroutine SBP_GetScalProdDiag ( cctkGH, dir, nsize, sigmad ) CCTK_REAL, parameter :: zero = 0.0 integer, parameter :: wp = kind(zero) integer, dimension(6) :: onesided + CCTK_INT, dimension(6) :: offset + CCTK_INT :: ol, or CCTK_REAL, dimension(2), parameter :: bmask_2 = (/ 0.5_wp, 1.0_wp /) CCTK_REAL, dimension(4), parameter :: bmask_4 = (/ 17.0_wp/48.0_wp, & @@ -47,30 +49,37 @@ subroutine SBP_GetScalProdDiag ( cctkGH, dir, nsize, sigmad ) call SBP_determine_onesided_stencil (cctkGH, onesided) - sigmad = 1.0_wp + call get_shiftout ( cctkGH, offset ) + + ol = offset(dir*2+1) + or = offset(dir*2+2) + + sigmad(1:ol) = zero + sigmad(nsize+1-or:nsize) = zero + sigmad(1+ol:nsize-or) = 1.0_wp if ( onesided(dir*2+1) == 1 ) then select case (order) case (2) - sigmad(1:2) = bmask_2 + sigmad(1+ol:2+ol) = bmask_2 case (4) - sigmad(1:4) = bmask_4 + sigmad(1+ol:4+ol) = bmask_4 case (6) - sigmad(1:6) = bmask_6 + sigmad(1+ol:6+ol) = bmask_6 case (8) - sigmad(1:8) = bmask_8 + sigmad(1+ol:8+ol) = bmask_8 end select end if if ( onesided(dir*2+2) == 1 ) then select case (order) case (2) - sigmad(nsize:nsize-1:-1) = bmask_2 + sigmad(nsize-or:nsize-1-or:-1) = bmask_2 case (4) - sigmad(nsize:nsize-3:-1) = bmask_4 + sigmad(nsize-or:nsize-3-or:-1) = bmask_4 case (6) - sigmad(nsize:nsize-5:-1) = bmask_6 + sigmad(nsize-or:nsize-5-or:-1) = bmask_6 case (8) - sigmad(nsize:nsize-7:-1) = bmask_8 + sigmad(nsize-or:nsize-7-or:-1) = bmask_8 end select end if |