4 subroutine qad(valbig,mitot,mjtot,nvar,
5 . svdflx,qc1d,lenbc,lratiox,lratioy,hx,hy,
6 . maux,aux,auxc1d,delt,mptr)
9 implicit double precision (a-h, o-z)
14 dimension valbig(nvar,mitot,mjtot)
15 dimension qc1d(nvar,lenbc)
16 dimension svdflx(nvar,lenbc)
17 dimension aux(maux,mitot,mjtot)
18 dimension auxc1d(maux,lenbc)
41 parameter(max1dp1 = max1d+1)
42 dimension ql(nvar,max1dp1), qr(nvar,max1dp1)
43 dimension wave(nvar,mwaves,max1dp1), s(mwaves,max1dp1)
44 dimension amdq(nvar,max1dp1), apdq(nvar,max1dp1)
45 dimension auxl(maxaux*max1dp1), auxr(maxaux*max1dp1)
51 iaddaux(iaux,i) = iaux + maux*(i-1)
62 tgrid = rnode(timemult, mptr)
64 .
write(dbugunit,*)
" working on grid ",mptr,
" time ",tgrid
67 level = node(nestlevel, mptr)
75 do 10 j = nghost+1, mjtot-nghost
78 if (auxtype(ma).eq.
"xleft")
then
81 auxl(iaddaux(ma,j-nghost+1)) = aux(ma,nghost+1,j)
85 auxl(iaddaux(ma,j-nghost+1)) = aux(ma,nghost,j)
90 ql(ivar,j-nghost+1) = valbig(ivar,nghost,j)
94 ncrse = (mjtot-2*nghost)/lratioy
101 auxr(iaddaux(ma,lind)) = auxc1d(ma,index)
105 25 qr(ivar,lind) = qc1d(ivar,index)
109 write(dbugunit,*)
'side 1, ql and qr:'
111 write(dbugunit,4101) i,qr(1,i-1),ql(1,i)
113 4101
format(i3,4e16.6)
114 if (maux .gt. 0)
then
115 write(dbugunit,*)
'side 1, auxr:'
117 write(dbugunit,4101) i,(auxr(iaddaux(ma,i-1)),ma=1,maux)
119 write(dbugunit,*)
'side 1, auxl:'
121 write(dbugunit,4101) i,(auxl(iaddaux(ma,i)),ma=1,maux)
126 call
rpn2(1,max1dp1-2*nghost,nvar,mwaves,maux,nghost,
127 . nc+1-2*nghost,ql,qr,auxl,auxr,wave,s,amdq,apdq)
132 do 30 j = 1, nc/lratioy
134 jfine = (j-1)*lratioy
137 svdflx(ivar,influx) = svdflx(ivar,influx)
138 . + amdq(ivar,jfine+l+1) * hy * delt
139 . + apdq(ivar,jfine+l+1) * hy * delt
148 if (mjtot .eq. 2*nghost+1)
then
156 do 210 i = nghost+1, mitot-nghost
159 auxr(iaddaux(ma,i-nghost)) = aux(ma,i,mjtot-nghost+1)
162 do 210 ivar = 1, nvar
163 qr(ivar,i-nghost) = valbig(ivar,i,mjtot-nghost+1)
167 ncrse = (mitot-2*nghost)/lratiox
170 do 225 l = 1, lratiox
174 if (auxtype(ma).eq.
"yleft")
then
177 ifine = (ic-1)*lratiox + nghost + l
178 auxl(iaddaux(ma,lind+1)) = aux(ma,ifine,mjtot-nghost+1)
180 auxl(iaddaux(ma,lind+1)) = auxc1d(ma,index)
184 do 225 ivar = 1, nvar
185 225 ql(ivar,lind+1) = qc1d(ivar,index)
189 write(dbugunit,*)
'side 2, ql and qr:'
191 write(dbugunit,4101) i,ql(1,i+1),qr(1,i)
193 if (maux .gt. 0)
then
194 write(dbugunit,*)
'side 2, auxr:'
196 write(dbugunit,4101) i, (auxr(iaddaux(ma,i)),ma=1,maux)
198 write(dbugunit,*)
'side 2, auxl:'
200 write(dbugunit,4101) i, (auxl(iaddaux(ma,i)),ma=1,maux)
204 call
rpn2(2,max1dp1-2*nghost,nvar,mwaves,maux,nghost,
205 . nr+1-2*nghost,ql,qr,auxl,auxr,wave,s,amdq,apdq)
209 do 230 i = 1, nr/lratiox
211 ifine = (i-1)*lratiox
212 do 240 ivar = 1, nvar
213 do 250 l = 1, lratiox
214 svdflx(ivar,influx) = svdflx(ivar,influx)
215 . - amdq(ivar,ifine+l+1) * hx * delt
216 . - apdq(ivar,ifine+l+1) * hx * delt
227 do 310 j = nghost+1, mjtot-nghost
230 auxr(iaddaux(ma,j-nghost)) = aux(ma,mitot-nghost+1,j)
233 do 310 ivar = 1, nvar
234 qr(ivar,j-nghost) = valbig(ivar,mitot-nghost+1,j)
238 ncrse = (mjtot-2*nghost)/lratioy
241 do 325 l = 1, lratioy
245 if (auxtype(ma).eq.
"xleft")
then
248 jfine = (jc-1)*lratioy + nghost + l
249 auxl(iaddaux(ma,lind+1)) = aux(ma,mitot-nghost+1,jfine)
251 auxl(iaddaux(ma,lind+1)) = auxc1d(ma,index)
255 do 325 ivar = 1, nvar
256 325 ql(ivar,lind+1) = qc1d(ivar,index)
260 write(dbugunit,*)
'side 3, ql and qr:'
262 write(dbugunit,4101) i,ql(1,i),qr(1,i)
265 call
rpn2(1,max1dp1-2*nghost,nvar,mwaves,maux,nghost,
266 . nc+1-2*nghost,ql,qr,auxl,auxr,wave,s,amdq,apdq)
270 do 330 j = 1, nc/lratioy
272 jfine = (j-1)*lratioy
273 do 340 ivar = 1, nvar
274 do 350 l = 1, lratioy
275 svdflx(ivar,influx) = svdflx(ivar,influx)
276 . - amdq(ivar,jfine+l+1) * hy * delt
277 . - apdq(ivar,jfine+l+1) * hy * delt
286 if (mjtot .eq. 2*nghost+1)
then
294 do 410 i = nghost+1, mitot-nghost
297 if (auxtype(ma).eq.
"yleft")
then
300 auxl(iaddaux(ma,i-nghost+1)) = aux(ma,i,nghost+1)
302 auxl(iaddaux(ma,i-nghost+1)) = aux(ma,i,nghost)
306 do 410 ivar = 1, nvar
307 ql(ivar,i-nghost+1) = valbig(ivar,i,nghost)
311 ncrse = (mitot-2*nghost)/lratiox
314 do 425 l = 1, lratiox
318 auxr(iaddaux(ma,lind)) = auxc1d(ma,index)
321 do 425 ivar = 1, nvar
322 425 qr(ivar,lind) = qc1d(ivar,index)
326 write(dbugunit,*)
'side 4, ql and qr:'
328 write(dbugunit,4101) i, ql(1,i),qr(1,i)
331 call
rpn2(2,max1dp1-2*nghost,nvar,mwaves,maux,nghost,
332 . nr+1-2*nghost,ql,qr,auxl,auxr,wave,s,amdq,apdq)
336 do 430 i = 1, nr/lratiox
338 ifine = (i-1)*lratiox
339 do 440 ivar = 1, nvar
340 do 450 l = 1, lratiox
341 svdflx(ivar,influx) = svdflx(ivar,influx)
342 . + amdq(ivar,ifine+l+1) * hx * delt
343 . + apdq(ivar,ifine+l+1) * hx * delt
351 if (method(5) .ne. 0)
then
352 call
src1d(nvar,nghost,lenbc,qc1d,maux,auxc1d,tgrid,delt)
subroutine src1d(meqn, mbc, mx1d, q1d, maux, aux1d, t, dt)
subroutine qad(valbig, mitot, mjtot, nvar, svdflx, qc1d, lenbc, lratiox, lratioy, hx, hy, maux, aux, auxc1d, delt, mptr)
subroutine rpn2(ixy, maxm, meqn, mwaves, maux, mbc, mx, ql, qr, auxl, auxr, wave, s, amdq, apdq)