aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2003-07-22 08:56:34 +0000
committerdiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2003-07-22 08:56:34 +0000
commit48f4dd32bc87aa7b61aad9c701057ae2044c003f (patch)
tree7b25841c7f16a19d770fec7b8ab49927d50d0e19
parentc32ff041769483f6ad9bf28a9b8f65ed3e06360a (diff)
Fixed a bug in activating points with outer excision when the active region
is growing. Now it should work correctly and on multiple processors. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/EHFinder/trunk@123 2a26948c-0e4f-0410-aee8-f1d3e353619c
-rw-r--r--src/EHFinder_SetMask.F90380
1 files changed, 334 insertions, 46 deletions
diff --git a/src/EHFinder_SetMask.F90 b/src/EHFinder_SetMask.F90
index 9a64ca0..a55c410 100644
--- a/src/EHFinder_SetMask.F90
+++ b/src/EHFinder_SetMask.F90
@@ -225,9 +225,9 @@ subroutine EHFinder_SetMask1(CCTK_ARGUMENTS)
call CCTK_WARN ( 0, 'Reduction of array fimax_loc failed' )
end if
-! print*, imin_glob(1), imax_glob(1), fimin_glob(1), fimax_glob(1)
-! print*, imin_glob(2), imax_glob(2), fimin_glob(2), fimax_glob(2)
-! print*, imin_glob(3), imax_glob(3), fimin_glob(3), fimax_glob(3)
+ print*, imin_glob(1), imax_glob(1), fimin_glob(1), fimax_glob(1)
+ print*, imin_glob(2), imax_glob(2), fimin_glob(2), fimax_glob(2)
+ print*, imin_glob(3), imax_glob(3), fimin_glob(3), fimax_glob(3)
end if
! Now check and see if any interior excised points need to be activated.
@@ -312,105 +312,393 @@ subroutine EHFinder_SetMask1(CCTK_ARGUMENTS)
end if
end do
-! print*,'New range'
-! print*,imin_n(1),imax_n(1)
-! print*,imin_n(2),imax_n(2)
-! print*,imin_n(3),imax_n(3)
+ print*,'New range'
+ print*,imin_n(1),imax_n(1)
+ print*,imin_n(2),imax_n(2)
+ print*,imin_n(3),imax_n(3)
! Use the new indices to actually activate points, taking care to
-! activate points that are actually on the local grid.
+! activate points that are actually on the local grid. First do the
+! faces of the rectangular box.
if ( imin_n(1) .ne. imin_glob(1) ) then
i1 = imin_n(1) - cctk_lbnd(1)
- if ( ( ixl .le. i1 ) .and. ( i1 .lt. nx-1 ) ) then
- j1 = max ( imin_n(2) - cctk_lbnd(2), jyl )
- j2 = min ( imax_n(2) - cctk_lbnd(2), jyr )
- k1 = max ( imin_n(3) - cctk_lbnd(3), kzl )
- k2 = min ( imax_n(3) - cctk_lbnd(3), kzr )
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) ) then
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
! print*,'x1 ',i1,j1,j2,k1,k2
if ( ( j1 .le. j2 ) .and. ( k1 .le. k2 ) ) then
tm_mask(i1,j1:j2,k1:k2) = 0
- ftmp(i1,j1:j2,k1:k2) = ftmp(i1+1,j1:j2,k1:k2) + delta
+ ftmp(i1,j1:j2,k1:k2) = f(i1+1,j1:j2,k1:k2) + delta
! print*,'done'
end if
end if
end if
if ( imax_n(1) .ne. imax_glob(1) ) then
i2 = imax_n(1) - cctk_lbnd(1)
- if ( ( ixl .lt. i2 ) .and. ( i2 .le. nx-1 ) ) then
- j1 = max ( imin_n(2) - cctk_lbnd(2), jyl )
- j2 = min ( imax_n(2) - cctk_lbnd(2), jyr )
- k1 = max ( imin_n(3) - cctk_lbnd(3), kzl )
- k2 = min ( imax_n(3) - cctk_lbnd(3), kzr )
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) ) then
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
! print*,'x2 ',i2,j1,j2,k1,k2
if ( ( j1 .le. j2 ) .and. ( k1 .le. k2 ) ) then
tm_mask(i2,j1:j2,k1:k2) = 0
- ftmp(i2,j1:j2,k1:k2) = ftmp(i2-1,j1:j2,k1:k2) + delta
+ ftmp(i2,j1:j2,k1:k2) = f(i2-1,j1:j2,k1:k2) + delta
! print*,'done'
end if
end if
end if
if ( imin_n(2) .ne. imin_glob(2) ) then
j1 = imin_n(2) - cctk_lbnd(2)
- if ( ( jyl .le. j1 ) .and. ( j1 .lt. ny-1 ) ) then
- i1 = max ( imin_n(1) - cctk_lbnd(1), ixl )
- i2 = min ( imax_n(1) - cctk_lbnd(1), ixr )
- k1 = max ( imin_n(3) - cctk_lbnd(3), kzl )
- k2 = min ( imax_n(3) - cctk_lbnd(3), kzr )
+ if ( ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
! print*,'y1 ',j1,i1,i2,k1,k2
if ( ( i1 .le. i2 ) .and. ( k1 .le. k2 ) ) then
tm_mask(i1:i2,j1,k1:k2) = 0
- ftmp(i1:i2,j1,k1:k2) = ftmp(i1:i2,j1+1,k1:k2) + delta
+ ftmp(i1:i2,j1,k1:k2) = f(i1:i2,j1+1,k1:k2) + delta
! print*,'done'
end if
end if
end if
if ( imax_n(2) .ne. imax_glob(2) ) then
j2 = imax_n(2) - cctk_lbnd(2)
- if ( ( jyl .lt. j2 ) .and. ( j2 .le. ny-1 ) ) then
- i1 = max ( imin_n(1) - cctk_lbnd(1), ixl )
- i2 = min ( imax_n(1) - cctk_lbnd(1), ixr )
- k1 = max ( imin_n(3) - cctk_lbnd(3), kzl )
- k2 = min ( imax_n(3) - cctk_lbnd(3), kzr )
+ if ( ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
! print*,'y2 ',j2,i1,i2,k1,k2
if ( ( i1 .le. i2 ) .and. ( k1 .le. k2 ) ) then
tm_mask(i1:i2,j2,k1:k2) = 0
- ftmp(i1:i2,j2,k1:k2) = ftmp(i1:i2,j2-1,k1:k2) + delta
+ ftmp(i1:i2,j2,k1:k2) = f(i1:i2,j2-1,k1:k2) + delta
! print*,'done'
end if
end if
end if
if ( imin_n(3) .ne. imin_glob(3) ) then
k1 = imin_n(3) - cctk_lbnd(3)
- if ( ( kzl .le. k1 ) .and. ( k1 .lt. nz-1 ) ) then
- i1 = max ( imin_n(1) - cctk_lbnd(1), ixl )
- i2 = min ( imax_n(1) - cctk_lbnd(1), ixr )
- j1 = max ( imin_n(2) - cctk_lbnd(2), jyl )
- j2 = min ( imax_n(2) - cctk_lbnd(2), jyr )
-! print*,'z1 ',k1,i1,i2,j1,j2
+ print*,'Debug 1 : ', imin_n(3), imin_glob(3), k1, kzl, nz
+ if ( ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ print*,'z1 ',k1,i1,i2,j1,j2
if ( ( i1 .le. i2 ) .and. ( j1 .le. j2 ) ) then
tm_mask(i1:i2,j1:j2,k1) = 0
- ftmp(i1:i2,j1:j2,k1) = ftmp(i1:i2,j1:j2,k1+1) + delta
+ ftmp(i1:i2,j1:j2,k1) = f(i1:i2,j1:j2,k1+1) + delta
! print*,'done'
end if
end if
end if
if ( imax_n(3) .ne. imax_glob(3) ) then
k2 = imax_n(3) - cctk_lbnd(3)
- if ( ( kzl .lt. k2 ) .and. ( k2 .le. nz-1 ) ) then
- i1 = max ( imin_n(1) - cctk_lbnd(1), ixl )
- i2 = min ( imax_n(1) - cctk_lbnd(1), ixr )
- j1 = max ( imin_n(2) - cctk_lbnd(2), jyl )
- j2 = min ( imax_n(2) - cctk_lbnd(2), jyr )
-! print*,'z2 ',k2,i1,i2,j1,j2
+ print*, 'Debug 2 : ', imax_n(3), imax_glob(3), k2, kzl, nz-1
+ if ( ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ print*,'z2 ',k2,i1,i2,j1,j2
if ( ( i1 .le. i2 ) .and. ( j1 .le. j2 ) ) then
tm_mask(i1:i2,j1:j2,k2) = 0
- ftmp(i1:i2,j1:j2,k2) = ftmp(i1:i2,j1:j2,k2-1) + delta
+ ftmp(i1:i2,j1:j2,k2) = f(i1:i2,j1:j2,k2-1) + delta
! print*,'done'
end if
end if
end if
+! Then do the edges of the box.
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imin_n(2) .ne. imin_glob(2) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ j1 = imin_n(2) - cctk_lbnd(2)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) ) then
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
+ if ( k1 .le. k2 ) then
+ tm_mask(i1,j1,k1:k2) = 0
+ ftmp(i1,j1,k1:k2) = f(i1+1,j1+1,k1:k2) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imax_n(2) .ne. imax_glob(2) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ j2 = imax_n(2) - cctk_lbnd(2)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) ) then
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
+ if ( k1 .le. k2 ) then
+ tm_mask(i1,j2,k1:k2) = 0
+ ftmp(i1,j2,k1:k2) = f(i1+1,j2-1,k1:k2) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ if ( j1 .le. j2 ) then
+ tm_mask(i1,j1:j2,k1) = 0
+ ftmp(i1,j1:j2,k1) = f(i1+1,j1:j2,k1+1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ if ( j1 .le. j2 ) then
+ tm_mask(i1,j1:j2,k2) = 0
+ ftmp(i1,j1:j2,k2) = f(i1+1,j1:j2,k2-1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imin_n(2) .ne. imin_glob(2) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ j1 = imin_n(2) - cctk_lbnd(2)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) ) then
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
+ if ( k1 .le. k2 ) then
+ tm_mask(i2,j1,k1:k2) = 0
+ ftmp(i2,j1,k1:k2) = f(i2-1,j1+1,k1:k2) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imax_n(2) .ne. imax_glob(2) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ j2 = imax_n(2) - cctk_lbnd(2)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) ) then
+ k1 = max ( max ( imin_n(3), imin_glob(3) ) - cctk_lbnd(3), kzl )
+ k2 = min ( min ( imax_n(3), imax_glob(3) ) - cctk_lbnd(3), kzr )
+ if ( k1 .le. k2 ) then
+ tm_mask(i2,j2,k1:k2) = 0
+ ftmp(i2,j2,k1:k2) = f(i2-1,j2-1,k1:k2) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ if ( j1 .le. j2 ) then
+ tm_mask(i2,j1:j2,k1) = 0
+ ftmp(i2,j1:j2,k1) = f(i2-1,j1:j2,k1+1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ j1 = max ( max ( imin_n(2), imin_glob(2) ) - cctk_lbnd(2), jyl )
+ j2 = min ( min ( imax_n(2), imax_glob(2) ) - cctk_lbnd(2), jyr )
+ if ( j1 .le. j2 ) then
+ tm_mask(i2,j1:j2,k2) = 0
+ ftmp(i2,j1:j2,k2) = f(i2-1,j1:j2,k2-1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imin_n(2) .ne. imin_glob(2) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ j1 = imin_n(2) - cctk_lbnd(2)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ if ( i1 .le. i2 ) then
+ tm_mask(i1:i2,j1,k1) = 0
+ ftmp(i1:i2,j1,k1) = f(i1:i2,j1+1,k1+1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imin_n(2) .ne. imin_glob(2) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ j1 = imin_n(2) - cctk_lbnd(2)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ if ( i1 .le. i2 ) then
+ tm_mask(i1:i2,j1,k2) = 0
+ ftmp(i1:i2,j1,k2) = f(i1:i2,j1+1,k2-1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imax_n(2) .ne. imax_glob(2) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ j2 = imax_n(2) - cctk_lbnd(2)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ if ( i1 .le. i2 ) then
+ tm_mask(i1:i2,j2,k1) = 0
+ ftmp(i1:i2,j2,k1) = f(i1:i2,j2-1,k1+1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+ if ( ( imax_n(2) .ne. imax_glob(2) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ j2 = imax_n(2) - cctk_lbnd(2)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ i1 = max ( max ( imin_n(1), imin_glob(1) ) - cctk_lbnd(1), ixl )
+ i2 = min ( min ( imax_n(1), imax_glob(1) ) - cctk_lbnd(1), ixr )
+ if ( i1 .le. i2 ) then
+ tm_mask(i1:i2,j2,k2) = 0
+ ftmp(i1:i2,j2,k2) = f(i1:i2,j2-1,k2-1) + sqrt(two)*delta
+ end if
+ end if
+ end if
+
+! And finally do the corners.
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imin_n(2) .ne. imin_glob(2) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ j1 = imin_n(2) - cctk_lbnd(2)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ tm_mask(i1,j1,k1) = 0
+ ftmp(i1,j1,k1) = f(i1+1,j1+1,k1+1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imin_n(2) .ne. imin_glob(2) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ j1 = imin_n(2) - cctk_lbnd(2)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ tm_mask(i1,j1,k2) = 0
+ ftmp(i1,j1,k2) = f(i1+1,j1+1,k2-1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imax_n(2) .ne. imax_glob(2) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ j2 = imax_n(2) - cctk_lbnd(2)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ tm_mask(i1,j2,k1) = 0
+ ftmp(i1,j2,k1) = f(i1+1,j2-1,k1+1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imin_n(1) .ne. imin_glob(1) ) .and. &
+ ( imax_n(2) .ne. imax_glob(2) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ i1 = imin_n(1) - cctk_lbnd(1)
+ j2 = imax_n(2) - cctk_lbnd(2)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( max(ixl,2) .le. i1 ) .and. ( i1 .le. ixr ) .and. &
+ ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ tm_mask(i1,j2,k2) = 0
+ ftmp(i1,j2,k2) = f(i1+1,j2-1,k2-1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imin_n(2) .ne. imin_glob(2) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ j1 = imin_n(2) - cctk_lbnd(2)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ tm_mask(i2,j1,k1) = 0
+ ftmp(i2,j1,k1) = f(i2-1,j1+1,k1+1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imin_n(2) .ne. imin_glob(2) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ j1 = imin_n(2) - cctk_lbnd(2)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( max(jyl,2) .le. j1 ) .and. ( j1 .le. jyr ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ tm_mask(i2,j1,k2) = 0
+ ftmp(i2,j1,k2) = f(i2-1,j1+1,k2-1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imax_n(2) .ne. imax_glob(2) ) .and. &
+ ( imin_n(3) .ne. imin_glob(3) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ j2 = imax_n(2) - cctk_lbnd(2)
+ k1 = imin_n(3) - cctk_lbnd(3)
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) .and. &
+ ( max(kzl,2) .le. k1 ) .and. ( k1 .le. kzr ) ) then
+ tm_mask(i2,j2,k1) = 0
+ ftmp(i2,j2,k1) = f(i2-1,j2-1,k1+1) + sqrt(three)*delta
+ end if
+ end if
+ if ( ( imax_n(1) .ne. imax_glob(1) ) .and. &
+ ( imax_n(2) .ne. imax_glob(2) ) .and. &
+ ( imax_n(3) .ne. imax_glob(3) ) ) then
+ i2 = imax_n(1) - cctk_lbnd(1)
+ j2 = imax_n(2) - cctk_lbnd(2)
+ k2 = imax_n(3) - cctk_lbnd(3)
+ print*,'Debug 3 : ',i2,j2,k2
+ if ( ( ixl .le. i2 ) .and. ( i2 .le. min(ixr,nx-1) ) .and. &
+ ( jyl .le. j2 ) .and. ( j2 .le. min(jyr,ny-1) ) .and. &
+ ( kzl .le. k2 ) .and. ( k2 .le. min(kzr,nz-1) ) ) then
+ tm_mask(i2,j2,k2) = 0
+ ftmp(i2,j2,k2) = f(i2-1,j2-1,k2-1) + sqrt(three)*delta
+ end if
+ end if
end if
+! print*,'Debug 4'
+! print*,ftmp(imin_n(1),imin_n(2),imin_n(3))
+! print*,ftmp(imin_n(1),imin_n(2),imax_n(3))
+! print*,ftmp(imin_n(1),imax_n(2),imin_n(3))
+! print*,ftmp(imin_n(1),imax_n(2),imax_n(3))
+! print*,ftmp(imax_n(1),imin_n(2),imin_n(3))
+! print*,ftmp(imax_n(1),imin_n(2),imax_n(3))
+! print*,ftmp(imax_n(1),imax_n(2),imin_n(3))
+! print*,ftmp(imax_n(1),imax_n(2),imax_n(3))
! Copy the modified mask and level set function into the proper place.
eh_mask(ixl:ixr,jyl:jyr,kzl:kzr) = tm_mask(ixl:ixr,jyl:jyr,kzl:kzr)