From 48f4dd32bc87aa7b61aad9c701057ae2044c003f Mon Sep 17 00:00:00 2001 From: diener Date: Tue, 22 Jul 2003 08:56:34 +0000 Subject: 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 --- src/EHFinder_SetMask.F90 | 380 +++++++++++++++++++++++++++++++++++++++++------ 1 file 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) -- cgit v1.2.3