5 . mbuff,lbase,lcheck,mibuff,mjbuff)
9 integer*1 igridflags(ilo-mbuff:ihi+mbuff,jlo-mbuff:jhi+mbuff)
13 integer*1 icopy(mibuff,mjbuff)
14 dimension ist(3), iend(3), jst(3), jend(3), ishift(3), jshift(3)
15 dimension igridst(lcheck), igridend(lcheck)
16 dimension jgridst(lcheck), jgridend(lcheck)
17 logical borderx, bordery
31 igridend(lcheck) = ihi
33 jgridend(lcheck) = jhi
34 do lc = lcheck-1,lbase,-1
35 ilo_coarse = floor(dfloat(igridst(lc+1))/intratx(lc))
36 jlo_coarse = floor(dfloat(jgridst(lc+1))/intraty(lc))
37 ihi_coarse = ceiling(dfloat(igridend(lc+1))/intratx(lc)) - 1
38 jhi_coarse = ceiling(dfloat(jgridend(lc+1))/intraty(lc)) - 1
39 if (ihi_coarse*intratx(lc) .lt. igridend(lc+1))
40 . ihi_coarse = ihi_coarse+1
41 if (jhi_coarse*intraty(lc) .lt. jgridend(lc+1))
42 . jhi_coarse = jhi_coarse+1
43 igridend(lc) = ihi_coarse
44 jgridend(lc) = jhi_coarse
45 igridst(lc) = ilo_coarse
46 jgridst(lc) = jlo_coarse
49 ilo_coarse = igridst(lbase)
50 ihi_coarse = igridend(lbase)
51 jlo_coarse = jgridst(lbase)
52 jhi_coarse = jgridend(lbase)
63 iblo = node(ndilo,mbase)
64 ibhi = node(ndihi,mbase)
65 jblo = node(ndjlo,mbase)
66 jbhi = node(ndjhi,mbase)
73 borderx = (ilo_coarse.le. 0 .or. ihi_coarse.ge.iregsz(lbase)-1)
74 bordery = (jlo_coarse.le. 0 .or. jhi_coarse.ge.jregsz(lbase)-1)
75 if ((xperdom .and. borderx) .or. (yperdom .and. bordery))
then
77 . ilo_coarse-mbuff,ihi_coarse+mbuff,
78 . jlo_coarse-mbuff,jhi_coarse+mbuff,
79 . ishift,jshift,lbase)
82 i1 = max(ilo_coarse-mbuff,ist(i))
83 i2 = min(ihi_coarse+mbuff,iend(i))
85 j1 = max(jlo_coarse-mbuff,jst(j))
86 j2 = min(jhi_coarse+mbuff, jend(j))
88 if (.not. ((i1 .le. i2) .and. (j1 .le. j2))) go to 24
100 ixlo = max(iblo,i1+ishift(i))
101 ixhi = min(ibhi,i2+ishift(i))
102 jxlo = max(jblo,j1+jshift(j))
103 jxhi = min(jbhi,j2+jshift(j))
105 if ((ixlo .gt. ixhi) .or. (jxlo .gt. jxhi)) go to 24
109 ixlo_unwrapped = ixlo - ishift(i)
110 ixhi_unwrapped = ixhi - ishift(i)
111 jxlo_unwrapped = jxlo - jshift(j)
112 jxhi_unwrapped = jxhi - jshift(j)
114 . ixlo_unwrapped,ixhi_unwrapped,
115 . jxlo_unwrapped,jxhi_unwrapped,
116 . ilo_coarse,ihi_coarse,
117 . jlo_coarse,jhi_coarse,mbuff)
123 ixlo = max(iblo,ilo_coarse-mbuff)
124 ixhi = min(ibhi,ihi_coarse+mbuff)
125 jxlo = max(jblo,jlo_coarse-mbuff)
126 jxhi = min(jbhi,jhi_coarse+mbuff)
129 if (.not.((ixlo .le. ixhi) .and. (jxlo .le. jxhi))) go to 30
134 . ilo_coarse,ihi_coarse,
135 . jlo_coarse,jhi_coarse,mbuff)
138 30 mbase = node(levelptr,mbase)
139 if (mbase .ne. 0) go to 20
143 . jlo_coarse,jhi_coarse,mbuff,lbase)
152 call
griddomcopy(icopy,igridflags,ilo_coarse,ihi_coarse,
153 . jlo_coarse,jhi_coarse,mbuff)
159 . alloc(node(domflags2,mptr)),lbase)
161 do 40 lev = lbase+1, lcheck
166 ilo_fine = igridst(lev)
167 ihi_fine = igridend(lev)
168 jlo_fine = jgridst(lev)
169 jhi_fine = jgridend(lev)
172 call
griddomup(alloc(node(domflags2,mptr)),icopy,
173 . ilo_coarse,ihi_coarse,jlo_coarse,jhi_coarse,
175 . ilo_fine,ihi_fine,jlo_fine,jhi_fine)
177 call
griddomshrink(icopy,ilo_fine,ihi_fine,jlo_fine,jhi_fine,
178 . mbuff,alloc(node(domflags2,mptr)),lev)
179 ilo_coarse = ilo_fine
180 ihi_coarse = ihi_fine
181 jlo_coarse = jlo_fine
182 jhi_coarse = jhi_fine
subroutine griddomup(iflags, iflags2, ilo, ihi, jlo, jhi, mbuff, lev, ilofine, ihifine, jlofine, jhifine)
subroutine setphysbndryflags(iflags, ilo, ihi, jlo, jhi, mbuff, level)
If grid borders the physical domain then set domain flags to 1 in buffer zone (which is outside the p...
subroutine griddomshrink(iflags2, ilo, ihi, jlo, jhi, mbuff, iflags, level)
subroutine coarsegridflagset(iflags, ixlo, ixhi, jxlo, jxhi, ilo_coarse, ihi_coarse, jlo_coarse, jhi_coarse, mbuff)
Flag a whole subregion from (ixlo,ixhi) to (jxlo, jxhi) with integer.
subroutine setindices(ist, iend, jst, jend, ilo, ihi, jlo, jhi, ishift, jshift, level)
subroutine setdomflags(mptr, igridflags, ilo, ihi, jlo, jhi, mbuff, lbase, lcheck, mibuff, mjbuff)
subroutine griddomcopy(i1, i2, ilo, ihi, jlo, jhi, mbuff)