4 subroutine preicall(val,aux,nrow,ncol,nvar,naux,
5 1 ilo,ihi,jlo,jhi,level,fliparray)
8 implicit double precision (a-h,o-z)
10 dimension fliparray((nrow+ncol)*nghost*(nvar+naux))
11 dimension val(nvar,nrow,ncol)
12 dimension aux(naux,nrow,ncol)
14 dimension ist(3), iend(3), jst(3), jend(3), ishift(3), jshift(3)
19 iadd(ivar,i,j) = locflip + ivar-1 + nvar*((j-1)*nc+i-1)
20 iaddaux(iaux,i,j) = locflipaux + iaux-1 + naux*((j-1)*nc+i-1)
41 locflipaux = 1 + nvar*(ncol+nrow)
51 ist(3) = iregsz(level)
53 iend(2) = iregsz(level)-1
55 ishift(1) = iregsz(level)
57 ishift(3) = -iregsz(level)
59 ist(1) = iregsz(level)
61 ist(3) = iregsz(level)
71 if (yperdom .or. spheredom)
then
74 jst(3) = jregsz(level)
76 jend(2) = jregsz(level)-1
78 jshift(1) = jregsz(level)
80 jshift(3) = -jregsz(level)
82 jst(1) = jregsz(level)
84 jst(3) = jregsz(level)
100 i1 = max(ilo, ist(i))
101 i2 = min(ihi, iend(i))
102 if (i1 .gt. i2) go to 20
104 j1 = max(jlo, jst(j))
105 j2 = min(jhi, jend(j))
111 if (.not. spheredom .or. j .eq. 2)
then
112 iputst = i1 - ilo + 1
113 jputst = j1 - jlo + 1
114 call
icall(val,aux,nrow,ncol,nvar,naux,
115 1 i1+ishift(i),i2+ishift(i),
116 2 j1+jshift(j),j2+jshift(j),level,
124 if (j1 < 0) jbump = abs(j1)
125 if (j2 >= jregsz(level)) jbump = -(j2+1-jregsz(level))
128 iwrap1 = i1 + ishift(i)
129 iwrap2 = i2 + ishift(i)
131 iwrap1 = iregsz(level) - iwrap1 -1
132 iwrap2 = iregsz(level) - iwrap2 -1
139 xlwrap = xlower + iwrap1*hxposs(level)
140 ybwrap = ylower + jwrap1*hyposs(level)
145 iflipchunksize = naux*nc*nr - 1 + nvar*(ncol+nrow)
146 idimen = (nrow+ncol)*nghost*(nvar+naux)
147 if (iflipchunksize .gt. idimen)
then
148 write(*,*)
"Error in fliparray size: asking for ",
149 . iflipchunksize,
" but dimension is",idimen
152 fliparray(locflipaux:locflipaux+naux*nc*nr - 1) =
154 call
setaux(ng,nr,nc,xlwrap,ybwrap,
155 1 hxposs(level),hyposs(level),naux,
156 2 fliparray(locflipaux))
161 101
format(
" actual patch from i:",2i5,
" j :",2i5)
162 102
format(
" icall called w i:",2i5,
" j :",2i5)
163 call
icall(fliparray(locflip),fliparray(locflipaux),
164 1 nr,nc,nvar, naux,iwrap1,iwrap2,jwrap1,jwrap2,
174 100
format(
" filling loc ",2i5,
" with ",2i5)
177 val(ivar,nrowst+(ii-ilo),ncolst+(jj-jlo)) =
178 1 fliparray(
iadd(ivar,nr-(ii-i1),nc-(jj-j1)))
182 aux(iaux,nrowst+(ii-ilo),ncolst+(jj-jlo)) =
183 1 fliparray(iaddaux(iaux,nr-(ii-i1),nc-(jj-j1)))
integer pure function iadd(ivar, i, j)
subroutine icall(val, aux, nrow, ncol, nvar, naux, ilo, ihi, jlo, jhi, level, iputst, jputst)
subroutine preicall(val, aux, nrow, ncol, nvar, naux, ilo, ihi, jlo, jhi, level, fliparray)
subroutine setaux(mbc, mx, my, xlower, ylower, dx, dy, maux, aux)