aboutsummaryrefslogtreecommitdiff
path: root/src/GetScalProdDiag.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/GetScalProdDiag.F90')
-rw-r--r--src/GetScalProdDiag.F9027
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