Loading...
Searching...
No Matches
WALE.C
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) 2015-2017 OpenFOAM Foundation
9 Copyright (C) 2019-2023 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
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\*---------------------------------------------------------------------------*/
28
29#include "WALE.H"
30#include "fvOptions.H"
31
32// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33
34namespace Foam
36namespace LESModels
37{
38
39// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
40
41template<class BasicTurbulenceModel>
43(
44 const volTensorField& gradU
45) const
46{
47 return devSymm(gradU & gradU);
48}
49
50
51template<class BasicTurbulenceModel>
53(
54 const volTensorField& gradU
55) const
56{
57 volScalarField magSqrSd(magSqr(Sd(gradU)));
58
60 (
62 (
64 (
65 IOobject::groupName("k", this->alphaRhoPhi_.group()),
66 this->runTime_.timeName(),
67 this->mesh_
68 ),
69 sqr(sqr(Cw_)*this->delta()/Ck_)*
70 (
71 pow3(magSqrSd)
72 /(
73 sqr
74 (
75 pow(magSqr(symm(gradU)), 5.0/2.0)
76 + pow(magSqrSd, 5.0/4.0)
77 )
79 (
80 "SMALL",
81 dimensionSet(0, 0, -10, 0, 0),
82 SMALL
83 )
84 )
85 )
86 )
87 );
88}
89
90
91template<class BasicTurbulenceModel>
93{
94 this->nut_ = Ck_*this->delta()*sqrt(this->k(fvc::grad(this->U_)));
95 this->nut_.correctBoundaryConditions();
96 fv::options::New(this->mesh_).correct(this->nut_);
97
98 BasicTurbulenceModel::correctNut();
99}
100
101
102// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
103
104template<class BasicTurbulenceModel>
105WALE<BasicTurbulenceModel>::WALE
106(
107 const alphaField& alpha,
108 const rhoField& rho,
109 const volVectorField& U,
110 const surfaceScalarField& alphaRhoPhi,
111 const surfaceScalarField& phi,
112 const transportModel& transport,
113 const word& propertiesName,
114 const word& type
115)
116:
117 LESeddyViscosity<BasicTurbulenceModel>
118 (
119 type,
120 alpha,
121 rho,
122 U,
123 alphaRhoPhi,
124 phi,
125 transport,
126 propertiesName
127 ),
128
129 Ck_
130 (
131 dimensioned<scalar>::getOrAddToDict
132 (
133 "Ck",
134 this->coeffDict_,
135 0.094
136 )
137 ),
138
139 Cw_
140 (
141 dimensioned<scalar>::getOrAddToDict
142 (
143 "Cw",
144 this->coeffDict_,
145 0.325
146 )
147 )
148{
149 if (type == typeName)
150 {
151 this->printCoeffs(type);
153}
154
155
156// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
157
158template<class BasicTurbulenceModel>
160{
162 {
163 Ck_.readIfPresent(this->coeffDict());
164 Cw_.readIfPresent(this->coeffDict());
165
166 return true;
168
169 return false;
170}
171
172
173template<class BasicTurbulenceModel>
175{
176 if (!this->turbulence_)
177 {
178 return;
179 }
180
182 correctNut();
183}
184
185
186// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
187
188} // End namespace LESModels
189} // End namespace Foam
190
191// ************************************************************************* //
label k
scalar delta
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition IOobject.H:191
static word groupName(StringType base, const word &group)
Create dot-delimited name.group string.
Eddy viscosity LES SGS model base class.
virtual bool read()
Read model coefficients if they have changed.
BasicTurbulenceModel::alphaField alphaField
Definition WALE.H:124
BasicTurbulenceModel::rhoField rhoField
Definition WALE.H:125
dimensionedScalar Ck_
Definition WALE.H:96
virtual void correct()
Correct Eddy-Viscosity and related properties.
Definition WALE.C:167
tmp< volSymmTensorField > Sd(const volTensorField &gradU) const
Return the deviatoric symmetric part of the square of the given.
Definition WALE.C:36
virtual void correctNut()
Update the SGS eddy-viscosity.
Definition WALE.C:85
dimensionedScalar Cw_
Definition WALE.H:97
BasicTurbulenceModel::transportModel transportModel
Definition WALE.H:126
virtual tmp< volScalarField > k() const
Return SGS kinetic energy.
Definition WALE.H:169
virtual bool read()
Read model coefficients if they have changed.
Definition WALE.C:152
Dimension set for the base types, which can be used to implement rigorous dimension checking for alge...
Generic dimensioned Type class.
void correct(GeometricField< Type, PatchField, GeoMesh > &field)
Apply correction to field.
static options & New(const fvMesh &mesh)
Construct fvOptions and register to database if not present otherwise lookup and return.
Definition fvOptions.C:116
virtual void correct()=0
Solve the turbulence equations and correct the turbulence viscosity.
A class for managing temporary objects.
Definition tmp.H:75
Base-class for all transport models used by the incompressible turbulence models.
A class for handling words, derived from Foam::string.
Definition word.H:66
U
Definition pEqn.H:72
Namespace for LES SGS models.
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh > > grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition fvcGrad.C:47
Namespace for OpenFOAM.
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
GeometricField< vector, fvPatchField, volMesh > volVectorField
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar pow3(const dimensionedScalar &ds)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
SymmTensor< Cmpt > devSymm(const SymmTensor< Cmpt > &st)
Return the deviatoric part of the symmetric part of a SymmTensor.
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
GeometricField< tensor, fvPatchField, volMesh > volTensorField
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
volScalarField & alpha