subroutine ppmlr ! Using the 1D arrays of rho, u, and P, perform a 1D lagrangian hydrodynamics evolution: ! - set boundary conditions by filling ghost zones ! - obtain parabolic interpolations of rho, u, P ! - compute input states from these interpolations for Riemann problem ! - call the Riemann solver to find the time averages umid, pmid ! - evolve the finite difference equations to get updated values of rho, u, and E ! Then perform a conservative remap back to the Eulerian grid !----------------------------------------------------------------------- ! GLOBALS use global use sweeps IMPLICIT NONE ! LOCALS REAL, DIMENSION(maxsweep) :: dr, du, dp, r6, u6, p6, rl, ul, pl REAL, DIMENSION(maxsweep) :: rrgh, urgh, prgh, rlft, ulft, plft, umid, pmid !----------------------------------------------------------------------- ! Apply boundary conditions by filling ghost zones call boundary ! Compute parabolic coefficients and volume elements call paraset( nmin-4, nmax+5, para, dx, xa ) call volume ! Calculate flattening coefficients for smoothing near shocks call flatten ! Interpolate parabolae for fluid variables call parabola(nmin-4, nmax+4, para, p, dp, p6, pl, flat) call parabola(nmin-4, nmax+4, para, r, dr, r6, rl, flat) call parabola(nmin-4, nmax+4, para, u, du, u6, ul, flat) ! Integrate parabolae to get input states for Riemann problem call states( pl, ul, rl, p6, u6, r6, dp, du, dr, plft, ulft, rlft, prgh, urgh, rrgh ) ! Call the Riemann solver to obtain the zone face averages, umid and pmid call riemann( nmin-3, nmax+4, gam, prgh, urgh, rrgh, plft, ulft, rlft, pmid, umid ) ! do lagrangian update using umid and pmid call evolve( umid, pmid ) ! remap onto original Eulerian grid call remap return end