Loading...
Searching...
No Matches
limitedLinear.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011-2015 OpenFOAM Foundation
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::limitedLinearLimiter
28
29Group
30 grpFvLimitedSurfaceInterpolationSchemes
31
32Description
33 Class with limiter function which returns the limiter for the
34 TVD limited linear differencing scheme based on r obtained from the
35 LimiterFunc class.
36
37 Used in conjunction with the template class LimitedScheme.
38
39SourceFiles
40 limitedLinear.C
41
42\*---------------------------------------------------------------------------*/
43
44#ifndef limitedLinear_H
45#define limitedLinear_H
46
47#include "vector.H"
48
49// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50
51namespace Foam
52{
53
54/*---------------------------------------------------------------------------*\
55 Class limitedLinearLimiter Declaration
56\*---------------------------------------------------------------------------*/
57
58template<class LimiterFunc>
60:
61 public LimiterFunc
62{
63 scalar k_;
64 scalar twoByk_;
65
66public:
67
69 :
70 k_(readScalar(is))
71 {
72 if (k_ < 0 || k_ > 1)
73 {
75 << "coefficient = " << k_
76 << " should be >= 0 and <= 1"
78 }
80 // Avoid the /0 when k_ = 0
81 twoByk_ = 2.0/max(k_, SMALL);
82 }
83
84 scalar limiter
85 (
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,
92 const vector& d
93 ) const
94 {
95 scalar r = LimiterFunc::r
96 (
97 faceFlux, phiP, phiN, gradcP, gradcN, d
98 );
99
100 return clamp(twoByk_*r, zero_one{});
101 }
102};
103
104
105// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106
107} // End namespace Foam
108
109// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
110
111#endif
112
113// ************************************************************************* //
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition Istream.H:60
limitedLinearLimiter(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
Represents 0/1 range or concept. Used for tagged dispatch or clamping.
Definition pTraits.H:51
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Definition error.H:629
Namespace for OpenFOAM.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Definition hashSets.C:40
dimensionSet clamp(const dimensionSet &a, const dimensionSet &range)
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
Vector< scalar > vector
Definition vector.H:57
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition errorManip.H:125