1 subroutine step2(maxm,meqn,maux,mbc,mx,my,qold,aux,dx,dy,dt,cflgrid,fm,fp,gm,gp,rpn2,rpt2)
23 integer,
intent(in) :: maxm,meqn,maux,mbc,mx,my
24 real(kind=8),
intent(in) :: dx,dy,dt
25 real(kind=8),
intent(inout) :: cflgrid
26 real(kind=8),
intent(inout) :: qold(meqn, 1-mbc:mx+mbc, 1-mbc:my+mbc)
27 real(kind=8),
intent(inout) :: aux(maux,1-mbc:mx+mbc, 1-mbc:my+mbc)
28 real(kind=8),
intent(inout) :: fm(meqn, 1-mbc:mx+mbc, 1-mbc:my+mbc)
29 real(kind=8),
intent(inout) :: fp(meqn,1-mbc:mx+mbc, 1-mbc:my+mbc)
30 real(kind=8),
intent(inout) :: gm(meqn,1-mbc:mx+mbc, 1-mbc:my+mbc)
31 real(kind=8),
intent(inout) :: gp(meqn,1-mbc:mx+mbc, 1-mbc:my+mbc)
34 real(kind=8) :: faddm(meqn,1-mbc:maxm+mbc)
35 real(kind=8) :: faddp(meqn,1-mbc:maxm+mbc)
36 real(kind=8) :: gaddm(meqn,1-mbc:maxm+mbc,2)
37 real(kind=8) :: gaddp(meqn,1-mbc:maxm+mbc,2)
40 real(kind=8) :: q1d(meqn,1-mbc:maxm+mbc)
41 real(kind=8) :: aux1(maux,1-mbc:maxm+mbc)
42 real(kind=8) :: aux2(maux,1-mbc:maxm+mbc)
43 real(kind=8) :: aux3(maux,1-mbc:maxm+mbc)
44 real(kind=8) :: dtdx1d(1-mbc:maxm+mbc)
45 real(kind=8) :: dtdy1d(1-mbc:maxm+mbc)
47 real(kind=8) :: wave(meqn,
mwaves, 1-mbc:maxm+mbc)
48 real(kind=8) :: s(
mwaves, 1-mbc:maxm + mbc)
49 real(kind=8) :: amdq(meqn,1-mbc:maxm + mbc)
50 real(kind=8) :: apdq(meqn,1-mbc:maxm + mbc)
51 real(kind=8) :: cqxx(meqn,1-mbc:maxm + mbc)
52 real(kind=8) :: bmadq(meqn,1-mbc:maxm + mbc)
53 real(kind=8) :: bpadq(meqn,1-mbc:maxm + mbc)
56 integer :: i,j,thread_num
57 real(kind=8) :: dtdx,dtdy,cfl1d
61 real(kind=8) :: dtcom,dxcom,dycom,tcom
62 common /comxyt/ dtcom,dxcom,dycom,tcom,icom,jcom
96 q1d(:,1-mbc:mx+mbc) = qold(:,1-mbc:mx+mbc,j)
100 dtdx1d(1-mbc:mx+mbc) = dtdx / aux(
mcapa,1-mbc:mx+mbc,j)
107 aux1(:,1-mbc:mx+mbc) = aux(:,1-mbc:mx+mbc,j-1)
108 aux2(:,1-mbc:mx+mbc) = aux(:,1-mbc:mx+mbc,j )
109 aux3(:,1-mbc:mx+mbc) = aux(:,1-mbc:mx+mbc,j+1)
117 call flux2(1,maxm,meqn,maux,mbc,mx,q1d,dtdx1d,aux1,aux2,aux3, &
118 faddm,faddp,gaddm,gaddp,cfl1d,wave,s, &
119 amdq,apdq,cqxx,bmadq,bpadq,
rpn2,rpt2)
122 cflgrid = max(cflgrid,cfl1d)
129 fm(:,1:mx+1,j) = fm(:,1:mx+1,j) + faddm(:,1:mx+1)
130 fp(:,1:mx+1,j) = fp(:,1:mx+1,j) + faddp(:,1:mx+1)
131 gm(:,1:mx+1,j) = gm(:,1:mx+1,j) + gaddm(:,1:mx+1,1)
132 gp(:,1:mx+1,j) = gp(:,1:mx+1,j) + gaddp(:,1:mx+1,1)
133 gm(:,1:mx+1,j+1) = gm(:,1:mx+1,j+1) + gaddm(:,1:mx+1,2)
134 gp(:,1:mx+1,j+1) = gp(:,1:mx+1,j+1) + gaddp(:,1:mx+1,2)
154 q1d(:,1-mbc:my+mbc) = qold(:,i,1-mbc:my+mbc)
158 dtdy1d(1-mbc:my+mbc) = dtdy / aux(
mcapa,i,1-mbc:my+mbc)
164 if (maux .gt. 0)
then 165 aux1(:,1-mbc:my+mbc) = aux(:,i-1,1-mbc:my+mbc)
166 aux2(:,1-mbc:my+mbc) = aux(:,i,1-mbc:my+mbc)
167 aux3(:,1-mbc:my+mbc) = aux(:,i+1,1-mbc:my+mbc)
175 call flux2(2,maxm,meqn,maux,mbc,my,q1d,dtdy1d,aux1,aux2,aux3, &
176 faddm,faddp,gaddm,gaddp,cfl1d,wave,s,amdq,apdq,cqxx, &
177 bmadq,bpadq,
rpn2,rpt2)
180 cflgrid = max(cflgrid,cfl1d)
187 gm(:,i,1:my+1) = gm(:,i,1:my+1) + faddm(:,1:my+1)
188 gp(:,i,1:my+1) = gp(:,i,1:my+1) + faddp(:,1:my+1)
189 fm(:,i,1:my+1) = fm(:,i,1:my+1) + gaddm(:,1:my+1,1)
190 fp(:,i,1:my+1) = fp(:,i,1:my+1) + gaddp(:,1:my+1,1)
191 fm(:,i+1,1:my+1) = fm(:,i+1,1:my+1) + gaddm(:,1:my+1,2)
192 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.
subroutine step2(maxm, meqn, maux, mbc, mx, my, qold, aux, dx, dy, dt, cflgrid, fm, fp, gm, gp, rpn2, rpt2)
Compute all fluxes at cell edges.
The module contains the definition of a "node descriptor" as well as other global variables used duri...