Blockstructured Adaptive Mesh Refinement in object-oriented C++
c
c
c ==========================================================
subroutine step2(maxm,maxmx,maxmy,mvar,meqn,maux,mwaves,mbc,
& mx,my,qold,aux,dx,dy,dt,method,mthlim,cfl,
& fm,fp,gm,gp,faddm,faddp,gaddm,gaddp,
& q1d,dtdx1d,dtdy1d,aux1,aux2,aux3,
& work,mwork,rpn2,rpt2)
c ==========================================================
c
c # Main entry from AMROC. Selects between the wave propagation method
c # of Randall J. LeVeque and Godunov's dimensional splitting.
c
implicit double precision (a-h,o-z)
include "call.i"
common /rpnflx/ mrpnflx
c
dimension qold(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc)
dimension fm(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc)
dimension fp(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc)
dimension gm(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc)
dimension gp(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc)
dimension q1d(1-mbc:maxm+mbc, meqn)
dimension faddm(1-mbc:maxm+mbc, meqn)
dimension faddp(1-mbc:maxm+mbc, meqn)
dimension gaddm(1-mbc:maxm+mbc, meqn, 2)
dimension gaddp(1-mbc:maxm+mbc, meqn, 2)
dimension aux(maux, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc)
dimension aux1(1-mbc:maxm+mbc, maux)
dimension aux2(1-mbc:maxm+mbc, maux)
dimension aux3(1-mbc:maxm+mbc, maux)
dimension dtdx1d(1-mbc:maxm+mbc)
dimension dtdy1d(1-mbc:maxm+mbc)
dimension method(7),mthlim(mwaves)
dimension work(mwork)
external rpn2,rpt2
c
if( method(3) .ge. 0 )then
c
c # unsplit version
c
call unsp2(maxm,maxmx,maxmy,mvar,meqn,maux,mwaves,mbc,mx,my,
& qold,aux,dx,dy,dt,method,mthlim,cfl,
& fm,fp,gm,gp,faddm,faddp,gaddm,gaddp,
& q1d,dtdx1d,dtdy1d,aux1,aux2,aux3,
& work,mwork,rpn2,rpt2)
c
else
c # dimensional splitting (fractional steps)
c
call dimsp2(maxm,maxmx,maxmy,mvar,meqn,maux,mwaves,mbc,mx,my,
& qold,aux,dx,dy,dt,method,mthlim,cfl,
& fm,fp,gm,gp,faddm,faddp,gaddm,gaddp,
& q1d,dtdx1d,dtdy1d,aux1,aux2,aux3,
& work,mwork,rpn2,rpt2)
c
endif
c
if (mrpnflx.ne.0) then
if (method(2).eq.2) then
write(6,*) '*** Riemann solver returns fluxes.'
write(6,*) '*** Wave limiting not possible.'
write(6,*) '*** Set method(2)>=3 for slope limiting.'
stop
endif
else
if (method(2).ge.3) then
write(6,*) '*** Riemann solver returns flux differences.'
write(6,*) '*** Slope limiting not possible.'
write(6,*) '*** Set method(2)=2 for wave limiting.'
stop
endif
endif
c
return
end
Quickstart Users Guide Programmers Reference Installation Examples Download
AMROC Main Home Contactlast update: 06/01/04