c
c ==================================================================
subroutine step3(mp,maxm,maxmx,maxmy,maxmz,mvar,meqn,
& maux,mwaves,mbc,mx,my,mz,
& qold,aux,dx,dy,dz,t,dt,method,mthlim,cfl,
& fm,fp,gm,gp,hm,hp,
& faddm,faddp,gaddm,gaddp,haddm,haddp,
& q1d,dtdx1d,dtdy1d,dtdz1d,
& aux1,aux2,aux3,work,mwork,rpn3,rpt3)
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"
c
dimension qold(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension fm(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension fp(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension gm(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension gp(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension hm(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension hp(mvar, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+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, -1:1)
dimension gaddp(1-mbc:maxm+mbc, meqn, 2, -1:1)
dimension haddm(1-mbc:maxm+mbc, meqn, 2, -1:1)
dimension haddp(1-mbc:maxm+mbc, meqn, 2, -1:1)
dimension aux(maux, 1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension aux1(1-mbc:maxm+mbc, maux, 3)
dimension aux2(1-mbc:maxm+mbc, maux, 3)
dimension aux3(1-mbc:maxm+mbc, maux, 3)
dimension dtdx1d(1-mbc:maxm+mbc)
dimension dtdy1d(1-mbc:maxm+mbc)
dimension dtdz1d(1-mbc:maxm+mbc)
dimension work(mwork)
dimension method(7),mthlim(mwaves)
external rpn3, rpt3
c
tcom = t
dtcom = dt
dxcom = dx
dycom = dy
dzcom = dz
mpass = mp
c
if( method(3) .ge. 0 )then
c
c # unsplit version
c
call unsp3(maxm,maxmx,maxmy,maxmz,mvar,meqn,
& maux,mwaves,mbc,mx,my,mz,
& qold,aux,dx,dy,dz,dt,method,mthlim,cfl,
& fm,fp,gm,gp,hm,hp,
& faddm,faddp,gaddm,gaddp,haddm,haddp,
& q1d,dtdx1d,dtdy1d,dtdz1d,
& aux1,aux2,aux3,work,mwork,rpn3,rpt3)
c
else
c # dimensional splitting (fractional steps)
c
call dimsp3(maxm,maxmx,maxmy,maxmz,mvar,meqn,
& maux,mwaves,mbc,mx,my,mz,
& qold,aux,dx,dy,dz,dt,method,mthlim,cfl,
& fm,fp,gm,gp,hm,hp,
& faddm,faddp,gaddm,gaddp,haddm,haddp,
& q1d,dtdx1d,dtdy1d,dtdz1d,
& aux1,aux2,aux3,work,mwork,rpn3,rpt3)
c
endif
c
return
end