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