CMULES.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Global
25  MULES
26 
27 Description
28  CMULES: Multidimensional universal limiter for
29  explicit corrected implicit solution.
30 
31  Solve a convective-only transport equation using an explicit universal
32  multi-dimensional limiter to correct an implicit conservative bounded
33  obtained using rigorously bounded schemes such as Euler-implicit in time
34  upwind in space.
35 
36  Parameters are the variable to solve, the normal convective flux and the
37  actual explicit flux of the variable which is also used to return limited
38  flux used in the bounded-solution.
39 
40 SourceFiles
41  CMULES.C
42  CMULESTemplates.C
43 
44 \*---------------------------------------------------------------------------*/
45 
46 #ifndef CMULES_H
47 #define CMULES_H
48 
49 #include "MULES.H"
50 #include "EulerDdtScheme.H"
51 #include "localEulerDdtScheme.H"
52 #include "gaussConvectionScheme.H"
53 
54 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55 
56 namespace Foam
57 {
58 namespace MULES
59 {
60 
61 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
62 
63 template<class RdeltaTType, class RhoType, class SpType, class SuType>
64 void correct
65 (
66  const RdeltaTType& rDeltaT,
67  const RhoType& rho,
69  const surfaceScalarField& phiCorr,
70  const SpType& Sp,
71  const SuType& Su
72 );
73 
74 template<class RhoType>
75 void correct
76 (
77  const RhoType& rho,
78  volScalarField& psi,
79  const surfaceScalarField& phiCorr
80 );
81 
82 template<class RhoType, class SpType, class SuType>
83 void correct
84 (
85  const RhoType& rho,
86  volScalarField& psi,
87  const surfaceScalarField& phiCorr,
88  const SpType& Sp,
89  const SuType& Su
90 );
91 
92 template<class RhoType, class PsiMaxType, class PsiMinType>
93 void correct
94 (
95  const RhoType& rho,
96  volScalarField& psi,
97  const surfaceScalarField& phi,
98  surfaceScalarField& phiCorr,
99  const PsiMaxType& psiMax,
100  const PsiMinType& psiMin
101 );
102 
103 template
104 <
105  class RhoType,
106  class SpType,
107  class SuType,
108  class PsiMaxType,
109  class PsiMinType
110 >
111 void correct
112 (
113  const RhoType& rho,
114  volScalarField& psi,
115  const surfaceScalarField& phi,
116  surfaceScalarField& phiCorr,
117  const SpType& Sp,
118  const SuType& Su,
119  const PsiMaxType& psiMax,
120  const PsiMinType& psiMin
121 );
122 
123 template
124 <
125  class RdeltaTType,
126  class RhoType,
127  class SpType,
128  class SuType,
129  class PsiMaxType,
130  class PsiMinType
131 >
132 void limiterCorr
133 (
134  scalarField& allLambda,
135  const RdeltaTType& rDeltaT,
136  const RhoType& rho,
137  const volScalarField& psi,
138  const surfaceScalarField& phi,
139  const surfaceScalarField& phiCorr,
140  const SpType& Sp,
141  const SuType& Su,
142  const PsiMaxType& psiMax,
143  const PsiMinType& psiMin
144 );
145 
146 template
147 <
148  class RdeltaTType,
149  class RhoType,
150  class SpType,
151  class SuType,
152  class PsiMaxType,
153  class PsiMinType
154 >
155 void limitCorr
156 (
157  const RdeltaTType& rDeltaT,
158  const RhoType& rho,
159  const volScalarField& psi,
160  const surfaceScalarField& phi,
161  surfaceScalarField& phiCorr,
162  const SpType& Sp,
163  const SuType& Su,
164  const PsiMaxType& psiMax,
165  const PsiMinType& psiMin
166 );
167 
168 
169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 
171 } // End namespace MULES
172 } // End namespace Foam
173 
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
175 
176 #ifdef NoRepository
177  #include "CMULESTemplates.C"
178 #endif
179 
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
181 
182 #endif
183 
184 // ************************************************************************* //
zeroField Su
Definition: alphaSuSp.H:1
surfaceScalarField & phi
void correct(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &phiCorr, const SpType &Sp, const SuType &Su)
void limiterCorr(scalarField &allLambda, const RdeltaTType &rDeltaT, const RhoType &rho, const volScalarField &psi, const surfaceScalarField &phi, const surfaceScalarField &phiCorr, const SpType &Sp, const SuType &Su, const PsiMaxType &psiMax, const PsiMinType &psiMin)
void limitCorr(const RdeltaTType &rDeltaT, const RhoType &rho, const volScalarField &psi, const surfaceScalarField &phi, surfaceScalarField &phiCorr, const SpType &Sp, const SuType &Su, const PsiMaxType &psiMax, const PsiMinType &psiMin)
MULES: Multidimensional universal limiter for explicit solution.
const volScalarField & psi
Namespace for OpenFOAM.
zeroField Sp
Definition: alphaSuSp.H:2