Alamo
VanLeer.H
Go to the documentation of this file.
1#ifndef NUMERIC_ADVECT_LIMITER_VANLEER_H
2#define NUMERIC_ADVECT_LIMITER_VANLEER_H
3
4#include "IO/ParmParse.H"
5#include "Util/Util.H"
6
7namespace Numeric
8{
9namespace Advect
10{
11namespace Limiter
12{
14{
15public:
16 static constexpr const char* name = "vanleer";
17
18 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
20 {
21 Set::Scalar dl = mid - lo;
22 Set::Scalar dr = hi - mid;
23 if (dl * dr <= Set::Scalar(0.0)) return Set::Scalar(0.0);
24 Set::Scalar r = dl / dr;
25 Set::Scalar phi = (r + Util::Abs(r)) / (Set::Scalar(1.0) + Util::Abs(r));
26 return phi * dr;
27 }
28
29 void Parse(VanLeer & /*value*/, IO::ParmParse &/*pp*/) {}
30};
31}
32}
33}
34
35#endif
void Parse(VanLeer &, IO::ParmParse &)
Definition VanLeer.H:29
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar operator()(Set::Scalar lo, Set::Scalar mid, Set::Scalar hi) const
Definition VanLeer.H:19
static constexpr const char * name
Definition VanLeer.H:16
This namespace contains some numerical tools.
Definition Advect.H:14
amrex::Real Scalar
Definition Base.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T Abs(T a)
Definition Util.H:362