25 subroutine flux2(ixy,maxm,meqn,maux,mbc,mx,
26 & q1d,dtdx1d,aux1,aux2,aux3,
27 & faddm,faddp,gaddm,gaddp,cfl1d,wave,s,
28 & amdq,apdq,cqxx,bmasdq,bpasdq,rpn2,rpt2)
79 implicit double precision (a-h,o-z)
81 dimension q1d(meqn,1-mbc:maxm+mbc)
82 dimension amdq(meqn,1-mbc:maxm+mbc)
83 dimension apdq(meqn,1-mbc:maxm+mbc)
84 dimension bmasdq(meqn,1-mbc:maxm+mbc)
85 dimension bpasdq(meqn,1-mbc:maxm+mbc)
86 dimension cqxx(meqn,1-mbc:maxm+mbc)
87 dimension faddm(meqn,1-mbc:maxm+mbc)
88 dimension faddp(meqn,1-mbc:maxm+mbc)
89 dimension gaddm(meqn,1-mbc:maxm+mbc, 2)
90 dimension gaddp(meqn,1-mbc:maxm+mbc, 2)
91 dimension dtdx1d(1-mbc:maxm+mbc)
92 dimension aux1(maux,1-mbc:maxm+mbc)
93 dimension aux2(maux,1-mbc:maxm+mbc)
94 dimension aux3(maux,1-mbc:maxm+mbc)
96 dimension s(
mwaves, 1-mbc:maxm+mbc)
97 dimension wave(meqn,
mwaves, 1-mbc:maxm+mbc)
100 common /comxyt/ dtcom,dxcom,dycom,tcom,icom,jcom
104 if (
mthlim(mw) .gt. 0) limit = .true.
110 do 10 i = 1-mbc, mx+mbc
125 call rpn2(ixy,maxm,meqn,
mwaves,maux,mbc,mx,q1d,q1d,
126 & aux2,aux2,wave,s,amdq,apdq)
131 faddp(m,i) = faddp(m,i) - apdq(m,i)
132 faddm(m,i) = faddm(m,i) + amdq(m,i)
141 cfl1d = dmax1(cfl1d, dtdx1d(i)*s(mw,i),
142 & -dtdx1d(i-1)*s(mw,i))
145 if (
method(2).eq.1)
go to 130
159 dtdxave = 0.5d0 * (dtdx1d(i-1) + dtdx1d(i))
169 abs_sign = dsign(1.d0,s(mw,i))
171 abs_sign = dabs(s(mw,i))
174 cqxx(m,i) = cqxx(m,i) + abs_sign
175 & * (1.d0 - dabs(s(mw,i))*dtdxave) * wave(m,mw,i)
178 faddm(m,i) = faddm(m,i) + 0.5d0 * cqxx(m,i)
179 faddp(m,i) = faddp(m,i) + 0.5d0 * cqxx(m,i)
185 if (
method(3).eq.0)
go to 999
191 amdq(m,i) = amdq(m,i) + cqxx(m,i)
192 apdq(m,i) = apdq(m,i) - cqxx(m,i)
202 call rpt2(ixy,1,maxm,meqn,
mwaves,maux,mbc,mx,
203 & q1d,q1d,aux1,aux2,aux3,
204 & amdq,bmasdq,bpasdq)
209 gupdate = 0.5d0*dtdx1d(i-1) * bmasdq(m,i)
210 gaddm(m,i-1,1) = gaddm(m,i-1,1) - gupdate
211 gaddp(m,i-1,1) = gaddp(m,i-1,1) - gupdate
213 gupdate = 0.5d0*dtdx1d(i-1) * bpasdq(m,i)
214 gaddm(m,i-1,2) = gaddm(m,i-1,2) - gupdate
215 gaddp(m,i-1,2) = gaddp(m,i-1,2) - gupdate
219 call rpt2(ixy,2,maxm,meqn,
mwaves,maux,mbc,mx,
220 & q1d,q1d,aux1,aux2,aux3,
221 & apdq,bmasdq,bpasdq)
226 gupdate = 0.5d0*dtdx1d(i) * bmasdq(m,i)
227 gaddm(m,i,1) = gaddm(m,i,1) - gupdate
228 gaddp(m,i,1) = gaddp(m,i,1) - gupdate
230 gupdate = 0.5d0*dtdx1d(i) * bpasdq(m,i)
231 gaddm(m,i,2) = gaddm(m,i,2) - gupdate
232 gaddp(m,i,2) = gaddp(m,i,2) - gupdate
integer, dimension(7) method
integer, dimension(:), allocatable mthlim
subroutine limiter(maxm, meqn, mwaves, mbc, mx, wave, s, mthlim)
subroutine rpn2(ixy, maxm, meqn, mwaves, maux, mbc, mx, ql, qr, auxl, auxr, wave, s, amdq, apdq)
subroutine flux2(ixy, maxm, meqn, maux, mbc, mx, q1d, dtdx1d, aux1, aux2, aux3, faddm, faddp, gaddm, gaddp, cfl1d, wave, s, amdq, apdq, cqxx, bmasdq, bpasdq, rpn2, rpt2)
Solve Riemann problems based on 1D slice of the 2D grid.
The module contains the definition of a "node descriptor" as well as other global variables used duri...