rp1_burgers.f90.html | |
Source file: rp1_burgers.f90 | |
Directory: /Users/rjl/clawpack_src/clawpack_master/apps/fvmbook/chap12/efix | |
Converted: Sat Mar 23 2024 at 11:05:50 using clawcode2html | |
This documentation file will not reflect any later changes in the source file. |
! ============================================================================= subroutine rp1(maxmx,meqn,mwaves,maux,mbc,mx,ql,qr,auxl,auxr,wave,s,amdq,apdq) ! ============================================================================= ! ! Riemann problems for the 1D Burgers' equation with entropy fix for ! transonic rarefaction. See "Finite Volume Method for Hyperbolic Problems", ! R. J. LeVeque. implicit double precision (a-h,o-z) integer :: maxmx, meqn, mwaves, mbc, mx double precision :: ql(meqn,1-mbc:maxmx+mbc) double precision :: qr(meqn,1-mbc:maxmx+mbc) double precision :: s(mwaves, 1-mbc:maxmx+mbc) double precision :: wave(meqn, mwaves, 1-mbc:maxmx+mbc) double precision :: amdq(meqn, 1-mbc:maxmx+mbc) double precision :: apdq(meqn, 1-mbc:maxmx+mbc) integer :: i logical :: efix efix = .false. !# Compute correct flux for transonic rarefactions do i=2-mbc,mx+mbc wave(1,1,i) = ql(1,i) - qr(1,i-1) s(1,i) = 0.5d0 * (qr(1,i-1) + ql(1,i)) amdq(1,i) = dmin1(s(1,i), 0.d0) * wave(1,1,i) apdq(1,i) = dmax1(s(1,i), 0.d0) * wave(1,1,i) if (efix) then if (ql(1,i).gt.0.d0 .and. qr(1,i-1).lt.0.d0) then amdq(1,i) = - 1.d0/2.d0 * qr(1,i-1)**2 apdq(1,i) = 1.d0/2.d0 * ql(1,i)**2 endif endif enddo return end subroutine