mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
DEFEATURE: deprecate v2f model in favour of kEpsilonPhitF
- kEpsilonPhitF is a kEpsilon-based model which originated
from (Durbin, 1995)’s v2-f methodology. However, the majority of
v2-f model variants proved to be numerically stiff for segregated
solution algorithms due to the coupled formulations of v2 and f fields,
particularly on wall boundaries.
The v2-f variant (i.e. OpenFOAM’s v2f model) due to
(Lien and Kalitzin, 2001) reformulated the original v2-f model to enable
segregated computations; however, a number of shortcomings regarding
the model fidelity were reported in the literature.
To overcome the shortcomings of the v2-f methodology, the v2-f approach
was re-evaluated by (Laurence et al., 2005) by transforming v2 scale into
its equivalent non-dimensional form, i.e. phit, to reduce the numerical
stiffness.
This variant, i.e. kEpsilonPhitF, is believed to provide numerical
robustness, and insensitivity to grid anomalies while retaining the
theoretical model fidelity of the original v2-f model.
Accordingly the v2f RANS model is deprecated in favour of the variant
kEpsilonPhitF model.
This commit is contained in:
committed by
Andrew Heather
parent
0ff953411b
commit
ab0dd1f1a8
@ -85,9 +85,6 @@ makeRASModel(kOmegaSSTSAS);
|
||||
#include "kOmegaSSTLM.H"
|
||||
makeRASModel(kOmegaSSTLM);
|
||||
|
||||
#include "v2f.H"
|
||||
makeRASModel(v2f);
|
||||
|
||||
#include "LRR.H"
|
||||
makeRASModel(LRR);
|
||||
|
||||
|
||||
@ -81,9 +81,6 @@ makeRASModel(kOmegaSSTSAS);
|
||||
#include "kOmegaSSTLM.H"
|
||||
makeRASModel(kOmegaSSTLM);
|
||||
|
||||
#include "v2f.H"
|
||||
makeRASModel(v2f);
|
||||
|
||||
#include "LRR.H"
|
||||
makeRASModel(LRR);
|
||||
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
turbulenceModel.C
|
||||
RAS/v2f/v2fBase.C
|
||||
RAS/kEpsilonPhitF/kEpsilonPhitFBase.C
|
||||
|
||||
LESdelta = LES/LESdeltas
|
||||
|
||||
@ -57,12 +55,6 @@ kqRWallFunctions = $(wallFunctions)/kqRWallFunctions
|
||||
$(kqRWallFunctions)/kqRWallFunction/kqRWallFunctionFvPatchFields.C
|
||||
$(kqRWallFunctions)/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C
|
||||
|
||||
v2WallFunctions = $(wallFunctions)/v2WallFunctions
|
||||
$(v2WallFunctions)/v2WallFunction/v2WallFunctionFvPatchScalarField.C
|
||||
|
||||
fWallFunctions = $(wallFunctions)/fWallFunctions
|
||||
$(fWallFunctions)/fWallFunction/fWallFunctionFvPatchScalarField.C
|
||||
|
||||
|
||||
RASBCs = RAS/derivedFvPatchFields
|
||||
|
||||
|
||||
@ -119,7 +119,6 @@ kEpsilonPhitF<BasicTurbulenceModel>::kEpsilonPhitF
|
||||
transport,
|
||||
propertiesName
|
||||
),
|
||||
kEpsilonPhitFBase(),
|
||||
|
||||
Cmu_
|
||||
(
|
||||
|
||||
@ -78,14 +78,13 @@ SourceFiles
|
||||
kEpsilonPhitF.C
|
||||
|
||||
SeeAlso
|
||||
v2f.H
|
||||
kEpsilon.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef kEpsilonPhitF_H
|
||||
#define kEpsilonPhitF_H
|
||||
|
||||
#include "kEpsilonPhitFBase.H"
|
||||
#include "RASModel.H"
|
||||
#include "eddyViscosity.H"
|
||||
|
||||
@ -103,8 +102,7 @@ namespace RASModels
|
||||
template<class BasicTurbulenceModel>
|
||||
class kEpsilonPhitF
|
||||
:
|
||||
public eddyViscosity<RASModel<BasicTurbulenceModel>>,
|
||||
public kEpsilonPhitFBase
|
||||
public eddyViscosity<RASModel<BasicTurbulenceModel>>
|
||||
{
|
||||
// Private Member Functions
|
||||
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "kEpsilonPhitFBase.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
defineTypeNameAndDebug(kEpsilonPhitFBase, 0);
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,98 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::RASModels::kEpsilonPhitFBase
|
||||
|
||||
Group
|
||||
grpRASTurbulence
|
||||
|
||||
Description
|
||||
Abstract base-class for the \c k-epsilon-phit-f model to provide boundary
|
||||
condition access to the \c phit and \c f fields.
|
||||
|
||||
See also
|
||||
Foam::RASModels::kEpsilonPhitF
|
||||
|
||||
SourceFiles
|
||||
kEpsilonPhitFBase.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef kEpsilonPhitFBase_H
|
||||
#define kEpsilonPhitFBase_H
|
||||
|
||||
#include "RASModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class kEpsilonPhitFBase Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class kEpsilonPhitFBase
|
||||
{
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("kEpsilonPhitFBase");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
kEpsilonPhitFBase()
|
||||
{}
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~kEpsilonPhitFBase()
|
||||
{}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return the normalised wall-normal fluctuating velocity scale field
|
||||
virtual tmp<volScalarField> phit() const = 0;
|
||||
|
||||
//- Return the elliptic relaxation factor field
|
||||
virtual tmp<volScalarField> f() const = 0;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,435 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2012-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "v2f.H"
|
||||
#include "fvOptions.H"
|
||||
#include "bound.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
tmp<volScalarField> v2f<BasicTurbulenceModel>::Ts() const
|
||||
{
|
||||
// SAF: limiting thermo->nu(). If psiThermo is used rho might be < 0
|
||||
// temporarily when p < 0 then nu < 0 which needs limiting
|
||||
return
|
||||
max
|
||||
(
|
||||
k_/epsilon_,
|
||||
6.0*sqrt
|
||||
(
|
||||
max
|
||||
(
|
||||
this->nu(),
|
||||
dimensionedScalar(this->nu()().dimensions(), Zero)
|
||||
)
|
||||
/ epsilon_
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
tmp<volScalarField> v2f<BasicTurbulenceModel>::Ls() const
|
||||
{
|
||||
// SAF: limiting thermo->nu(). If psiThermo is used rho might be < 0
|
||||
// temporarily when p < 0 then nu < 0 which needs limiting
|
||||
return
|
||||
CL_
|
||||
* max
|
||||
(
|
||||
pow(k_, 1.5)/epsilon_,
|
||||
Ceta_*pow025
|
||||
(
|
||||
pow3
|
||||
(
|
||||
max
|
||||
(
|
||||
this->nu(),
|
||||
dimensionedScalar(this->nu()().dimensions(), Zero)
|
||||
)
|
||||
)/epsilon_
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
void v2f<BasicTurbulenceModel>::correctNut()
|
||||
{
|
||||
this->nut_ = min(CmuKEps_*sqr(k_)/epsilon_, this->Cmu_*v2_*Ts());
|
||||
this->nut_.correctBoundaryConditions();
|
||||
fv::options::New(this->mesh_).correct(this->nut_);
|
||||
|
||||
BasicTurbulenceModel::correctNut();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
v2f<BasicTurbulenceModel>::v2f
|
||||
(
|
||||
const alphaField& alpha,
|
||||
const rhoField& rho,
|
||||
const volVectorField& U,
|
||||
const surfaceScalarField& alphaRhoPhi,
|
||||
const surfaceScalarField& phi,
|
||||
const transportModel& transport,
|
||||
const word& propertiesName,
|
||||
const word& type
|
||||
)
|
||||
:
|
||||
eddyViscosity<RASModel<BasicTurbulenceModel>>
|
||||
(
|
||||
type,
|
||||
alpha,
|
||||
rho,
|
||||
U,
|
||||
alphaRhoPhi,
|
||||
phi,
|
||||
transport,
|
||||
propertiesName
|
||||
),
|
||||
v2fBase(),
|
||||
|
||||
Cmu_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"Cmu",
|
||||
this->coeffDict_,
|
||||
0.22
|
||||
)
|
||||
),
|
||||
CmuKEps_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"CmuKEps",
|
||||
this->coeffDict_,
|
||||
0.09
|
||||
)
|
||||
),
|
||||
C1_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"C1",
|
||||
this->coeffDict_,
|
||||
1.4
|
||||
)
|
||||
),
|
||||
C2_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"C2",
|
||||
this->coeffDict_,
|
||||
0.3
|
||||
)
|
||||
),
|
||||
CL_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"CL",
|
||||
this->coeffDict_,
|
||||
0.23
|
||||
)
|
||||
),
|
||||
Ceta_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"Ceta",
|
||||
this->coeffDict_,
|
||||
70.0
|
||||
)
|
||||
),
|
||||
Ceps2_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"Ceps2",
|
||||
this->coeffDict_,
|
||||
1.9
|
||||
)
|
||||
),
|
||||
Ceps3_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"Ceps3",
|
||||
this->coeffDict_,
|
||||
-0.33
|
||||
)
|
||||
),
|
||||
sigmaK_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"sigmaK",
|
||||
this->coeffDict_,
|
||||
1.0
|
||||
)
|
||||
),
|
||||
sigmaEps_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"sigmaEps",
|
||||
this->coeffDict_,
|
||||
1.3
|
||||
)
|
||||
),
|
||||
|
||||
k_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("k", alphaRhoPhi.group()),
|
||||
this->runTime_.timeName(),
|
||||
this->mesh_,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
this->mesh_
|
||||
),
|
||||
epsilon_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("epsilon", alphaRhoPhi.group()),
|
||||
this->runTime_.timeName(),
|
||||
this->mesh_,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
this->mesh_
|
||||
),
|
||||
v2_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("v2", alphaRhoPhi.group()),
|
||||
this->runTime_.timeName(),
|
||||
this->mesh_,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
this->mesh_
|
||||
),
|
||||
f_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("f", alphaRhoPhi.group()),
|
||||
this->runTime_.timeName(),
|
||||
this->mesh_,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
this->mesh_
|
||||
),
|
||||
v2Min_(dimensionedScalar("v2Min", v2_.dimensions(), SMALL)),
|
||||
fMin_(dimensionedScalar("fMin", f_.dimensions(), Zero))
|
||||
{
|
||||
bound(k_, this->kMin_);
|
||||
bound(epsilon_, this->epsilonMin_);
|
||||
bound(v2_, v2Min_);
|
||||
bound(f_, fMin_);
|
||||
|
||||
if (type == typeName)
|
||||
{
|
||||
this->printCoeffs(type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
bool v2f<BasicTurbulenceModel>::read()
|
||||
{
|
||||
if (eddyViscosity<RASModel<BasicTurbulenceModel>>::read())
|
||||
{
|
||||
Cmu_.readIfPresent(this->coeffDict());
|
||||
CmuKEps_.readIfPresent(this->coeffDict());
|
||||
C1_.readIfPresent(this->coeffDict());
|
||||
C2_.readIfPresent(this->coeffDict());
|
||||
CL_.readIfPresent(this->coeffDict());
|
||||
Ceta_.readIfPresent(this->coeffDict());
|
||||
Ceps2_.readIfPresent(this->coeffDict());
|
||||
Ceps3_.readIfPresent(this->coeffDict());
|
||||
sigmaK_.readIfPresent(this->coeffDict());
|
||||
sigmaEps_.readIfPresent(this->coeffDict());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
void v2f<BasicTurbulenceModel>::correct()
|
||||
{
|
||||
if (!this->turbulence_)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Local references
|
||||
const alphaField& alpha = this->alpha_;
|
||||
const rhoField& rho = this->rho_;
|
||||
const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi_;
|
||||
const volVectorField& U = this->U_;
|
||||
volScalarField& nut = this->nut_;
|
||||
fv::options& fvOptions(fv::options::New(this->mesh_));
|
||||
|
||||
eddyViscosity<RASModel<BasicTurbulenceModel>>::correct();
|
||||
|
||||
volScalarField divU(fvc::div(fvc::absolute(this->phi(), U)));
|
||||
|
||||
// Use N=6 so that f=0 at walls
|
||||
const dimensionedScalar N("N", dimless, 6.0);
|
||||
|
||||
const volTensorField gradU(fvc::grad(U));
|
||||
const volScalarField S2(2*magSqr(dev(symm(gradU))));
|
||||
|
||||
const volScalarField G(this->GName(), nut*S2);
|
||||
const volScalarField Ts(this->Ts());
|
||||
const volScalarField L2(type() + ":L2", sqr(Ls()));
|
||||
const volScalarField v2fAlpha
|
||||
(
|
||||
type() + ":alpha",
|
||||
1.0/Ts*((C1_ - N)*v2_ - 2.0/3.0*k_*(C1_ - 1.0))
|
||||
);
|
||||
|
||||
const volScalarField Ceps1
|
||||
(
|
||||
"Ceps1",
|
||||
1.4*(1.0 + 0.05*min(sqrt(k_/v2_), scalar(100)))
|
||||
);
|
||||
|
||||
// Update epsilon (and possibly G) at the wall
|
||||
epsilon_.boundaryFieldRef().updateCoeffs();
|
||||
|
||||
// Dissipation equation
|
||||
tmp<fvScalarMatrix> epsEqn
|
||||
(
|
||||
fvm::ddt(alpha, rho, epsilon_)
|
||||
+ fvm::div(alphaRhoPhi, epsilon_)
|
||||
- fvm::laplacian(alpha*rho*DepsilonEff(), epsilon_)
|
||||
==
|
||||
Ceps1*alpha*rho*G/Ts
|
||||
- fvm::SuSp(((2.0/3.0)*Ceps1 + Ceps3_)*alpha*rho*divU, epsilon_)
|
||||
- fvm::Sp(Ceps2_*alpha*rho/Ts, epsilon_)
|
||||
+ fvOptions(alpha, rho, epsilon_)
|
||||
);
|
||||
|
||||
epsEqn.ref().relax();
|
||||
fvOptions.constrain(epsEqn.ref());
|
||||
epsEqn.ref().boundaryManipulate(epsilon_.boundaryFieldRef());
|
||||
solve(epsEqn);
|
||||
fvOptions.correct(epsilon_);
|
||||
bound(epsilon_, this->epsilonMin_);
|
||||
|
||||
|
||||
// Turbulent kinetic energy equation
|
||||
tmp<fvScalarMatrix> kEqn
|
||||
(
|
||||
fvm::ddt(alpha, rho, k_)
|
||||
+ fvm::div(alphaRhoPhi, k_)
|
||||
- fvm::laplacian(alpha*rho*DkEff(), k_)
|
||||
==
|
||||
alpha*rho*G
|
||||
- fvm::SuSp((2.0/3.0)*alpha*rho*divU, k_)
|
||||
- fvm::Sp(alpha*rho*epsilon_/k_, k_)
|
||||
+ fvOptions(alpha, rho, k_)
|
||||
);
|
||||
|
||||
kEqn.ref().relax();
|
||||
fvOptions.constrain(kEqn.ref());
|
||||
solve(kEqn);
|
||||
fvOptions.correct(k_);
|
||||
bound(k_, this->kMin_);
|
||||
|
||||
|
||||
// Relaxation function equation
|
||||
tmp<fvScalarMatrix> fEqn
|
||||
(
|
||||
- fvm::laplacian(f_)
|
||||
==
|
||||
- fvm::Sp(1.0/L2, f_)
|
||||
- 1.0/L2/k_*(v2fAlpha - C2_*G)
|
||||
);
|
||||
|
||||
fEqn.ref().relax();
|
||||
fvOptions.constrain(fEqn.ref());
|
||||
solve(fEqn);
|
||||
fvOptions.correct(f_);
|
||||
bound(f_, fMin_);
|
||||
|
||||
|
||||
// Turbulence stress normal to streamlines equation
|
||||
tmp<fvScalarMatrix> v2Eqn
|
||||
(
|
||||
fvm::ddt(alpha, rho, v2_)
|
||||
+ fvm::div(alphaRhoPhi, v2_)
|
||||
- fvm::laplacian(alpha*rho*DkEff(), v2_)
|
||||
==
|
||||
alpha*rho*min(k_*f_, C2_*G - v2fAlpha)
|
||||
- fvm::Sp(N*alpha*rho*epsilon_/k_, v2_)
|
||||
+ fvOptions(alpha, rho, v2_)
|
||||
);
|
||||
|
||||
v2Eqn.ref().relax();
|
||||
fvOptions.constrain(v2Eqn.ref());
|
||||
solve(v2Eqn);
|
||||
fvOptions.correct(v2_);
|
||||
bound(v2_, v2Min_);
|
||||
|
||||
correctNut();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,286 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::RASModels::v2f
|
||||
|
||||
Group
|
||||
grpRASTurbulence
|
||||
|
||||
Description
|
||||
Lien and Kalitzin's v2-f turbulence model for incompressible and
|
||||
compressible flows, with a limit imposed on the turbulent viscosity given
|
||||
by Davidson et al.
|
||||
|
||||
The model solves for turbulence kinetic energy k and turbulence dissipation
|
||||
rate epsilon, with additional equations for the turbulence stress normal to
|
||||
streamlines, v2, and elliptic damping function, f.
|
||||
|
||||
The variant implemented employs N=6, such that f=0 on walls.
|
||||
|
||||
Wall boundary conditions are:
|
||||
|
||||
k = kLowReWallFunction
|
||||
epsilon = epsilonWallFunction
|
||||
v2 = v2WallFunction
|
||||
f = fWallFunction
|
||||
|
||||
These are applicable to both low- and high-Reynolds number flows.
|
||||
|
||||
Inlet values can be approximated by:
|
||||
|
||||
v2 = 2/3 k
|
||||
f = zero-gradient
|
||||
|
||||
References:
|
||||
\verbatim
|
||||
Lien, F. S., & Kalitzin, G. (2001).
|
||||
Computations of transonic flow with the v2f turbulence model.
|
||||
International Journal of Heat and Fluid Flow, 22(1), 53-61.
|
||||
|
||||
Davidson, L., Nielsen, P., & Sveningsson, A. (2003).
|
||||
Modifications of the v2-f model for computing the flow in a
|
||||
3D wall jet.
|
||||
Turbulence, Heat and Mass Transfer, 4, 577-584
|
||||
\endverbatim
|
||||
|
||||
The default model coefficients are
|
||||
\verbatim
|
||||
v2fCoeffs
|
||||
{
|
||||
Cmu 0.22;
|
||||
CmuKEps 0.09;
|
||||
C1 1.4;
|
||||
C2 0.3;
|
||||
CL 0.23;
|
||||
Ceta 70;
|
||||
Ceps2 1.9;
|
||||
Ceps3 -0.33;
|
||||
sigmaEps 1.3;
|
||||
sigmaK 1;
|
||||
}
|
||||
\endverbatim
|
||||
|
||||
Note
|
||||
If the kLowReWallFunction is employed, a velocity variant of the turbulent
|
||||
viscosity wall function should be used, e.g. nutUWallFunction. Turbulence
|
||||
k variants (nutk...) for this case will not behave correctly.
|
||||
|
||||
See also
|
||||
Foam::RASModels::v2fBase
|
||||
Foam::RASModels::kEpsilon
|
||||
Foam::kLowReWallFunctionFvPatchScalarField
|
||||
Foam::epsilonWallFunctionFvPatchScalarField
|
||||
Foam::v2WallFunctionFvPatchScalarField
|
||||
Foam::fWallFunctionFvPatchScalarField
|
||||
|
||||
SourceFiles
|
||||
v2f.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef v2f_H
|
||||
#define v2f_H
|
||||
|
||||
#include "v2fBase.H"
|
||||
#include "RASModel.H"
|
||||
#include "eddyViscosity.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class v2f Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
class v2f
|
||||
:
|
||||
public eddyViscosity<RASModel<BasicTurbulenceModel>>,
|
||||
public v2fBase
|
||||
{
|
||||
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
// Model coefficients
|
||||
|
||||
dimensionedScalar Cmu_;
|
||||
dimensionedScalar CmuKEps_;
|
||||
dimensionedScalar C1_;
|
||||
dimensionedScalar C2_;
|
||||
dimensionedScalar CL_;
|
||||
dimensionedScalar Ceta_;
|
||||
dimensionedScalar Ceps2_;
|
||||
dimensionedScalar Ceps3_;
|
||||
dimensionedScalar sigmaK_;
|
||||
dimensionedScalar sigmaEps_;
|
||||
|
||||
|
||||
// Fields
|
||||
|
||||
//- Turbulence kinetic energy
|
||||
volScalarField k_;
|
||||
|
||||
//- Turbulence dissipation
|
||||
volScalarField epsilon_;
|
||||
|
||||
//- Turbulence stress normal to streamlines
|
||||
volScalarField v2_;
|
||||
|
||||
//- Damping function
|
||||
volScalarField f_;
|
||||
|
||||
|
||||
// Bounding values
|
||||
|
||||
dimensionedScalar v2Min_;
|
||||
dimensionedScalar fMin_;
|
||||
|
||||
|
||||
// Protected Member Functions
|
||||
|
||||
virtual void correctNut();
|
||||
|
||||
//- Return time scale, Ts
|
||||
tmp<volScalarField> Ts() const;
|
||||
|
||||
//- Return length scale, Ls
|
||||
tmp<volScalarField> Ls() const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
typedef typename BasicTurbulenceModel::alphaField alphaField;
|
||||
typedef typename BasicTurbulenceModel::rhoField rhoField;
|
||||
typedef typename BasicTurbulenceModel::transportModel transportModel;
|
||||
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("v2f");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
v2f
|
||||
(
|
||||
const alphaField& alpha,
|
||||
const rhoField& rho,
|
||||
const volVectorField& U,
|
||||
const surfaceScalarField& alphaRhoPhi,
|
||||
const surfaceScalarField& phi,
|
||||
const transportModel& transport,
|
||||
const word& propertiesName = turbulenceModel::propertiesName,
|
||||
const word& type = typeName
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~v2f() = default;
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Re-read model coefficients if they have changed
|
||||
virtual bool read();
|
||||
|
||||
//- Return the effective diffusivity for k
|
||||
tmp<volScalarField> DkEff() const
|
||||
{
|
||||
return tmp<volScalarField>
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
"DkEff",
|
||||
this->nut_/sigmaK_ + this->nu()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
//- Return the effective diffusivity for epsilon
|
||||
tmp<volScalarField> DepsilonEff() const
|
||||
{
|
||||
return tmp<volScalarField>
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
"DepsilonEff",
|
||||
this->nut_/sigmaEps_ + this->nu()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
//- Return the turbulence kinetic energy
|
||||
virtual tmp<volScalarField> k() const
|
||||
{
|
||||
return k_;
|
||||
}
|
||||
|
||||
//- Return the turbulence kinetic energy dissipation rate
|
||||
virtual tmp<volScalarField> epsilon() const
|
||||
{
|
||||
return epsilon_;
|
||||
}
|
||||
|
||||
//- Return turbulence stress normal to streamlines
|
||||
virtual tmp<volScalarField> v2() const
|
||||
{
|
||||
return v2_;
|
||||
}
|
||||
|
||||
//- Return the damping function
|
||||
virtual tmp<volScalarField> f() const
|
||||
{
|
||||
return f_;
|
||||
}
|
||||
|
||||
//- Solve the turbulence equations and correct the turbulence viscosity
|
||||
virtual void correct();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
#include "v2f.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,43 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2015 OpenFOAM Foundation
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "v2fBase.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
defineTypeNameAndDebug(v2fBase, 0);
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,98 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2015-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::RASModels::v2fBase
|
||||
|
||||
Group
|
||||
grpRASTurbulence
|
||||
|
||||
Description
|
||||
Abstract base-class for v2-f models to provide BCs access to the v2 and f
|
||||
fields.
|
||||
|
||||
See also
|
||||
Foam::RASModels::v2f
|
||||
|
||||
SourceFiles
|
||||
v2fBase.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef v2fBase_H
|
||||
#define v2fBase_H
|
||||
|
||||
#include "RASModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class v2fBase Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class v2fBase
|
||||
{
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("v2fBase");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
v2fBase()
|
||||
{}
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~v2fBase() = default;
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return turbulence stress normal to streamlines
|
||||
virtual tmp<volScalarField> v2() const = 0;
|
||||
|
||||
//- Return the damping function
|
||||
virtual tmp<volScalarField> f() const = 0;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,198 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2012-2016, 2019 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fWallFunctionFvPatchScalarField.H"
|
||||
#include "nutWallFunctionFvPatchScalarField.H"
|
||||
#include "v2f.H"
|
||||
#include "kEpsilonPhitF.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(p, iF)
|
||||
{}
|
||||
|
||||
|
||||
fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fWallFunctionFvPatchScalarField& ptf,
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
const fvPatchFieldMapper& mapper
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(ptf, p, iF, mapper)
|
||||
{}
|
||||
|
||||
|
||||
fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(p, iF, dict)
|
||||
{}
|
||||
|
||||
|
||||
fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fWallFunctionFvPatchScalarField& v2wfpsf
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(v2wfpsf)
|
||||
{}
|
||||
|
||||
|
||||
fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fWallFunctionFvPatchScalarField& v2wfpsf,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(v2wfpsf, iF)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void fWallFunctionFvPatchScalarField::updateCoeffs()
|
||||
{
|
||||
if (updated())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const label patchi = patch().index();
|
||||
|
||||
const turbulenceModel& turbModel = db().lookupObject<turbulenceModel>
|
||||
(
|
||||
IOobject::groupName
|
||||
(
|
||||
turbulenceModel::propertiesName,
|
||||
internalField().group()
|
||||
)
|
||||
);
|
||||
|
||||
const nutWallFunctionFvPatchScalarField& nutw =
|
||||
nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi);
|
||||
|
||||
const scalarField& y = turbModel.y()[patchi];
|
||||
|
||||
const tmp<scalarField> tnuw = turbModel.nu(patchi);
|
||||
const scalarField& nuw = tnuw();
|
||||
|
||||
scalarField& f = *this;
|
||||
|
||||
if (isA<v2fBase>(turbModel))
|
||||
{
|
||||
const v2fBase& v2fModel = refCast<const v2fBase>(turbModel);
|
||||
|
||||
const tmp<volScalarField> tk = turbModel.k();
|
||||
const volScalarField& k = tk();
|
||||
|
||||
const tmp<volScalarField> tepsilon = turbModel.epsilon();
|
||||
const volScalarField& epsilon = tepsilon();
|
||||
|
||||
const tmp<volScalarField> tv2 = v2fModel.v2();
|
||||
const volScalarField& v2 = tv2();
|
||||
|
||||
const scalar Cmu25 = pow025(nutw.Cmu());
|
||||
const scalar N = 6.0;
|
||||
|
||||
// Set f wall values
|
||||
forAll(f, facei)
|
||||
{
|
||||
const label celli = patch().faceCells()[facei];
|
||||
|
||||
const scalar uTau = Cmu25*sqrt(k[celli]);
|
||||
|
||||
const scalar yPlus = uTau*y[facei]/nuw[facei];
|
||||
|
||||
if (nutw.yPlusLam() < yPlus)
|
||||
{
|
||||
const scalar v2c = v2[celli];
|
||||
const scalar epsc = epsilon[celli];
|
||||
const scalar kc = k[celli];
|
||||
|
||||
f[facei] = N*v2c*epsc/(sqr(kc) + ROOTVSMALL);
|
||||
f[facei] /= sqr(uTau) + ROOTVSMALL;
|
||||
}
|
||||
else
|
||||
{
|
||||
f[facei] = 0.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isA<kEpsilonPhitFBase>(turbModel))
|
||||
{
|
||||
// (LUU:p. 176)
|
||||
f = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "The RAS model is neither the v2f nor kEpsilonPhitF model. "
|
||||
<< "Therefore, fWallFunction is not usable." << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
fixedValueFvPatchField<scalar>::updateCoeffs();
|
||||
|
||||
// TODO: perform averaging for cells sharing more than one boundary face
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
fWallFunctionFvPatchScalarField
|
||||
);
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,192 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2012-2016, 2019 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::RASModels::fWallFunctionFvPatchScalarField
|
||||
|
||||
Group
|
||||
grpWallFunctions
|
||||
|
||||
Description
|
||||
This boundary condition provides a wall constraint on the elliptic
|
||||
relaxation factor, \c f, which is executed in the \c v2-f based
|
||||
turbulence closure models for low- and high-Reynolds number
|
||||
turbulent flow cases.
|
||||
|
||||
Reference:
|
||||
\verbatim
|
||||
Remark on the blending approach for f (tag:PH):
|
||||
Popovac, M., & Hanjalić, K. (2007).
|
||||
Compound wall treatment for RANS computation of complex
|
||||
turbulent flows and heat transfer.
|
||||
Flow, turbulence and combustion, 78(2), 177-202.
|
||||
DOI:10.1007/s10494-006-9067-x
|
||||
|
||||
Wall-boundary expression for f in kEpsilonPhitF model (tag:LUU):
|
||||
Laurence, D. R., Uribe, J. C., & Utyuzhnikov, S. V. (2005).
|
||||
A robust formulation of the v2−f model.
|
||||
Flow, Turbulence and Combustion, 73(3-4), 169–185.
|
||||
DOI:10.1007/s10494-005-1974-8
|
||||
\endverbatim
|
||||
|
||||
Usage
|
||||
Example of the boundary condition specification:
|
||||
\verbatim
|
||||
<patchName>
|
||||
{
|
||||
// Mandatory entries
|
||||
type fWallFunction;
|
||||
|
||||
// No optional entry
|
||||
}
|
||||
\endverbatim
|
||||
|
||||
Note
|
||||
The coefficients \c Cmu, \c kappa, and \c E are obtained from
|
||||
the specified \c nutWallFunction in order to ensure that each patch
|
||||
possesses the same set of values for these coefficients.
|
||||
|
||||
For \c f, the viscous and inertial sublayer blending approaches were
|
||||
claimed to be inviable (PH:p. 194). Therefore, the only blending mode
|
||||
for the v2-f model is the stepwise mode where the viscous and inertial
|
||||
sublayer contributions switch over a sublayer-intersection value of
|
||||
\c y+ estimated from the \c kappa and \c E.
|
||||
|
||||
See also
|
||||
Foam::fixedValueFvPatchField
|
||||
|
||||
SourceFiles
|
||||
fWallFunctionFvPatchScalarField.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef fWallFunctionFvPatchScalarField_H
|
||||
#define fWallFunctionFvPatchScalarField_H
|
||||
|
||||
#include "fixedValueFvPatchField.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class fWallFunctionFvPatchScalarField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class fWallFunctionFvPatchScalarField
|
||||
:
|
||||
public fixedValueFvPatchField<scalar>
|
||||
{
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("fWallFunction");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from patch and internal field
|
||||
fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct from patch, internal field and dictionary
|
||||
fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&,
|
||||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given fWallFunctionFvPatchScalarField
|
||||
//- onto a new patch
|
||||
fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fWallFunctionFvPatchScalarField&,
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&,
|
||||
const fvPatchFieldMapper&
|
||||
);
|
||||
|
||||
//- Construct as copy
|
||||
fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fWallFunctionFvPatchScalarField&
|
||||
);
|
||||
|
||||
//- Construct and return a clone
|
||||
virtual tmp<fvPatchScalarField> clone() const
|
||||
{
|
||||
return tmp<fvPatchScalarField>
|
||||
(
|
||||
new fWallFunctionFvPatchScalarField(*this)
|
||||
);
|
||||
}
|
||||
|
||||
//- Construct as copy setting internal field reference
|
||||
fWallFunctionFvPatchScalarField
|
||||
(
|
||||
const fWallFunctionFvPatchScalarField&,
|
||||
const DimensionedField<scalar, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct and return a clone setting internal field reference
|
||||
virtual tmp<fvPatchScalarField> clone
|
||||
(
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
) const
|
||||
{
|
||||
return tmp<fvPatchScalarField>
|
||||
(
|
||||
new fWallFunctionFvPatchScalarField(*this, iF)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Evaluation functions
|
||||
|
||||
//- Update the coefficients associated with the patch field
|
||||
virtual void updateCoeffs();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,191 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2012-2016, 2019 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "v2WallFunctionFvPatchScalarField.H"
|
||||
#include "nutWallFunctionFvPatchScalarField.H"
|
||||
#include "turbulenceModel.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(p, iF),
|
||||
Cv2_(0.193),
|
||||
Bv2_(-0.94)
|
||||
{}
|
||||
|
||||
|
||||
v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const v2WallFunctionFvPatchScalarField& ptf,
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
const fvPatchFieldMapper& mapper
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(ptf, p, iF, mapper),
|
||||
Cv2_(ptf.Cv2_),
|
||||
Bv2_(ptf.Bv2_)
|
||||
{}
|
||||
|
||||
|
||||
v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(p, iF, dict),
|
||||
Cv2_(dict.getOrDefault<scalar>("Cv2", 0.193)),
|
||||
Bv2_(dict.getOrDefault<scalar>("Bv2", -0.94))
|
||||
{}
|
||||
|
||||
|
||||
v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const v2WallFunctionFvPatchScalarField& v2wfpsf
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(v2wfpsf),
|
||||
Cv2_(v2wfpsf.Cv2_),
|
||||
Bv2_(v2wfpsf.Bv2_)
|
||||
{}
|
||||
|
||||
|
||||
v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const v2WallFunctionFvPatchScalarField& v2wfpsf,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchField<scalar>(v2wfpsf, iF),
|
||||
Cv2_(v2wfpsf.Cv2_),
|
||||
Bv2_(v2wfpsf.Bv2_)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void v2WallFunctionFvPatchScalarField::updateCoeffs()
|
||||
{
|
||||
if (updated())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const label patchi = patch().index();
|
||||
|
||||
const turbulenceModel& turbModel = db().lookupObject<turbulenceModel>
|
||||
(
|
||||
IOobject::groupName
|
||||
(
|
||||
turbulenceModel::propertiesName,
|
||||
internalField().group()
|
||||
)
|
||||
);
|
||||
|
||||
const nutWallFunctionFvPatchScalarField& nutw =
|
||||
nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi);
|
||||
|
||||
const scalarField& y = turbModel.y()[patchi];
|
||||
|
||||
const tmp<scalarField> tnuw = turbModel.nu(patchi);
|
||||
const scalarField& nuw = tnuw();
|
||||
|
||||
const tmp<volScalarField> tk = turbModel.k();
|
||||
const volScalarField& k = tk();
|
||||
|
||||
const scalar Cmu25 = pow025(nutw.Cmu());
|
||||
|
||||
scalarField& v2 = *this;
|
||||
|
||||
// Set v2 wall values
|
||||
forAll(v2, facei)
|
||||
{
|
||||
const label celli = patch().faceCells()[facei];
|
||||
|
||||
const scalar uTau = Cmu25*sqrt(k[celli]);
|
||||
|
||||
const scalar yPlus = uTau*y[facei]/nuw[facei];
|
||||
|
||||
if (nutw.yPlusLam() < yPlus)
|
||||
{
|
||||
v2[facei] = Cv2_/nutw.kappa()*log(yPlus) + Bv2_;
|
||||
}
|
||||
else
|
||||
{
|
||||
v2[facei] = Cv2_*pow4(yPlus);
|
||||
}
|
||||
|
||||
v2[facei] *= sqr(uTau);
|
||||
}
|
||||
|
||||
fixedValueFvPatchField<scalar>::updateCoeffs();
|
||||
|
||||
// TODO: perform averaging for cells sharing more than one boundary face
|
||||
}
|
||||
|
||||
|
||||
void v2WallFunctionFvPatchScalarField::write
|
||||
(
|
||||
Ostream& os
|
||||
) const
|
||||
{
|
||||
os.writeEntry("Cv2", Cv2_);
|
||||
os.writeEntry("Bv2", Bv2_);
|
||||
fixedValueFvPatchField<scalar>::write(os);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
v2WallFunctionFvPatchScalarField
|
||||
);
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,194 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2012-2016, 2019 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::RASModels::v2WallFunctionFvPatchScalarField
|
||||
|
||||
Group
|
||||
grpWallFunctions
|
||||
|
||||
Description
|
||||
This boundary condition provides a wall constraint on wall-normal velocity
|
||||
scale, i.e. \c v2, for low- and high-Reynolds number turbulence models.
|
||||
|
||||
The model operates in two modes, based on the computed viscous-to-turbulent
|
||||
switch-over \c y+ value derived from \c kappa and \c E.
|
||||
|
||||
Usage
|
||||
\table
|
||||
Property | Description | Required | Default value
|
||||
Cv2 | model coefficient | no | 0.193
|
||||
Bv2 | model coefficient | no | -0.94
|
||||
\endtable
|
||||
|
||||
Example of the boundary condition specification:
|
||||
\verbatim
|
||||
<patchName>
|
||||
{
|
||||
// Mandatory entries
|
||||
type v2WallFunction;
|
||||
|
||||
// Optional entries
|
||||
}
|
||||
\endverbatim
|
||||
|
||||
Note
|
||||
The coefficients \c Cmu, \c kappa, and \c E are obtained from
|
||||
the specified \c nutWallFunction in order to ensure that each patch
|
||||
possesses the same set of values for these coefficients.
|
||||
|
||||
See also
|
||||
Foam::fixedValueFvPatchField
|
||||
|
||||
SourceFiles
|
||||
v2WallFunctionFvPatchScalarField.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef v2WallFunctionFvPatchScalarField_H
|
||||
#define v2WallFunctionFvPatchScalarField_H
|
||||
|
||||
#include "fixedValueFvPatchField.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace RASModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class v2WallFunctionFvPatchScalarField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class v2WallFunctionFvPatchScalarField
|
||||
:
|
||||
public fixedValueFvPatchField<scalar>
|
||||
{
|
||||
protected:
|
||||
|
||||
// Protected Data
|
||||
|
||||
//- Cv2 coefficient
|
||||
scalar Cv2_;
|
||||
|
||||
//- Bv2 coefficient
|
||||
scalar Bv2_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("v2WallFunction");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from patch and internal field
|
||||
v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct from patch, internal field and dictionary
|
||||
v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&,
|
||||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given v2WallFunctionFvPatchScalarField
|
||||
//- onto a new patch
|
||||
v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const v2WallFunctionFvPatchScalarField&,
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&,
|
||||
const fvPatchFieldMapper&
|
||||
);
|
||||
|
||||
//- Construct as copy
|
||||
v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const v2WallFunctionFvPatchScalarField&
|
||||
);
|
||||
|
||||
//- Construct and return a clone
|
||||
virtual tmp<fvPatchScalarField> clone() const
|
||||
{
|
||||
return tmp<fvPatchScalarField>
|
||||
(
|
||||
new v2WallFunctionFvPatchScalarField(*this)
|
||||
);
|
||||
}
|
||||
|
||||
//- Construct as copy setting internal field reference
|
||||
v2WallFunctionFvPatchScalarField
|
||||
(
|
||||
const v2WallFunctionFvPatchScalarField&,
|
||||
const DimensionedField<scalar, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct and return a clone setting internal field reference
|
||||
virtual tmp<fvPatchScalarField> clone
|
||||
(
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
) const
|
||||
{
|
||||
return tmp<fvPatchScalarField>
|
||||
(
|
||||
new v2WallFunctionFvPatchScalarField(*this, iF)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Evaluation functions
|
||||
|
||||
//- Update the coefficients associated with the patch field
|
||||
virtual void updateCoeffs();
|
||||
|
||||
|
||||
// I-O
|
||||
|
||||
//- Write
|
||||
virtual void write(Ostream&) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace RASModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,49 +0,0 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1912 |
|
||||
| \\ / A nd | Website: www.openfoam.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object f;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 0 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
outlet
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
upperWall
|
||||
{
|
||||
type fWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
lowerWall
|
||||
{
|
||||
type fWallFunction;
|
||||
value uniform 0;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,50 +0,0 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1912 |
|
||||
| \\ / A nd | Website: www.openfoam.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object v2;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0.25;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type fixedValue;
|
||||
value $internalField;
|
||||
}
|
||||
outlet
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
upperWall
|
||||
{
|
||||
type v2WallFunction;
|
||||
value $internalField;
|
||||
}
|
||||
lowerWall
|
||||
{
|
||||
type v2WallFunction;
|
||||
value $internalField;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -19,7 +19,7 @@ simulationType RAS;
|
||||
|
||||
RAS
|
||||
{
|
||||
// Tested with kEpsilon, realizableKE, kOmega, kOmegaSST, v2f,
|
||||
// Tested with kEpsilon, realizableKE, kOmega, kOmegaSST,
|
||||
// ShihQuadraticKE, LienCubicKE.
|
||||
RASModel kEpsilon;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user