38template<
typename T>
inline T
minmod(
const T& a,
const T& b) {
42 else if (fabs(a) < fabs(b))
return a;
46template<
typename T>
inline T
minmod(
const T&
left,
const T& cent,
const T& rght) {
48 const T val1 = cent-
left;
49 const T val2 = rght-cent;
50 return HALF*(
sign(val1)+
sign(val2))*std::min(fabs(val1),fabs(val2));
57 const T forw =
right-cent;
58 const T back = cent-
left;
62 return minmod(slope1,slope2);
68 const T back = cent-
left;
69 const T forw =
right-cent;
70 T tmp = std::min(fabs(back),fabs(forw));
71 tmp = std::min(tmp,
HALF*std::max(fabs(back),fabs(forw)));
76 static constexpr T EPSILON = std::numeric_limits<T>::min();
77 static constexpr T
ZERO = 0.0;
78 static constexpr T
TWO = 2.0;
80 const T numerator = std::max((
right - cent) * (cent -
left),
ZERO);
82 return fabs(denumerator) < EPSILON ?
ZERO :
TWO * numerator / denumerator;
85template<
typename T>
inline T
limiter(
const T&
left,
const T& cent,
const T& rght) {
T vanLeer(const T &left, const T ¢, const T &right)
T limiter(const T &left, const T ¢, const T &rght)
T MClimiter(const T &left, const T ¢, const T &right)
T superbee(const T &left, const T ¢, const T &right)
T minmod(const T &a, const T &b)