diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C index 86a19cd1336dd7bdd01e7f53dc23342212fc2ad1..9893dd00fe403aef16f20838aaed9870dd635281 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C @@ -85,9 +85,6 @@ makeRASModel(kOmegaSSTSAS); #include "kOmegaSSTLM.H" makeRASModel(kOmegaSSTLM); -#include "v2f.H" -makeRASModel(v2f); - #include "LRR.H" makeRASModel(LRR); diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C index 6004df24d32410bf4b3c93fd05e63609ab26b77a..63b525b0986a515757ea90cc721f3632a723354d 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C @@ -81,9 +81,6 @@ makeRASModel(kOmegaSSTSAS); #include "kOmegaSSTLM.H" makeRASModel(kOmegaSSTLM); -#include "v2f.H" -makeRASModel(v2f); - #include "LRR.H" makeRASModel(LRR); diff --git a/src/TurbulenceModels/turbulenceModels/Make/files b/src/TurbulenceModels/turbulenceModels/Make/files index 8a3c77f09e57ecf827cfbc3b4ba6210bf7803667..25ef2d66dfa8bc74cf2cc5d6641a736dddcc434a 100644 --- a/src/TurbulenceModels/turbulenceModels/Make/files +++ b/src/TurbulenceModels/turbulenceModels/Make/files @@ -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 diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.C b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.C index 6f6636a99843c4681f93978520b68423c0c4db93..2d64a4f974fac47e312efccf2f7ebf70407e483d 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.C @@ -119,7 +119,6 @@ kEpsilonPhitF<BasicTurbulenceModel>::kEpsilonPhitF transport, propertiesName ), - kEpsilonPhitFBase(), Cmu_ ( diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.H b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.H index 23f2e5c8025ec73e7fe7681fb0ef9067db96cebd..05442df56ed7410a742522b91bd759878089aad5 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.H +++ b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitF.H @@ -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 diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitFBase.C b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitFBase.C deleted file mode 100644 index e4a56e54bbe7bad2f5838fdb21db63322134d334..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitFBase.C +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitFBase.H b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitFBase.H deleted file mode 100644 index 622bc3254cdd9d2f60dbcd85ce65a6bd80553535..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilonPhitF/kEpsilonPhitFBase.H +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C deleted file mode 100644 index 8eef81ba3bfd7a971a5d2e476c37a9e56cc95599..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.H b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.H deleted file mode 100644 index 733fb91f365f8bc61d6f8c8347d1d65467341660..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.H +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2fBase.C b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2fBase.C deleted file mode 100644 index 9138f0b70817fba1370bda04f4ee3a79f415e133..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2fBase.C +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2fBase.H b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2fBase.H deleted file mode 100644 index 85abc0ffd98ffac0d87e33ebb9efccb1ca2b2975..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2fBase.H +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C deleted file mode 100644 index 3573bcd319026cf54a5961fea3b023b2489887dc..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H deleted file mode 100644 index 88fca25ff1ec16ed5c8fe0218d7a31f2b9f15908..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C deleted file mode 100644 index f4d713172287754bfd1ee87a22254e1339fda7f6..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H deleted file mode 100644 index faefa1dac1449a4b75ced787c828c8f0498069bb..0000000000000000000000000000000000000000 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H +++ /dev/null @@ -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 - -// ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDaily/0/f b/tutorials/incompressible/simpleFoam/pitzDaily/0/f deleted file mode 100644 index cd27fb0203aa7aa2890afcacc8199f738db3126c..0000000000000000000000000000000000000000 --- a/tutorials/incompressible/simpleFoam/pitzDaily/0/f +++ /dev/null @@ -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; - } -} - - -// ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDaily/0/v2 b/tutorials/incompressible/simpleFoam/pitzDaily/0/v2 deleted file mode 100644 index a3811f209998439efef948987544dc93242b4dc4..0000000000000000000000000000000000000000 --- a/tutorials/incompressible/simpleFoam/pitzDaily/0/v2 +++ /dev/null @@ -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; - } -} - - -// ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/pitzDaily/constant/turbulenceProperties b/tutorials/incompressible/simpleFoam/pitzDaily/constant/turbulenceProperties index 5388de9b20069f728e1d57468be04d5e81a13fda..bd569b4d44a2479675abf61f8016d10d56482b20 100644 --- a/tutorials/incompressible/simpleFoam/pitzDaily/constant/turbulenceProperties +++ b/tutorials/incompressible/simpleFoam/pitzDaily/constant/turbulenceProperties @@ -19,7 +19,7 @@ simulationType RAS; RAS { - // Tested with kEpsilon, realizableKE, kOmega, kOmegaSST, v2f, + // Tested with kEpsilon, realizableKE, kOmega, kOmegaSST, // ShihQuadraticKE, LienCubicKE. RASModel kEpsilon;