Alamo
Koren.H
Go to the documentation of this file.
1#ifndef NUMERIC_ADVECT_LIMITER_KOREN_H
2#define NUMERIC_ADVECT_LIMITER_KOREN_H
3
4#include "IO/ParmParse.H"
5#include "Util/Util.H"
6
7namespace Numeric
8{
9namespace Advect
10{
11namespace Limiter
12{
13class Koren
14{
15public:
16 static constexpr const char* name = "koren";
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;
26 Util::Min(Set::Scalar(2.0) * r, (Set::Scalar(1.0) + Set::Scalar(2.0) * r) / Set::Scalar(3.0)),
27 Set::Scalar(2.0));
28 return Util::Max(Set::Scalar(0.0), phi) * dr;
29 }
30
31 void Parse(Koren & /*value*/, IO::ParmParse &/*pp*/) {}
32};
33}
34}
35}
36
37#endif
void Parse(Koren &, IO::ParmParse &)
Definition Koren.H:31
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar operator()(Set::Scalar lo, Set::Scalar mid, Set::Scalar hi) const
Definition Koren.H:19
static constexpr const char * name
Definition Koren.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 Min(T a, T b)
Definition Util.H:369
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T Max(T a, T b)
Definition Util.H:376