CMULES.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) 2013-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
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 
26 Global
27  MULES
28 
29 Description
30  CMULES: Multidimensional universal limiter for
31  explicit corrected implicit solution.
32 
33  Solve a convective-only transport equation using an explicit universal
34  multi-dimensional limiter to correct an implicit conservative bounded
35  obtained using rigorously bounded schemes such as Euler-implicit in time
36  upwind in space.
37 
38  Parameters are the variable to solve, the normal convective flux and the
39  actual explicit flux of the variable which is also used to return limited
40  flux used in the bounded-solution.
41 
42 SourceFiles
43  CMULESTemplates.C
44 
45 \*---------------------------------------------------------------------------*/
46 
47 #ifndef CMULES_H
48 #define CMULES_H
49 
50 #include "MULES.H"
51 #include "EulerDdtScheme.H"
52 #include "localEulerDdtScheme.H"
53 #include "gaussConvectionScheme.H"
54 
55 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
56 
57 namespace Foam
58 {
59 namespace MULES
60 {
61 
62 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
63 
64 template<class RdeltaTType, class RhoType, class SpType, class SuType>
65 void correct
66 (
67  const RdeltaTType& rDeltaT,
68  const RhoType& rho,
70  const surfaceScalarField& phiCorr,
71  const SpType& Sp,
72  const SuType& Su
73 );
74 
75 template<class RhoType>
76 void correct
77 (
78  const RhoType& rho,
80  const surfaceScalarField& phiCorr
81 );
82 
83 template<class RhoType, class SpType, class SuType>
84 void correct
85 (
86  const RhoType& rho,
88  const surfaceScalarField& phiCorr,
89  const SpType& Sp,
90  const SuType& Su
91 );
92 
93 template<class RhoType, class PsiMaxType, class PsiMinType>
94 void correct
95 (
96  const RhoType& rho,
98  const surfaceScalarField& phi,
99  surfaceScalarField& phiCorr,
100  const PsiMaxType& psiMax,
101  const PsiMinType& psiMin
102 );
103 
104 template
105 <
106  class RhoType,
107  class SpType,
108  class SuType,
109  class PsiMaxType,
110  class PsiMinType
111 >
112 void correct
113 (
114  const RhoType& rho,
116  const surfaceScalarField& phi,
117  surfaceScalarField& phiCorr,
118  const SpType& Sp,
119  const SuType& Su,
120  const PsiMaxType& psiMax,
121  const PsiMinType& psiMin
122 );
123 
124 template
125 <
126  class RdeltaTType,
127  class RhoType,
128  class SpType,
129  class SuType,
130  class PsiMaxType,
131  class PsiMinType
132 >
133 void limiterCorr
134 (
135  scalarField& allLambda,
136  const RdeltaTType& rDeltaT,
137  const RhoType& rho,
138  const volScalarField& psi,
139  const surfaceScalarField& phi,
140  const surfaceScalarField& phiCorr,
141  const SpType& Sp,
142  const SuType& Su,
143  const PsiMaxType& psiMax,
144  const PsiMinType& psiMin
145 );
146 
147 
148 template
149 <
150  class RdeltaTType,
151  class RhoType,
152  class SpType,
153  class SuType,
154  class PsiMaxType,
155  class PsiMinType
156 >
157 void limitCorr
158 (
159  const RdeltaTType& rDeltaT,
160  const RhoType& rho,
161  const volScalarField& psi,
162  const surfaceScalarField& phi,
163  surfaceScalarField& phiCorr,
164  const SpType& Sp,
165  const SuType& Su,
166  const PsiMaxType& psiMax,
167  const PsiMinType& psiMin
168 );
169 
170 
171 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 
173 } // End namespace MULES
174 } // End namespace Foam
175 
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
177 
178 #ifdef NoRepository
179  #include "CMULESTemplates.C"
180 #endif
181 
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
183 
184 #endif
185 
186 // ************************************************************************* //
Sp
zeroField Sp
Definition: alphaSuSp.H:2
CMULESTemplates.C
rho
rho
Definition: readInitialConditions.H:88
Su
zeroField Su
Definition: alphaSuSp.H:1
localEulerDdtScheme.H
Foam::Field< scalar >
EulerDdtScheme.H
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::MULES::correct
void correct(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &phiCorr, const SpType &Sp, const SuType &Su)
Definition: CMULESTemplates.C:40
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
gaussConvectionScheme.H
Foam::MULES::limiterCorr
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)
Definition: CMULESTemplates.C:204
Foam::MULES::limitCorr
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)
Definition: CMULESTemplates.C:580
Foam::GeometricField< scalar, fvPatchField, volMesh >
MULES.H
MULES: Multidimensional universal limiter for explicit solution.
psi
const volScalarField & psi
Definition: createFieldRefs.H:1