Compute all fluxes at cell edges.
29 integer,
intent(in) :: maxm,meqn,maux,mbc,mx,my
30 real(kind=8),
intent(in) :: dx,dy,dt
31 real(kind=8),
intent(inout) :: cflgrid
32 real(kind=8),
intent(inout) :: qold(meqn, 1-mbc:mx+mbc, 1-mbc:my+mbc)
33 real(kind=8),
intent(inout) :: aux(maux,1-mbc:mx+mbc, 1-mbc:my+mbc)
34 real(kind=8),
intent(inout) :: fm(meqn, 1-mbc:mx+mbc, 1-mbc:my+mbc)
35 real(kind=8),
intent(inout) :: fp(meqn,1-mbc:mx+mbc, 1-mbc:my+mbc)
36 real(kind=8),
intent(inout) :: gm(meqn,1-mbc:mx+mbc, 1-mbc:my+mbc)
37 real(kind=8),
intent(inout) :: gp(meqn,1-mbc:mx+mbc, 1-mbc:my+mbc)
40 real(kind=8) :: faddm(meqn,1-mbc:maxm+mbc)
41 real(kind=8) :: faddp(meqn,1-mbc:maxm+mbc)
42 real(kind=8) :: gaddm(meqn,1-mbc:maxm+mbc,2)
43 real(kind=8) :: gaddp(meqn,1-mbc:maxm+mbc,2)
46 real(kind=8) :: q1d(meqn,1-mbc:maxm+mbc)
47 real(kind=8) :: aux1(maux,1-mbc:maxm+mbc)
48 real(kind=8) :: aux2(maux,1-mbc:maxm+mbc)
49 real(kind=8) :: aux3(maux,1-mbc:maxm+mbc)
50 real(kind=8) :: dtdx1d(1-mbc:maxm+mbc)
51 real(kind=8) :: dtdy1d(1-mbc:maxm+mbc)
53 real(kind=8) :: wave(meqn,
mwaves, 1-mbc:maxm+mbc)
54 real(kind=8) :: s(
mwaves, 1-mbc:maxm + mbc)
55 real(kind=8) :: amdq(meqn,1-mbc:maxm + mbc)
56 real(kind=8) :: apdq(meqn,1-mbc:maxm + mbc)
57 real(kind=8) :: cqxx(meqn,1-mbc:maxm + mbc)
58 real(kind=8) :: bmadq(meqn,1-mbc:maxm + mbc)
59 real(kind=8) :: bpadq(meqn,1-mbc:maxm + mbc)
62 integer :: i,j,thread_num
63 real(kind=8) :: dtdx,dtdy,cfl1d
67 real(kind=8) :: dtcom,dxcom,dycom,tcom
68 common /comxyt/ dtcom,dxcom,dycom,tcom,icom,jcom
88 q1d(:,1-mbc:mx+mbc) = qold(:,1-mbc:mx+mbc,j)
92 dtdx1d(1-mbc:mx+mbc) = dtdx / aux(
mcapa,1-mbc:mx+mbc,j)
99 aux1(:,1-mbc:mx+mbc) = aux(:,1-mbc:mx+mbc,j-1)
100 aux2(:,1-mbc:mx+mbc) = aux(:,1-mbc:mx+mbc,j )
101 aux3(:,1-mbc:mx+mbc) = aux(:,1-mbc:mx+mbc,j+1)
108 call flux2(1,maxm,meqn,maux,mbc,mx,q1d,dtdx1d,aux1,aux2,aux3, &
109 faddm,faddp,gaddm,gaddp,cfl1d,wave,s, &
110 amdq,apdq,cqxx,bmadq,bpadq,
rpn2,rpt2)
112 cflgrid = max(cflgrid,cfl1d)
117 fm(:,1:mx+1,j) = fm(:,1:mx+1,j) + faddm(:,1:mx+1)
118 fp(:,1:mx+1,j) = fp(:,1:mx+1,j) + faddp(:,1:mx+1)
119 gm(:,1:mx+1,j) = gm(:,1:mx+1,j) + gaddm(:,1:mx+1,1)
120 gp(:,1:mx+1,j) = gp(:,1:mx+1,j) + gaddp(:,1:mx+1,1)
121 gm(:,1:mx+1,j+1) = gm(:,1:mx+1,j+1) + gaddm(:,1:mx+1,2)
122 gp(:,1:mx+1,j+1) = gp(:,1:mx+1,j+1) + gaddp(:,1:mx+1,2)
132 q1d(:,1-mbc:my+mbc) = qold(:,i,1-mbc:my+mbc)
136 dtdy1d(1-mbc:my+mbc) = dtdy / aux(
mcapa,i,1-mbc:my+mbc)
142 if (maux .gt. 0)
then 143 aux1(:,1-mbc:my+mbc) = aux(:,i-1,1-mbc:my+mbc)
144 aux2(:,1-mbc:my+mbc) = aux(:,i,1-mbc:my+mbc)
145 aux3(:,1-mbc:my+mbc) = aux(:,i+1,1-mbc:my+mbc)
152 call flux2(2,maxm,meqn,maux,mbc,my,q1d,dtdy1d,aux1,aux2,aux3, &
153 faddm,faddp,gaddm,gaddp,cfl1d,wave,s,amdq,apdq,cqxx, &
154 bmadq,bpadq,
rpn2,rpt2)
156 cflgrid = max(cflgrid,cfl1d)
159 gm(:,i,1:my+1) = gm(:,i,1:my+1) + faddm(:,1:my+1)
160 gp(:,i,1:my+1) = gp(:,i,1:my+1) + faddp(:,1:my+1)
161 fm(:,i,1:my+1) = fm(:,i,1:my+1) + gaddm(:,1:my+1,1)
162 fp(:,i,1:my+1) = fp(:,i,1:my+1) + gaddp(:,1:my+1,1)
163 fm(:,i+1,1:my+1) = fm(:,i+1,1:my+1) + gaddm(:,1:my+1,2)
164 fp(:,i+1,1:my+1) = fp(:,i+1,1:my+1) + gaddp(:,1:my+1,2)
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...