mixtureKEpsilon.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  Copyright (C) 2019-2020 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::RASModels::mixtureKEpsilon
29 
30 Group
31  grpRASTurbulence
32 
33 Description
34  Mixture k-epsilon turbulence model for two-phase gas-liquid systems
35 
36  The basic structure of the model is based on:
37  \verbatim
38  Behzadi, A., Issa, R. I., & Rusche, H. (2004).
39  Modelling of dispersed bubble and droplet flow at high phase fractions.
40  Chemical Engineering Science, 59(4), 759-770.
41  \endverbatim
42 
43  but an effective density for the gas is used in the averaging and an
44  alternative model for bubble-generated turbulence from:
45  \verbatim
46  Lahey Jr, R. T. (2005).
47  The simulation of multidimensional multiphase flows.
48  Nuclear Engineering and Design, 235(10), 1043-1060.
49  \endverbatim
50 
51  The default model coefficients are
52  \verbatim
53  mixtureKEpsilonCoeffs
54  {
55  Cmu 0.09;
56  C1 1.44;
57  C2 1.92;
58  C3 C2;
59  sigmak 1.0;
60  sigmaEps 1.3;
61  }
62  \endverbatim
63 
64 SourceFiles
65  mixtureKEpsilon.C
66 
67 \*---------------------------------------------------------------------------*/
68 
69 #ifndef mixtureKEpsilon_H
70 #define mixtureKEpsilon_H
71 
72 #include "RASModel.H"
73 #include "eddyViscosity.H"
74 
75 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
76 
77 namespace Foam
78 {
79 namespace RASModels
80 {
81 
82 /*---------------------------------------------------------------------------*\
83  Class mixtureKEpsilon Declaration
84 \*---------------------------------------------------------------------------*/
85 
86 template<class BasicTurbulenceModel>
87 class mixtureKEpsilon
88 :
89  public eddyViscosity<RASModel<BasicTurbulenceModel>>
90 {
91  // Private data
92 
93  mutable mixtureKEpsilon<BasicTurbulenceModel> *liquidTurbulencePtr_;
94 
95 
96  // Private Member Functions
97 
98  //- No copy construct
99  mixtureKEpsilon(const mixtureKEpsilon&) = delete;
100 
101  //- No copy assignment
102  void operator=(const mixtureKEpsilon&) = delete;
103 
104  //- Return the turbulence model for the other phase
105  mixtureKEpsilon<BasicTurbulenceModel>& liquidTurbulence() const;
106 
107 
108 protected:
109 
110  // Protected data
111 
112  // Model coefficients
113 
121 
122  // Fields
123 
126 
127  // Mixture fields
128 
133 
134 
135  // Protected Member Functions
136 
138 
139  void correctInletOutlet
140  (
141  volScalarField& vsf,
142  const volScalarField& refVsf
143  ) const;
144 
145  void initMixtureFields();
146 
147  virtual void correctNut();
148 
149  tmp<volScalarField> Ct2() const;
150 
153  tmp<volScalarField> rhom() const;
154 
156  (
157  const volScalarField& fc,
158  const volScalarField& fd
159  ) const;
160 
162  (
163  const volScalarField& fc,
164  const volScalarField& fd
165  ) const;
166 
168  (
169  const surfaceScalarField& fc,
170  const surfaceScalarField& fd
171  ) const;
172 
174  virtual tmp<fvScalarMatrix> kSource() const;
175  virtual tmp<fvScalarMatrix> epsilonSource() const;
176 
177  //- Return the effective diffusivity for k
178  tmp<volScalarField> DkEff(const volScalarField& nutm) const
179  {
180  return tmp<volScalarField>
181  (
182  new volScalarField
183  (
184  "DkEff",
185  nutm/sigmak_
186  )
187  );
188  }
189 
190  //- Return the effective diffusivity for epsilon
192  {
193  return tmp<volScalarField>
194  (
195  new volScalarField
196  (
197  "DepsilonEff",
198  nutm/sigmaEps_
199  )
200  );
201  }
202 
203 public:
204 
205  typedef typename BasicTurbulenceModel::alphaField alphaField;
206  typedef typename BasicTurbulenceModel::rhoField rhoField;
207  typedef typename BasicTurbulenceModel::transportModel transportModel;
208 
209 
210  //- Runtime type information
211  TypeName("mixtureKEpsilon");
212 
213 
214  // Constructors
215 
216  //- Construct from components
218  (
219  const alphaField& alpha,
220  const rhoField& rho,
221  const volVectorField& U,
222  const surfaceScalarField& alphaRhoPhi,
223  const surfaceScalarField& phi,
224  const transportModel& transport,
225  const word& propertiesName = turbulenceModel::propertiesName,
226  const word& type = typeName
227  );
228 
229 
230  //- Destructor
231  virtual ~mixtureKEpsilon() = default;
232 
233 
234  // Member Functions
235 
236  //- Re-read model coefficients if they have changed
237  virtual bool read();
238 
239  //- Return the turbulence kinetic energy
240  virtual tmp<volScalarField> k() const
241  {
242  return k_;
243  }
244 
245  //- Return the turbulence kinetic energy dissipation rate
246  virtual tmp<volScalarField> epsilon() const
247  {
248  return epsilon_;
249  }
250 
251  //- Return the (estimated) specific dissipation rate
252  virtual tmp<volScalarField> omega() const
253  {
255  (
256  IOobject
257  (
258  IOobject::groupName("omega", this->alphaRhoPhi_.group()),
259  this->runTime_.timeName(),
260  this->mesh_
261  ),
262  epsilon_/(Cmu_*k_)
263  );
264  }
265 
266  //- Solve the turbulence equations and correct the turbulence viscosity
267  virtual void correct();
268 };
269 
270 
271 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
272 
273 } // End namespace RASModels
274 } // End namespace Foam
275 
276 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
277 
278 #ifdef NoRepository
279  #include "mixtureKEpsilon.C"
280 #endif
281 
282 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
283 
284 #endif
285 
286 // ************************************************************************* //
Foam::RASModels::mixtureKEpsilon::mixFlux
tmp< surfaceScalarField > mixFlux(const surfaceScalarField &fc, const surfaceScalarField &fd) const
Definition: mixtureKEpsilon.C:468
Foam::RASModels::mixtureKEpsilon::mix
tmp< volScalarField > mix(const volScalarField &fc, const volScalarField &fd) const
Definition: mixtureKEpsilon.C:438
Foam::IOobject
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:104
Foam::RASModels::mixtureKEpsilon::rhoField
BasicTurbulenceModel::rhoField rhoField
Definition: mixtureKEpsilon.H:205
Foam::RASModels::mixtureKEpsilon::mixU
tmp< volScalarField > mixU(const volScalarField &fc, const volScalarField &fd) const
Definition: mixtureKEpsilon.C:452
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::RASModels::mixtureKEpsilon::km_
autoPtr< volScalarField > km_
Definition: mixtureKEpsilon.H:130
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::RASModels::mixtureKEpsilon::initMixtureFields
void initMixtureFields()
Definition: mixtureKEpsilon.C:225
Foam::RASModels::mixtureKEpsilon::correctInletOutlet
void correctInletOutlet(volScalarField &vsf, const volScalarField &refVsf) const
Definition: mixtureKEpsilon.C:198
Foam::constant::atomic::alpha
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
Definition: readThermalProperties.H:212
Foam::RASModels::mixtureKEpsilon::epsilonBoundaryTypes
wordList epsilonBoundaryTypes(const volScalarField &epsilon) const
Definition: mixtureKEpsilon.C:176
Foam::RASModels::mixtureKEpsilon::bubbleG
tmp< volScalarField > bubbleG() const
Definition: mixtureKEpsilon.C:489
Foam::RASModels::mixtureKEpsilon::correct
virtual void correct()
Solve the turbulence equations and correct the turbulence viscosity.
Definition: mixtureKEpsilon.C:541
Foam::turbulenceModel::propertiesName
static const word propertiesName
Default name of the turbulence properties dictionary.
Definition: turbulenceModel.H:100
Foam::RASModels::mixtureKEpsilon::Cmu_
dimensionedScalar Cmu_
Definition: mixtureKEpsilon.H:113
Foam::RASModels::mixtureKEpsilon::k
virtual tmp< volScalarField > k() const
Return the turbulence kinetic energy.
Definition: mixtureKEpsilon.H:239
Foam::RASModels::mixtureKEpsilon::correctNut
virtual void correctNut()
Definition: mixtureKEpsilon.C:336
Foam::RASModels::mixtureKEpsilon::transportModel
BasicTurbulenceModel::transportModel transportModel
Definition: mixtureKEpsilon.H:206
rho
rho
Definition: readInitialConditions.H:88
Foam::RASModels::mixtureKEpsilon::epsilonSource
virtual tmp< fvScalarMatrix > epsilonSource() const
Definition: mixtureKEpsilon.C:534
Foam::RASModels::mixtureKEpsilon::rhom
tmp< volScalarField > rhom() const
Definition: mixtureKEpsilon.C:427
eddyViscosity.H
Foam::RASModels::mixtureKEpsilon::epsilonm_
autoPtr< volScalarField > epsilonm_
Definition: mixtureKEpsilon.H:131
Foam::RASModels::mixtureKEpsilon::C1_
dimensionedScalar C1_
Definition: mixtureKEpsilon.H:114
Foam::RASModels::mixtureKEpsilon
Mixture k-epsilon turbulence model for two-phase gas-liquid systems.
Definition: mixtureKEpsilon.H:86
Foam::RASModels::mixtureKEpsilon::k_
volScalarField k_
Definition: mixtureKEpsilon.H:123
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::RASModels::mixtureKEpsilon::Ct2_
autoPtr< volScalarField > Ct2_
Definition: mixtureKEpsilon.H:128
Foam::RASModels::mixtureKEpsilon::rholEff
tmp< volScalarField > rholEff() const
Definition: mixtureKEpsilon.C:405
Foam::RASModels::mixtureKEpsilon::sigmak_
dimensionedScalar sigmak_
Definition: mixtureKEpsilon.H:118
Foam::RASModels::mixtureKEpsilon::DepsilonEff
tmp< volScalarField > DepsilonEff(const volScalarField &nutm) const
Return the effective diffusivity for epsilon.
Definition: mixtureKEpsilon.H:190
RASModel.H
Foam::RASModels::mixtureKEpsilon::omega
virtual tmp< volScalarField > omega() const
Return the (estimated) specific dissipation rate.
Definition: mixtureKEpsilon.H:251
Foam::dimensioned< scalar >
Foam::RASModels::mixtureKEpsilon::Ct2
tmp< volScalarField > Ct2() const
Definition: mixtureKEpsilon.C:378
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::RASModels::mixtureKEpsilon::rhom_
autoPtr< volScalarField > rhom_
Definition: mixtureKEpsilon.H:129
Foam::RASModels::mixtureKEpsilon::read
virtual bool read()
Re-read model coefficients if they have changed.
Definition: mixtureKEpsilon.C:316
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::RASModels::mixtureKEpsilon::epsilon
virtual tmp< volScalarField > epsilon() const
Return the turbulence kinetic energy dissipation rate.
Definition: mixtureKEpsilon.H:245
U
U
Definition: pEqn.H:72
Foam::RASModels::mixtureKEpsilon::rhogEff
tmp< volScalarField > rhogEff() const
Definition: mixtureKEpsilon.C:414
Foam::RASModels::mixtureKEpsilon::~mixtureKEpsilon
virtual ~mixtureKEpsilon()=default
Destructor.
Foam::List< word >
Foam::type
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: MSwindows.C:590
Foam::RASModels::mixtureKEpsilon::epsilon_
volScalarField epsilon_
Definition: mixtureKEpsilon.H:124
Foam::RASModels::mixtureKEpsilon::C2_
dimensionedScalar C2_
Definition: mixtureKEpsilon.H:115
Foam::RASModels::mixtureKEpsilon::DkEff
tmp< volScalarField > DkEff(const volScalarField &nutm) const
Return the effective diffusivity for k.
Definition: mixtureKEpsilon.H:177
Foam::tmp::New
static tmp< T > New(Args &&... args)
Construct tmp of T with forwarding arguments.
Foam::RASModels::mixtureKEpsilon::kSource
virtual tmp< fvScalarMatrix > kSource() const
Definition: mixtureKEpsilon.C:527
Foam::eddyViscosity
Eddy viscosity turbulence model base class.
Definition: eddyViscosity.H:55
Foam::RASModels::mixtureKEpsilon::C3_
dimensionedScalar C3_
Definition: mixtureKEpsilon.H:116
Foam::IOobject::groupName
static word groupName(StringType base, const word &group)
Create dot-delimited name.group string.
Foam::RASModels::mixtureKEpsilon::alphaField
BasicTurbulenceModel::alphaField alphaField
Definition: mixtureKEpsilon.H:204
Foam::GeometricField< scalar, fvPatchField, volMesh >
Foam::RASModels::mixtureKEpsilon::sigmaEps_
dimensionedScalar sigmaEps_
Definition: mixtureKEpsilon.H:119
mixtureKEpsilon.C
Foam::RASModels::mixtureKEpsilon::TypeName
TypeName("mixtureKEpsilon")
Runtime type information.
Foam::RASModels::mixtureKEpsilon::Cp_
dimensionedScalar Cp_
Definition: mixtureKEpsilon.H:117