c c # Slope-limiting within Clawpack c # Author: Ralf Deiterding, ralf@cacr.caltech.edu c c ===================================================== double precision function slopelim(a,b,mlim) c ===================================================== c c # Call usual TVD limiter-functions with phi(b/a). c implicit double precision (a-h,o-z) c if (a.ne.0.d0.and.mlim.gt.0) then slopelim = philim(a,b,mlim) else slopelim = 1.d0 endif c return end c c c =================================================================== subroutine reclim(r,r1,r2,mlim,om,rl,rr) c =================================================================== c c # MUSCL reconstruction with slope-limiting c # Linear reconstruction: om=0.d0 c # 2nd order spatial reconstuction: om!=0.d0 c # 3rd order spatial reconstruction: om=1.d0/3.d0 c # Higher order reconstructions are not conservative! c implicit double precision (a-h,o-z) c q1 = r - r1 q2 = r2 - r sl1 = slopelim(q1,q2,mlim)*q1 sl2 = slopelim(q2,q1,mlim)*q2 rl = r - 0.25d0*((1.d0+om)*sl1 + (1.d0-om)*sl2) rr = r + 0.25d0*((1.d0-om)*sl1 + (1.d0+om)*sl2) c return end c