58template<
class LimiterFunc>
75 <<
"coefficient = " << k_
76 <<
" should be >= 0 and <= 1"
81 twoByk_ = 2.0/
max(k_, SMALL);
86 const scalar cdWeight,
87 const scalar faceFlux,
88 const typename LimiterFunc::phiType& phiP,
89 const typename LimiterFunc::phiType& phiN,
90 const typename LimiterFunc::gradPhiType& gradcP,
91 const typename LimiterFunc::gradPhiType& gradcN,
95 scalar twor = twoByk_*LimiterFunc::r
97 faceFlux, phiP, phiN, gradcP, gradcN, d
113 cdWeight*(phiP - 0.25*(d & gradcN))
114 + (1 - cdWeight)*(phiN + 0.25*(d & gradcP));
116 scalar phiCD = cdWeight*phiP + (1 - cdWeight)*phiN;
119 scalar cubicLimiter = (phif - phiU)/
stabilise(phiCD - phiU, SMALL);
131 return clamp(
min(twor, cubicLimiter), 0, 2);
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
limitedCubicLimiter(Istream &is)
scalar limiter(const scalar cdWeight, const scalar faceFlux, const typename LimiterFunc::phiType &phiP, const typename LimiterFunc::phiType &phiN, const typename LimiterFunc::gradPhiType &gradcP, const typename LimiterFunc::gradPhiType &gradcN, const vector &d) const
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionSet clamp(const dimensionSet &a, const dimensionSet &range)
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
dimensionedScalar stabilise(const dimensionedScalar &x, const dimensionedScalar &y)
errorManipArg< error, int > exit(error &err, const int errNo=1)