4 logical function basecheck(mnew,lbase,ilo,ihi,jlo,jhi,
8 implicit double precision (a-h, o-z)
11 integer ist(3),iend(3),jst(3),jend(3),ishift(3),jshift(3)
12 logical borderx, bordery
16 iadd(i,j) = locm + i - iclo + leni*(j-jclo)
34 levnew = node(nestlevel,mnew)
35 borderx = (ilo .eq. 0 .or. ihi .eq. iregsz(levnew)-1)
36 bordery = (jlo .eq. 0 .or. jhi .eq. jregsz(levnew)-1)
39 if (debug)
write(outunit,100) mnew,lbase,ilo,ihi,jlo,jhi,levnew
40 100
format(
"NESTCK2 testing grid ",i5,
" base level ",i5,/,
41 .
" new grid from ilo:hi: ",2i12,
" to ",2i12,
" at level ",i4)
46 do 5 lev = lbase, levnew-1
47 levratx = levratx * intratx(lev)
48 levraty = levraty * intraty(lev)
58 do lev = levnew-1,lbase,-1
59 iclo = iclo/intratx(lev)
60 ichi = ichi/intratx(lev)
61 jclo = jclo/intraty(lev)
62 jchi = jchi/intraty(lev)
68 write(outunit,111) lev, iclo,ichi,jclo,jchi
69 111
format(10x,
"at level",i5,
" projected coords ilo:hi:",2i10,
78 write(outunit,108) ilo-1,ihi+1,jlo-1,jhi+1
79 write(outunit,109) levratx,levraty
80 108
format(
" enlarged (by 1) fine grid from ilo:hi:",2i12,
81 .
" to jlo:hi:", 2i12)
82 109
format(
" refinement factors to base grid of ", 2i12)
83 write(outunit,101) iclo,ichi,jclo,jchi
84 101
format(
"coarsened to lbase, grid from iclo:hi: ",2i12,
85 .
" to jclo:hi:",2i12)
88 if (.not. (xperdom .and. borderx) .and.
89 . .not. (yperdom .and. bordery))
then
92 ichi = min(ichi,iregsz(lbase)-1)
93 jchi = min(jchi,jregsz(lbase)-1)
97 leni = ichi - iclo + 1
98 lenj = jchi - jclo + 1
101 alloc(locm:locm+lenrect-1) = 0.
105 if (ilo .eq. 0 .and. .not. xperdom)
then
107 alloc(
iadd(iclo,j)) = 1.
108 alloc(
iadd(iclo+1,j)) = 1.
112 if (ihi .eq. iregsz(levnew)-1 .and. .not. xperdom)
then
114 alloc(
iadd(ichi,j)) = 1.
115 alloc(
iadd(ichi-1,j)) = 1.
118 if (jlo .eq. 0 .and. .not. yperdom)
then
120 alloc(
iadd(i,jclo)) = 1.
121 alloc(
iadd(i,jclo+1)) = 1.
124 if (jhi .eq. jregsz(levnew)-1 .and. .not. yperdom)
then
126 alloc(
iadd(i,jchi)) = 1.
127 alloc(
iadd(i,jchi-1)) = 1.
132 20 iblo = node(ndilo, mptr) - thisbuff
133 ibhi = node(ndihi, mptr) + thisbuff
134 jblo = node(ndjlo, mptr) - thisbuff
135 jbhi = node(ndjhi, mptr) + thisbuff
138 if ((.not. (xperdom .and. borderx)) .and.
139 . .not. (yperdom .and. bordery))
then
140 ixlo = max(iclo,iblo)
141 ixhi = min(ichi,ibhi)
142 jxlo = max(jclo,jblo)
143 jxhi = min(jchi,jbhi)
144 if (.not.((ixlo.le.ixhi) .and. (jxlo.le.jxhi))) go to 30
147 alloc(
iadd(ix,jx))=1.
158 call
setindices(ist,iend,jst,jend,iclo,ichi,jclo,jchi,
159 . ishift,jshift,lbase)
163 i1 = max(iclo,ist(i))
164 i2 = min(ichi, iend(i))
166 j1 = max(jclo, jst(j))
167 j2 = min(jchi, jend(j))
169 if (.not. ((i1 .le. i2) .and. (j1 .le. j2))) go to 25
173 i1_shifted = i1 + ishift(i)
174 i2_shifted = i2 + ishift(i)
175 j1_shifted = j1 + jshift(j)
176 j2_shifted = j2 + jshift(j)
178 ixlo = max(i1_shifted,iblo)
179 ixhi = min(i2_shifted,ibhi)
180 jxlo = max(j1_shifted,jblo)
181 jxhi = min(j2_shifted,jbhi)
183 if (.not.((ixlo.le.ixhi) .and. (jxlo.le.jxhi))) go to 25
188 ix_unshifted = (ix - ishift(i))
189 jx_unshifted = (jx - jshift(j))
190 alloc(
iadd(ix_unshifted,jx_unshifted)) = 1.
196 30 mptr = node(levelptr, mptr)
197 if (mptr .ne. 0) go to 20
201 do 34 jj = jclo, jchi
203 write(outunit,344)(int(alloc(
iadd(i,j))), i=iclo,ichi)
213 if (alloc(
iadd(i,j)) .eq. 0)
then
222 99 call
reclam(locm, lenrect)
subroutine reclam(index, nwords)
logical function basecheck(mnew, lbase, ilo, ihi, jlo, jhi, nvar, naux, thisBuff)
integer pure function iadd(ivar, i, j)
subroutine setindices(ist, iend, jst, jend, ilo, ihi, jlo, jhi, ishift, jshift, level)