• VTF
  • FSI
  • AMROC
  • SFC
  • Motion
  • STLIB
  • Main Page
  • src/limiters/philim.f

    c
    c     =====================================================
          double precision function philim(a,b,meth)
    c     =====================================================
          implicit double precision(a-h,o-z)
    c
    c     # Compute a limiter based on wave strengths a and b.
    c     # meth determines what limiter is used.
    c     # a is assumed to be nonzero.
    c
          r = b/a
          go to (10,20,30,40,50) meth
    c
       10 continue
    c     --------
    c     # minmod
    c     --------
          philim = dmax1(0.d0, dmin1(1.d0, r))
          return
    c
       20 continue
    c     ----------
    c     # superbee
    c     ----------
          philim = dmax1(0.d0, dmin1(1.d0, 2.d0*r), dmin1(2.d0, r))
          return
    c
       30 continue
    c     ----------
    c     # van Leer
    c     ----------
          philim = (r + dabs(r)) / (1.d0 + dabs(r))
          return
    c
       40 continue 
    c     ------------------------------
    c     # monotinized centered 
    c     ------------------------------
          c = (1.d0 + r)/2.d0
          philim = dmax1(0.d0, dmin1(c, 2.d0, 2.d0*r))
          return
    c
       50 continue
    c     ------------------------------
    c     # van Albada
    c     ------------------------------
          philim = 1.d0
          if (dabs(r).lt.1d36)
         &     philim = dmax1(0.d0, r*(1.d0+r)/(1.d0+r**2))
          return
    c
          end
    

<