From c1311bc785de14cef6ca7e2611d6bbf1127007ee Mon Sep 17 00:00:00 2001 From: Kutalmis Bercin Date: Thu, 7 Apr 2022 11:28:45 +0100 Subject: [PATCH 1/2] ENH: EBRSM: new elliptic-blending Reynolds-stress turbulence model --- .../turbulentFluidThermoModels.C | 8 +- .../turbulentTransportModels.C | 8 +- .../turbulenceModels/RAS/EBRSM/EBRSM.C | 637 ++++++++++++++++++ .../turbulenceModels/RAS/EBRSM/EBRSM.H | 248 +++++++ .../ReynoldsStress/ReynoldsStress.C | 61 +- .../ReynoldsStress/ReynoldsStress.H | 12 +- 6 files changed, 968 insertions(+), 6 deletions(-) create mode 100644 src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.C create mode 100644 src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.H diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C index 9fa097e3c4..7b2b78cd8e 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2013-2016 OpenFOAM Foundation + Copyright (C) 2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -86,6 +87,9 @@ makeRASModel(buoyantKEpsilon); #include "LaunderSharmaKE.H" makeRASModel(LaunderSharmaKE); +#include "kEpsilonPhitF.H" +makeRASModel(kEpsilonPhitF); + #include "kOmega.H" makeRASModel(kOmega); @@ -104,8 +108,8 @@ makeRASModel(LRR); #include "SSG.H" makeRASModel(SSG); -#include "kEpsilonPhitF.H" -makeRASModel(kEpsilonPhitF); +#include "EBRSM.H" +makeRASModel(EBRSM); // -------------------------------------------------------------------------- // diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C index 5dfbd29dae..ec25c77ad6 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/turbulentTransportModels.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2013-2016 OpenFOAM Foundation + Copyright (C) 2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -81,6 +82,9 @@ makeRASModel(realizableKE); #include "LaunderSharmaKE.H" makeRASModel(LaunderSharmaKE); +#include "kEpsilonPhitF.H" +makeRASModel(kEpsilonPhitF); + #include "kOmega.H" makeRASModel(kOmega); @@ -99,8 +103,8 @@ makeRASModel(LRR); #include "SSG.H" makeRASModel(SSG); -#include "kEpsilonPhitF.H" -makeRASModel(kEpsilonPhitF); +#include "EBRSM.H" +makeRASModel(EBRSM); // -------------------------------------------------------------------------- // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.C b/src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.C new file mode 100644 index 0000000000..fa969b6e97 --- /dev/null +++ b/src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.C @@ -0,0 +1,637 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2022 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 . + +\*---------------------------------------------------------------------------*/ + +#include "EBRSM.H" +#include "fvOptions.H" +#include "bound.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +tmp EBRSM::calcL() const +{ + // (M:Eq. C.13) + return + Cl_*max + ( + pow(k_, 1.5)/epsilon_, + Ceta_*pow025 + ( + pow3 + ( + max + ( + this->nu(), + dimensionedScalar(this->nu()().dimensions(), Zero) + ) + )/epsilon_ + ) + ); +} + + +template +tmp EBRSM::calcN() const +{ + const volVectorField gradf(fvc::grad(f_)); + + // (M:Eq. C.9) + return gradf/max(mag(gradf), dimensionedScalar(dimless/dimLength, SMALL)); +} + + +template +tmp EBRSM::calcTau() const +{ + // (M:Eq. C.12) + return + max + ( + k_/epsilon_, + Ct_*sqrt + ( + max + ( + this->nu(), + dimensionedScalar(this->nu()().dimensions(), Zero) + )/epsilon_ + ) + ); +} + + +template +tmp EBRSM::D +( + const volScalarField& tau, + const dimensionedScalar& sigma +) const +{ + // (M:Eq. C.10, C.14) + return (Cmu_/sigma*tau)*this->R_ + this->nu()*I; +} + + +template +tmp EBRSM::D +( + const dimensionedScalar& sigma +) const +{ + // (LM:p. 2) + return this->nut_/sigma + this->nu(); +} + + +template +tmp EBRSM::Ceps1Prime +( + const volScalarField& G +) const +{ + // (M:Eq. C.15) + return Ceps1_*(scalar(1) + A1_*(scalar(1) - pow3(f_))*G/this->epsilon_); +} + + +template +void EBRSM::correctNut() +{ + this->nut_ = Cmu_*k_*calcTau(); + this->nut_.correctBoundaryConditions(); + fv::options::New(this->mesh_).correct(this->nut_); + + BasicTurbulenceModel::correctNut(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +EBRSM::EBRSM +( + const alphaField& alpha, + const rhoField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& transport, + const word& propertiesName, + const word& type +) +: + ReynoldsStress> + ( + type, + alpha, + rho, + U, + alphaRhoPhi, + phi, + transport, + propertiesName + ), + + simpleGradientDiffusion_ + ( + Switch::getOrAddToDict + ( + "simpleGradientDiffusion", + this->coeffDict_, + false + ) + ), + g1_ + ( + dimensioned::getOrAddToDict + ( + "g1", + this->coeffDict_, + 3.4 + ) + ), + g1star_ + ( + dimensioned::getOrAddToDict + ( + "g1star", + this->coeffDict_, + 1.8 + ) + ), + g3_ + ( + dimensioned::getOrAddToDict + ( + "g3", + this->coeffDict_, + 0.8 + ) + ), + g3star_ + ( + dimensioned::getOrAddToDict + ( + "g3star", + this->coeffDict_, + 1.3 + ) + ), + g4_ + ( + dimensioned::getOrAddToDict + ( + "g4", + this->coeffDict_, + 1.25 + ) + ), + g5_ + ( + dimensioned::getOrAddToDict + ( + "g5", + this->coeffDict_, + 0.2 + ) + ), + Cmu_ + ( + dimensioned::getOrAddToDict + ( + "Cmu", + this->coeffDict_, + 0.21 + ) + ), + Ceps1_ + ( + dimensioned::getOrAddToDict + ( + "Ceps1", + this->coeffDict_, + 1.44 + ) + ), + Ceps2_ + ( + dimensioned::getOrAddToDict + ( + "Ceps2", + this->coeffDict_, + 1.83 + ) + ), + sigmaK_ + ( + dimensioned::getOrAddToDict + ( + "sigmaK", + this->coeffDict_, + 1.0 + ) + ), + sigmaEps_ + ( + dimensioned::getOrAddToDict + ( + "sigmaEps", + this->coeffDict_, + 1.15 + ) + ), + A1_ + ( + dimensioned::getOrAddToDict + ( + "A1", + this->coeffDict_, + 0.065 + ) + ), + Ct_ + ( + dimensioned::getOrAddToDict + ( + "Ct", + this->coeffDict_, + 6.0 + ) + ), + Cl_ + ( + dimensioned::getOrAddToDict + ( + "Cl", + this->coeffDict_, + 0.133 + ) + ), + Ceta_ + ( + dimensioned::getOrAddToDict + ( + "Ceta", + this->coeffDict_, + 80.0 + ) + ), + Cstability_ + ( + dimensioned::getOrAddToDict + ( + "Cstability", + this->coeffDict_, + sqr(dimLength)/pow3(dimTime), + 10.0 + ) + ), + + f_ + ( + IOobject + ( + IOobject::groupName("f", alphaRhoPhi.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + this->mesh_ + ), + k_ + ( + IOobject + ( + IOobject::groupName("k", alphaRhoPhi.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + 0.5*tr(this->R_) + ), + epsilon_ + ( + IOobject + ( + IOobject::groupName("epsilon", alphaRhoPhi.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + this->mesh_ + ) +{ + this->boundNormalStress(this->R_); + bound(epsilon_, this->epsilonMin_); + bound(k_, this->kMin_); + + if (type == typeName) + { + this->printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +bool EBRSM::read() +{ + if (ReynoldsStress>::read()) + { + simpleGradientDiffusion_.readIfPresent + ( + "simpleGradientDiffusion", + this->coeffDict() + ); + g1_.readIfPresent(this->coeffDict()); + g1star_.readIfPresent(this->coeffDict()); + g3_.readIfPresent(this->coeffDict()); + g3star_.readIfPresent(this->coeffDict()); + g4_.readIfPresent(this->coeffDict()); + g5_.readIfPresent(this->coeffDict()); + Cmu_.readIfPresent(this->coeffDict()); + Ceps1_.readIfPresent(this->coeffDict()); + Ceps2_.readIfPresent(this->coeffDict()); + sigmaK_.readIfPresent(this->coeffDict()); + sigmaEps_.readIfPresent(this->coeffDict()); + A1_.readIfPresent(this->coeffDict()); + Ct_.readIfPresent(this->coeffDict()); + Cl_.readIfPresent(this->coeffDict()); + Ceta_.readIfPresent(this->coeffDict()); + Cstability_.readIfPresent(this->coeffDict()); + + return true; + } + + return false; +} + + +template +void EBRSM::correct() +{ + if (!this->turbulence_) + { + return; + } + + // Construct local convenience references + const alphaField& alpha = this->alpha_; + const rhoField& rho = this->rho_; + const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi_; + const volVectorField& U = this->U_; + volSymmTensorField& R = this->R_; + fv::options& fvOptions(fv::options::New(this->mesh_)); + + ReynoldsStress>::correct(); + + + // Calculate the velocity gradient tensor in Hessian form (delta_i u_j) + // Tranpose of the classical Jacobian form (delta_j u_i) + tmp tgradU = fvc::grad(U); + const volTensorField& gradU = tgradU.cref(); + + // Calculate the production tensor + tmp tP = -twoSymm(R & gradU); + const volSymmTensorField& P = tP.cref(); + + // Calculate turbulent kinetic energy production rate + const volScalarField G(this->GName(), 0.5*mag(tr(P))); + + + // Calculate elliptic blending function + // between near-wall and weakly-inhomogeneous regions + { + // (M:Eq. C.13) + tmp tinvLsqr = scalar(1)/sqr(calcL()); + const volScalarField& invLsqr = tinvLsqr.cref(); + + // (M:Eq. C.8) + tmp fEqn + ( + fvm::Sp(invLsqr, f_) + - fvm::laplacian(f_) + == + invLsqr + ); + + tinvLsqr.clear(); + + fEqn.ref().relax(); + solve(fEqn); + } + + + // Calculate approximate wall-normal vector field (M:Eq. C.9) + tmp tn = calcN(); + const volVectorField& n = tn.cref(); + + // Calculate turbulent time scale (M:Eq. C.12) + tmp ttau = calcTau(); + const volScalarField& tau = ttau.cref(); + + + // Calculate turbulent dissipation rate field + { + // Dissipation-production stimulator in the buffer layer (M:Eq. C.15) + tmp tCeps1Prime = Ceps1Prime(G); + const volScalarField& Ceps1Prime = tCeps1Prime.cref(); + + // Update epsilon and G at the wall + epsilon_.boundaryFieldRef().updateCoeffs(); + + // (M:Eq. C.14) + tmp epsEqn + ( + fvm::ddt(alpha, rho, epsilon_) + + fvm::div(alphaRhoPhi, epsilon_) + - ( + simpleGradientDiffusion_ + ? fvm::laplacian(alpha*rho*D(sigmaEps_), epsilon_) + : fvm::laplacian(alpha*rho*D(tau, sigmaEps_), epsilon_) + ) + + fvm::Sp(Cstability_/k_, epsilon_) + == + alpha()*rho()*Ceps1Prime()*G()/tau() + - fvm::Sp(alpha*rho*Ceps2_/tau, epsilon_) + + Cstability_*epsilon_()/k_() + + fvOptions(alpha, rho, epsilon_) + ); + + tCeps1Prime.clear(); + + epsEqn.ref().relax(); + fvOptions.constrain(epsEqn.ref()); + epsEqn.ref().boundaryManipulate(epsilon_.boundaryFieldRef()); + solve(epsEqn); + fvOptions.correct(epsilon_); + + bound(epsilon_, this->epsilonMin_); + } + + + // Calculate Reynolds-stress field + { + // Homogeneous form of the redistribution term (M:Eq. C.3) + tmp tPhiH; + { + // Reynolds stress anisotropy tensor (M:Eq. C.4) + const volSymmTensorField B(R/(scalar(2)*k_) - oneThirdI); + + // Rate-of-strain tensor (M:Eq. C.5) + const volSymmTensorField S(symm(gradU)); + + // Rate-of-rotation tensor (M:Eq. C.6) + // Note the Hessian form of gradient + const volTensorField W(gradU.T() - gradU); + + tPhiH = + k_ + *( + (g3_ - g3star_*mag(B))*S + + g4_*dev(twoSymm(B & S)) + + g5_*twoSymm(B & W.T()) + ); + } + + + // Near-wall form of the redistribution model (M:Eq. C.7) + tmp tPhiW; + { + tmp tnn = symm(n*n); + const volSymmTensorField& nn = tnn.cref(); + + tn.clear(); + + tPhiW = + - scalar(5)*epsilon_/k_* + ( + twoSymm(R & nn) + - 0.5*(R && nn)*(nn + I) + ); + } + + + tmp REqn; + { + const volScalarField fCube(pow3(f_)); + + // Velocity-pressure gradient correlation (M:Eq. C.2) + const volSymmTensorField Phi + ( + (scalar(1) - fCube)*tPhiW + fCube*tPhiH + ); + + // Near-wall part of the dissipation tensor (M:Eq. C.11) + const volScalarField epsilonW + ( + (scalar(1) - fCube)*epsilon_/k_ + ); + + // Homogeneous part of the dissipation tensor (M:Eq. C.11) + const volSphericalTensorField epsilonH + ( + fCube*epsilon_*twoThirdsI + ); + + // Implicit part of the g1-term (M:Eq. C.3) + const volScalarField Phi1Implicit + ( + fCube*(g1_*epsilon_ + g1star_*G)/(scalar(2)*k_) + ); + + // Explicit part of the g1-term (M:Eq. C.3) + const volSphericalTensorField Phi1Explicit + ( + fCube*(g1_*epsilon_ + g1star_*G)*oneThirdI + ); + + + // (M:Eq. C.1) + REqn = + ( + fvm::ddt(alpha, rho, R) + + fvm::div(alphaRhoPhi, R) + - ( + simpleGradientDiffusion_ + ? fvm::laplacian(alpha*rho*D(sigmaK_), R) + : fvm::laplacian(alpha*rho*D(tau, sigmaK_), R) + ) + + fvm::Sp(alpha*rho*Phi1Implicit, R) + + fvm::Sp(alpha*rho*epsilonW, R) + == + alpha()*rho()* + ( + P() + + Phi() + + Phi1Explicit() + - epsilonH() + ) + + fvOptions(alpha, rho, R) + ); + + ttau.clear(); + tP.clear(); + } + + + REqn.ref().relax(); + fvOptions.constrain(REqn.ref()); + solve(REqn); + fvOptions.correct(R); + + this->boundNormalStress(R); + + #ifdef FULLDEBUG + this->checkRealizabilityConditions(R); + #endif + + k_ == 0.5*tr(R); + bound(k_, this->kMin_); + } + + correctNut(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.H b/src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.H new file mode 100644 index 0000000000..82370c92b8 --- /dev/null +++ b/src/TurbulenceModels/turbulenceModels/RAS/EBRSM/EBRSM.H @@ -0,0 +1,248 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2022 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 . + +Class + Foam::RASModels::EBRSM + +Group + grpRASTurbulence + +Description + Manceau (2015)'s elliptic-blending Reynolds-stress turbulence model + for incompressible and compressible flows. + + References: + \verbatim + Standard model (tag:M): + Manceau, R. (2015). + Recent progress in the development of the elliptic + blending Reynolds-stress model. + International Journal of Heat and Fluid Flow, 51, 195-220. + DOI:10.1016/j.ijheatfluidflow.2014.09.002 + + Simple gradient diffusion hypothesis (tag:LM): + Lardeau, S., & Manceau, R. (2014). + Computations of complex flow configurations using + a modified elliptic-blending Reynolds-stress model. + 10th International ERCOFTAC Symposium on Engineering + Turbulence Modelling and Measurements. Marbella, Spain. + https://hal.archives-ouvertes.fr/hal-01051799 + \endverbatim + + The default model coefficients are (M:p. 219): + \verbatim + EBRSMCoeffs + { + g1 3.4; + g1star 1.8; + g3 0.8; + g3star 1.3; + g4 1.25; + g5 0.2; + Cmu 0.21; + Ceps1 1.44; + Ceps2 1.83; + sigmaK 1.0; + sigmaEps 1.15; + A1 0.065; + Ct 6.0; + Cl 0.133; + Ceta 80.0; + Cstability 10.0; + + simpleGradientDiffusion false; + } + \endverbatim + +Note + - \c g5 coefficient has been changed from its original value of 0.4 to 0.2 + after obtaining better results in smooth-wall plane channel flow cases. + +SourceFiles + EBRSM.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Foam_RASModels_EBRSM_H +#define Foam_RASModels_EBRSM_H + +#include "RASModel.H" +#include "ReynoldsStress.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class EBRSM Declaration +\*---------------------------------------------------------------------------*/ + +template +class EBRSM +: + public ReynoldsStress> +{ + // Private Data + + Switch simpleGradientDiffusion_; + + // Coefficients + + dimensionedScalar g1_; + dimensionedScalar g1star_; + dimensionedScalar g3_; + dimensionedScalar g3star_; + dimensionedScalar g4_; + dimensionedScalar g5_; + dimensionedScalar Cmu_; + dimensionedScalar Ceps1_; + dimensionedScalar Ceps2_; + dimensionedScalar sigmaK_; + dimensionedScalar sigmaEps_; + dimensionedScalar A1_; + dimensionedScalar Ct_; + dimensionedScalar Cl_; + dimensionedScalar Ceta_; + dimensionedScalar Cstability_; + + // Fields + + //- Elliptic blending factor [-] + volScalarField f_; + + //- Turbulent kinetic energy [m2/s2] + volScalarField k_; + + //- Turbulent kinetic energy dissipation rate [m2/s3] + volScalarField epsilon_; + + + // Private Member Functions + + //- Return the Durbin-limited length-scale field + // Thickness of region of influence of near-wall model + tmp calcL() const; + + //- Return the approximate wall-normal vector field + tmp calcN() const; + + //- Return the turbulent time scale bounded by Kolmogorov time scale + tmp calcTau() const; + + //- Return the effective diffusivity for epsilon or R + //- by using the generalised gradient diffusion hypothesis + tmp D + ( + const volScalarField& tau, + const dimensionedScalar& sigma + ) const; + + //- Return the effective diffusivity for epsilon or R + //- by using the simple gradient diffusion hypothesis + tmp D + ( + const dimensionedScalar& sigma + ) const; + + //- Return dissipation-production stimulator in the buffer layer + tmp Ceps1Prime(const volScalarField& G) const; + + //- Update the eddy-viscosity + virtual void correctNut(); + + + //- No copy construct + EBRSM(const EBRSM&) = delete; + + //- No copy assignment + void operator=(const EBRSM&) = delete; + + +public: + + typedef typename BasicTurbulenceModel::alphaField alphaField; + typedef typename BasicTurbulenceModel::rhoField rhoField; + typedef typename BasicTurbulenceModel::transportModel transportModel; + + + //- Runtime type information + TypeName("EBRSM"); + + + // Constructors + + //- Construct from components + EBRSM + ( + 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 ~EBRSM() = default; + + + // Member Functions + + //- Return the turbulence kinetic energy dissipation rate + virtual tmp epsilon() const + { + return epsilon_; + } + + //- Re-read model coefficients if they have changed + virtual bool read(); + + //- Solve the transport equations and correct the turbulent viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "EBRSM.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C index a3a7b42d62..d1e785e409 100644 --- a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C +++ b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2015-2017 OpenFOAM Foundation - Copyright (C) 2020 OpenCFD Ltd. + Copyright (C) 2020-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -105,6 +105,65 @@ void Foam::ReynoldsStress::correctWallShearStress } +template +void Foam::ReynoldsStress::checkRealizabilityConditions +( + const volSymmTensorField& R +) const +{ + const label maxDiffs = 5; + label nDiffs = 0; + + // (S:Eq. 4a-4c) + forAll(R, celli) + { + bool diff = false; + + if (maxDiffs < nDiffs) + { + Info<< "More than " << maxDiffs << " times" + << " Reynolds-stress realizability checks failed." + << " Skipping further comparisons." << endl; + return; + } + + const symmTensor& r = R[celli]; + + if (r.xx() < 0) + { + WarningInFunction + << "Reynolds stress " << r << " at cell " << celli + << " does not obey the constraint: Rxx >= 0" + << endl; + diff = true; + } + + if (r.xx()*r.yy() - sqr(r.xy()) < 0) + { + WarningInFunction + << "Reynolds stress " << r << " at cell " << celli + << " does not obey the constraint: Rxx*Ryy - sqr(Rxy) >= 0" + << endl; + diff = true; + } + + if (det(r) < 0) + { + WarningInFunction + << "Reynolds stress " << r << " at cell " << celli + << " does not obey the constraint: det(R) >= 0" + << endl; + diff = true; + } + + if (diff) + { + ++nDiffs; + } + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template diff --git a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H index 612cc61047..14d550339b 100644 --- a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H +++ b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2015-2016 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -33,6 +33,15 @@ Group Description Reynolds-stress turbulence model base class + Reference: + \verbatim + Realizability conditions (tag:S): + Schumann, U. (1977). + Realizability of Reynolds‐stress turbulence models. + The Physics of Fluids, 20(5), 721-725. + DOI:10.1063/1.861942 + \endverbatim + SourceFiles ReynoldsStress.C @@ -74,6 +83,7 @@ protected: void boundNormalStress(volSymmTensorField& R) const; void correctWallShearStress(volSymmTensorField& R) const; + void checkRealizabilityConditions(const volSymmTensorField& R) const; //- Update the eddy-viscosity virtual void correctNut() = 0; From 7c59abef60a061e9ad2c3a961875687b1608c9ab Mon Sep 17 00:00:00 2001 From: Kutalmis Bercin Date: Mon, 30 May 2022 14:29:01 +0100 Subject: [PATCH 2/2] TUT: planeChannel: new verification case for RANS turbulence models --- .../turbulenceModels/planeChannel/Allclean | 10 + .../turbulenceModels/planeChannel/Allrun | 171 +++++ .../turbulenceModels/planeChannel/plot | 707 ++++++++++++++++++ .../planeChannel/setups.orig/EBRSM/0.orig/R | 41 + .../setups.orig/EBRSM/0.orig/epsilon | 42 ++ .../planeChannel/setups.orig/EBRSM/0.orig/f | 41 + .../planeChannel/setups.orig/EBRSM/0.orig/k | 41 + .../EBRSM/constant/turbulenceProperties | 27 + .../planeChannel/setups.orig/common/0.orig/U | 41 + .../setups.orig/common/0.orig/nut | 41 + .../planeChannel/setups.orig/common/0.orig/p | 40 + .../planeChannel/setups.orig/common/Allclean | 8 + .../planeChannel/setups.orig/common/Allrun | 27 + .../setups.orig/common/Allrun-parallel | 31 + .../setups.orig/common/constant/fvOptions | 28 + .../common/constant/transportProperties | 22 + .../setups.orig/common/system/blockMeshDict | 97 +++ .../setups.orig/common/system/controlDict | 151 ++++ .../common/system/decomposeParDict | 27 + .../setups.orig/common/system/fvSchemes | 68 ++ .../setups.orig/common/system/fvSolution | 97 +++ .../setups.orig/common/system/sampleEpsilon | 40 + .../setups.orig/common/system/sampleF | 40 + .../setups.orig/common/system/sampleG | 40 + .../setups.orig/common/system/sampleK | 47 ++ .../setups.orig/common/system/sampleR | 47 ++ .../setups.orig/common/system/sampleU | 47 ++ .../setups.orig/kOmegaSST/0.orig/k | 41 + .../setups.orig/kOmegaSST/0.orig/omega | 41 + .../kOmegaSST/constant/turbulenceProperties | 27 + 30 files changed, 2128 insertions(+) create mode 100755 tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allclean create mode 100755 tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allrun create mode 100755 tutorials/verificationAndValidation/turbulenceModels/planeChannel/plot create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/R create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/epsilon create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/f create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/k create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/constant/turbulenceProperties create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/U create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/nut create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/p create mode 100755 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allclean create mode 100755 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun create mode 100755 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun-parallel create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/fvOptions create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/transportProperties create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/blockMeshDict create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/controlDict create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/decomposeParDict create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSchemes create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSolution create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleEpsilon create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleF create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleG create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleK create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleR create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleU create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/k create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/omega create mode 100644 tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/constant/turbulenceProperties diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allclean b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allclean new file mode 100755 index 0000000000..2206c5fd7d --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions +#------------------------------------------------------------------------------ + +rm -rf setups +rm -rf results +rm -rf plots + +#------------------------------------------------------------------------------ diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allrun b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allrun new file mode 100755 index 0000000000..2d86ce6a43 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/Allrun @@ -0,0 +1,171 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +#------------------------------------------------------------------------------ + +# settings + + # operand setups + setups=" + EBRSM + kOmegaSST + " + + # flag to enable computations + run=true + + # flag to enable computations in parallel mode + parallel=false + + # flag to enable to use a common mesh + common_mesh=true + + # flag to enable to use a common dynamic code + common_dynamic_code=true + + +#------------------------------------------------------------------------------ + +####################################### +# Create the given setup +# Arguments: +# $1 = Path to create the setup +# Outputs: +# Writes info to stdout +####################################### +dry_run_setup() { + + [ $# -eq 0 ] && { echo "Usage error: $0"; exit 1; } + + setup="$1" + dirSetup="setups/$setup" + dirSetupOrig="setups.orig/$setup" + dirOrig="$dirSetupOrig/0.orig" + dirConstant="$dirSetupOrig/constant" + dirSystem="$dirSetupOrig/system" + + printf "\n# Create the setup: %s\n" "$setup" + + if [ ! -d "$dirSetup" ] + then + mkdir -p "$dirSetup" + + cp -aRfL "setups.orig/common/." "$dirSetup" + cp -afL "$dirSetupOrig"/All* "$dirSetup" 2>/dev/null || : + [ -d "$dirOrig" ] && cp -aRfL "$dirOrig/." "$dirSetup/0.orig" + [ -d "$dirConstant" ] && cp -aRfL "$dirConstant/." "$dirSetup/constant" + [ -d "$dirSystem" ] && cp -aRfL "$dirSystem/." "$dirSetup/system" + else + printf "\n # Directory %s already exists\n" "$dirSetup" + printf " # Skipping the creation of a new setup\n" + fi +} + + +####################################### +# Run the given setup +# Arguments: +# $1 = Path to the setup to run +# Outputs: +# Writes info to stdout +####################################### +run_setup() { + + [ $# -eq 0 ] && { echo "Usage error: $0"; exit 1; } + + setup="$1" + dirSetup="setups/$setup" + dirResult="results/$setup" + + dry_run_setup "$setup" + [ -d results ] || mkdir -p results + + printf "\n# Run the setup: %s\n\n" "$setup" + + if [ ! -d "$dirResult" ] + then + cp -Rf "$dirSetup" "$dirResult" + + if [ "$common_mesh" = true ] + then + if [ -d results/mesh ] + then + printf "## Copy the common mesh to the setup: %s\n\n" "$setup" + cp -Rf results/mesh/polyMesh "$dirResult"/constant/. + fi + fi + + if [ "$common_dynamic_code" = true ] + then + if [ -d results/dynamicCode ] + then + printf "## Copy the common dynamic code to the setup: %s\n\n" "$setup" + cp -Rf results/dynamicCode "$dirResult"/. + fi + fi + + + if [ "$parallel" = true ] + then + ( cd "$dirResult" && ./Allrun-parallel ) + else + ( cd "$dirResult" && ./Allrun ) + fi + + + if [ "$common_mesh" = true ] + then + if [ ! -d results/mesh ] + then + printf "\n## Store the mesh of %s as the common mesh\n\n" "$setup" + mkdir -p results/mesh + cp -Rf "$dirResult"/constant/polyMesh results/mesh/. + fi + fi + + if [ "$common_dynamic_code" = true ] + then + if [ ! -d results/dynamicCode ] && [ -d "$dirResult"/dynamicCode ] + then + printf "\n## Store the dynamic code of %s as the common dynamic code\n\n" "$setup" + cp -Rf "$dirResult"/dynamicCode results/. + fi + fi + + + else + printf " # Directory %s already exists\n" "$dirResult" + printf " # Skipping the computation of the given setup\n" + fi +} + + +#------------------------------------------------------------------------------ + +for setup in $setups +do + dirSetupOrig="setups.orig/$setup" + + if [ ! -d "$dirSetupOrig" ] + then + echo "Setup directory: $dirSetupOrig" \ + "could not be found - skipping execution" 1>&2 + continue + fi + + if [ "$run" = true ] + then + run_setup "$setup" + else + dry_run_setup "$setup" + fi +done + + +if notTest "$@" && [ "$run" = true ] +then + ./plot +fi + + +#------------------------------------------------------------------------------ diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/plot b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/plot new file mode 100755 index 0000000000..022923e9e3 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/plot @@ -0,0 +1,707 @@ +#!/bin/bash +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +#------------------------------------------------------------------------------ + +# settings + + # operand setups + setups=" + EBRSM + kOmegaSST + " + + +#------------------------------------------------------------------------------ + +plot_initial_iteration_residuals() { + + setup="$1" + + echo "## Plots the initial-iteration residuals" + + sampleFile="results/$setup/logs" + image="plots/$setup/initial-iteration-residuals.png" + + gnuplot</dev/null || { + echo "gnuplot not found - skipping graph creation" 1>&2 + exit 1 +} + +# Requires awk +command -v awk >/dev/null || { + echo "awk not found - skipping graph creation" 1>&2 + exit 1 +} + +# Check "results" directory +[ -d "results" ] || { + echo "No results directory found - skipping graph creation" 1>&2 + exit 1 +} + + +#------------------------------------------------------------------------------ + +for setup in $setups +do + + echo "" + echo "# Plots for the setup: $setup" + echo "" + + [ -d "results/$setup" ] || { + echo "No results/$setup directory found - skipping graph creation" 1>&2 + continue + } + + dirPlots="plots/$setup" + [ -d "$dirPlots" ] || mkdir -p "$dirPlots" + + # few manipulations + RASModel=$(foamDictionary results/$setup/constant/turbulenceProperties -entry RAS.RASModel -value) + endTime=$(foamDictionary results/$setup/system/controlDict -entry endTime -value) + nu=$(foamDictionary results/$setup/constant/transportProperties -entry nu | sed 's|^.*\s\(.*\);|\1|g') + tau=$(foamDictionary results/$setup/$endTime/wallShearStress -entry boundaryField.bottom.value -value | sed -n '/(/,/)/p' | sed -e 's/[()]//g;/^\s*$/d' | cut -d' ' -f6) + uTau=$(awk -v tau="$tau" 'BEGIN { printf "%.16f", sqrt(-1*tau) }') + + plot_initial_iteration_residuals "$setup" + + plot_final_iteration_residuals "$setup" + + plot_yPlus_vs_uPlus "$setup" "$endTime" "$nu" "$uTau" + + plot_yPlus_vs_R "$setup" "$endTime" "$nu" "$uTau" + + plot_yPlus_vs_epsilonPlus "$setup" "$endTime" "$nu" "$uTau" + + plot_yPlus_vs_productionRatePlus "$setup" "$endTime" "$nu" "$uTau" + +done + +plot_yPlus_vs_uPlus_all_setups $setups + +plot_yPlus_vs_R_all_setups $setups + +plot_yPlus_vs_epsilonPlus_all_setups $setups + +plot_yPlus_vs_productionRatePlus_all_setups $setups + + +#------------------------------------------------------------------------------ diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/R b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/R new file mode 100644 index 0000000000..cbb1c87589 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/R @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volSymmTensorField; + object R; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform (1.718 0 0 1.718 0 1.718); // 2*k/3 + +boundaryField +{ + "(bottom|top)" + { + type fixedValue; + value uniform (1e-16 1e-16 1e-16 1e-16 1e-16 1e-16); + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/epsilon b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/epsilon new file mode 100644 index 0000000000..09a64d3633 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/epsilon @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -3 0 0 0 0 ]; + +internalField uniform 33.6; // Lardeau14-Coel Eq. 21 + +boundaryField +{ + "(bottom|top)" + { + type epsilonWallFunction; + lowReCorrection true; + value uniform 0; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/f b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/f new file mode 100644 index 0000000000..184b4bfc24 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/f @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object f; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 0 0 0 0 0 0 ]; + +internalField uniform 1; + +boundaryField +{ + "(bottom|top)" + { + type fixedValue; + value uniform 0; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/k b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/k new file mode 100644 index 0000000000..62e72281cf --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/0.orig/k @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 2.577; // Lardeau14-Coel Eq. 21 + +boundaryField +{ + "(bottom|top)" + { + type fixedValue; + value uniform 1e-10; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/constant/turbulenceProperties b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/constant/turbulenceProperties new file mode 100644 index 0000000000..279efb151f --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/EBRSM/constant/turbulenceProperties @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel EBRSM; + turbulence on; + printCoeffs on; +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/U b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/U new file mode 100644 index 0000000000..f3065cba45 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/U @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (17.54519653746177 0 0); + +boundaryField +{ + "(bottom|top)" + { + type fixedValue; + value uniform (0 0 0); + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/nut b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/nut new file mode 100644 index 0000000000..1f42d3c0c5 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/nut @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + "(bottom|top)" + { + type nutLowReWallFunction; + value $internalField; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/p b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/p new file mode 100644 index 0000000000..909b89e85a --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/0.orig/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + "(bottom|top)" + { + type zeroGradient; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allclean b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allclean new file mode 100755 index 0000000000..fb1f384730 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allclean @@ -0,0 +1,8 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions +#------------------------------------------------------------------------------ + +cleanCase0 + +#------------------------------------------------------------------------------ diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun new file mode 100755 index 0000000000..e62aa81413 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun @@ -0,0 +1,27 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +#------------------------------------------------------------------------------ + +if [ ! -d constant/polyMesh ] +then + runApplication blockMesh + + runApplication renumberMesh -overwrite -constant + + runApplication checkMesh -allTopology -allGeometry -constant +fi + +restore0Dir + +runApplication $(getApplication) + + +runApplication -s "U" postProcess -func sampleU -latestTime +runApplication -s "k" postProcess -func sampleK -latestTime +runApplication -s "epsilon" postProcess -func sampleEpsilon -latestTime +runApplication -s "R" postProcess -func sampleR -latestTime +runApplication -s "G" postProcess -func sampleG -latestTime +runApplication foamLog log."$(getApplication)" + +#------------------------------------------------------------------------------ diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun-parallel b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun-parallel new file mode 100755 index 0000000000..7b42731b65 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/Allrun-parallel @@ -0,0 +1,31 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +#------------------------------------------------------------------------------ + +if [ ! -d constant/polyMesh ] +then + runApplication blockMesh + + runApplication renumberMesh -overwrite -constant + + runApplication checkMesh -allTopology -allGeometry -constant +fi + +restore0Dir + +runApplication decomposePar + +runParallel $(getApplication) + +runApplication reconstructPar + + +runApplication -s "U" postProcess -func sampleU -latestTime +runApplication -s "k" postProcess -func sampleK -latestTime +runApplication -s "epsilon" postProcess -func sampleEpsilon -latestTime +runApplication -s "R" postProcess -func sampleR -latestTime +runApplication -s "G" postProcess -func sampleG -latestTime +runApplication foamLog log."$(getApplication)" + +#------------------------------------------------------------------------------ diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/fvOptions b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/fvOptions new file mode 100644 index 0000000000..34e2cde075 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/fvOptions @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2112 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvOptions; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +momentumSource +{ + type meanVelocityForce; + + selectionMode all; + + fields (U); + Ubar (17.54519653746177 0 0); +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/transportProperties b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/transportProperties new file mode 100644 index 0000000000..5b53305d69 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/constant/transportProperties @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu 0.002531645569620253; + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/blockMeshDict b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/blockMeshDict new file mode 100644 index 0000000000..5651dfb798 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/blockMeshDict @@ -0,0 +1,97 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +scale 1; + +nx 10; +ny 100; +nz 1; +xMin 0; +xMax 1; +yMin 0; +yMax 1; +yyMax 2; +zMin 0; +zMax 1; +yExpansion 10.09757454; +yExpansion2 #eval{ -1*$yExpansion }; + +vertices +( + ($xMin $yMin $zMin) + ($xMax $yMin $zMin) + ($xMax $yMax $zMin) + ($xMax $yyMax $zMin) + ($xMin $yyMax $zMin) + ($xMin $yMax $zMin) + + ($xMin $yMin $zMax) + ($xMax $yMin $zMax) + ($xMax $yMax $zMax) + ($xMax $yyMax $zMax) + ($xMin $yyMax $zMax) + ($xMin $yMax $zMax) +); + +blocks +( + hex ( 0 1 2 5 6 7 8 11) ($nx $ny $nz) simpleGrading (1 $yExpansion 1) + hex ( 5 2 3 4 11 8 9 10) ($nx $ny $nz) simpleGrading (1 $yExpansion2 1) +); + +boundary +( + bottom + { + type wall; + faces ((0 6 7 1)); + } + + top + { + type wall; + faces ((4 3 9 10)); + } + + leftAndRight + { + type empty; + faces + ( + (1 2 5 0) + (2 3 4 5) + (6 11 8 7) + (11 10 9 8) + ); + } + + inlet + { + type cyclic; + neighbourPatch outlet; + faces ((0 5 11 6)(5 4 10 11)); + } + + outlet + { + type cyclic; + neighbourPatch inlet; + faces ((1 7 8 2)(2 8 9 3)); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/controlDict b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/controlDict new file mode 100644 index 0000000000..264856463e --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/controlDict @@ -0,0 +1,151 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application simpleFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 100000; + +deltaT 1; + +writeControl timeStep; + +writeInterval 10000; + +purgeWrite 1; + +writeFormat ascii; + +writePrecision 16; + +writeCompression off; + +timeFormat general; + +timePrecision 8; + +runTimeModifiable false; + +functions +{ + fieldMinMax1 + { + type fieldMinMax; + libs (fieldFunctionObjects); + writeToFile no; + log yes; + location yes; + mode magnitude; + fields ( p U k omega epsilon ); + } + + wallShearStress1 + { + type wallShearStress; + libs (fieldFunctionObjects); + patches ( bottom ); + executeControl writeTime; + writeControl writeTime; + } + + yPlus1 + { + type yPlus; + libs (fieldFunctionObjects); + executeControl writeTime; + writeControl writeTime; + } + + writeCellCentres1 + { + type writeCellCentres; + libs (fieldFunctionObjects); + executeControl onEnd; + writeControl onEnd; + } + + turbulenceFields1 + { + type turbulenceFields; + libs (fieldFunctionObjects); + fields ( k epsilon R ); + executeControl writeTime; + writeControl writeTime; + } + + productionRate1 + { + type coded; + libs (utilityFunctionObjects); + name productionRate; + writeControl writeTime; + + codeExecute + #{ + auto* prodPtr = + mesh().getObjectPtr("productionRate"); + + if (!prodPtr) + { + Info<< "Create production rate field" << nl; + prodPtr = new volScalarField + ( + IOobject + ( + "productionRate", + mesh().time().timeName(), + mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh(), + sqr(dimLength)/pow3(dimTime) + ); + + regIOobject::store(prodPtr); + } + auto& prod = *prodPtr; + + Info<< "Computing production rate field\n" << endl; + + const auto& U = mesh().lookupObject("U"); + + auto* RPtr = + mesh().getObjectPtr("R"); + + if (!RPtr) + { + const auto& nut = mesh().lookupObject("nut"); + + prod = 2*nut*(symm(fvc::grad(U)) && symm(fvc::grad(U))); + } + else + { + auto& R = *RPtr; + + prod = 0.5*(mag(tr(-twoSymm(R & fvc::grad(U))))); + } + #}; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/decomposeParDict b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/decomposeParDict new file mode 100644 index 0000000000..d6470857ed --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/decomposeParDict @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +method hierarchical; + +coeffs +{ + n (2 1 1); +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSchemes b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSchemes new file mode 100644 index 0000000000..46494e982c --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default steadyState; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) bounded Gauss linearUpwind grad(U); + + turbulence bounded Gauss limitedLinear 1; + + div(phi,k) $turbulence; + div(phi,omega) $turbulence; + div(phi,nuTilda) $turbulence; + div(phi,epsilon) $turbulence; + div(phi,phit) $turbulence; + div(phi,f) $turbulence; + div(phi,R) $turbulence; + + div((nuEff*dev2(T(grad(U))))) Gauss linear; + div((nu*dev2(T(grad(U))))) Gauss linear; + div(R) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +wallDist +{ + method meshWave; +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSolution b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSolution new file mode 100644 index 0000000000..95353b23f5 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/fvSolution @@ -0,0 +1,97 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + smoother DICGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 3; + } + + U + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 3; + } + + "(k|omega|nuTilda)" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 3; + } + + "(epsilon|phit)" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 3; + } + + f + { + solver PBiCGStab; + preconditioner DIC; + tolerance 1e-12; + relTol 0; + minIter 3; + } + + R + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 3; + } +} + +SIMPLE +{ + nNonOrthogonalCorrectors 0; + consistent yes; + pRefCell 0; + pRefValue 0; +} + +relaxationFactors +{ + equations + { + U 0.7; + k 0.5; + omega 0.5; + nuTilda 0.5; + epsilon 0.5; + "(phit|f)" 0.5; + R 0.4; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleEpsilon b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleEpsilon new file mode 100644 index 0000000000..de09bff3b1 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleEpsilon @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object sample; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs (sampling); +interpolationScheme cellPoint; +setFormat raw; +executeControl writeTime; +writeControl writeTime; +fields +( + turbulenceProperties:epsilon +); + +sets +( + y + { + type midPoint; + axis y; + start (0.5 0 0.5); + end (0.5 1 0.5); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleF b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleF new file mode 100644 index 0000000000..22151890bc --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleF @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object sample; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs (sampling); +interpolationScheme cellPoint; +setFormat raw; +executeControl writeTime; +writeControl writeTime; +fields +( + f +); + +sets +( + y + { + type midPoint; + axis y; + start (0.5 0 0.5); + end (0.5 1 0.5); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleG b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleG new file mode 100644 index 0000000000..7460f2c6ca --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleG @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object sample; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs (sampling); +interpolationScheme cellPoint; +setFormat raw; +executeControl writeTime; +writeControl writeTime; +fields +( + productionRate +); + +sets +( + y + { + type midPoint; + axis y; + start (0.5 0 0.5); + end (0.5 1 0.5); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleK b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleK new file mode 100644 index 0000000000..dbf17f37fe --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleK @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object sample; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs (sampling); +interpolationScheme cellPoint; +setFormat raw; +executeControl writeTime; +writeControl writeTime; +fields +( + turbulenceProperties:k +); + +sets +( + ref_point + { + type cloud; + axis y; + points ((0.5 1 0.5)); + } + + y + { + type midPoint; + axis y; + start (0.5 0 0.5); + end (0.5 1 0.5); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleR b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleR new file mode 100644 index 0000000000..fd9333708b --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleR @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object sample; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs (sampling); +interpolationScheme cellPoint; +setFormat raw; +executeControl writeTime; +writeControl writeTime; +fields +( + turbulenceProperties:R +); + +sets +( + ref_point + { + type cloud; + axis y; + points ((0.5 1 0.5)); + } + + y + { + type midPoint; + axis y; + start (0.5 0 0.5); + end (0.5 1 0.5); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleU b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleU new file mode 100644 index 0000000000..e49f5d0370 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/common/system/sampleU @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object sample; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs (sampling); +interpolationScheme cellPoint; +setFormat raw; +executeControl writeTime; +writeControl writeTime; +fields +( + U +); + +sets +( + ref_point + { + type cloud; + axis y; + points ((0.5 1 0.5)); + } + + y + { + type midPoint; + axis y; + start (0.5 0 0.5); + end (0.5 1 0.5); + } +); + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/k b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/k new file mode 100644 index 0000000000..62e72281cf --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/k @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 2.577; // Lardeau14-Coel Eq. 21 + +boundaryField +{ + "(bottom|top)" + { + type fixedValue; + value uniform 1e-10; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/omega b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/omega new file mode 100644 index 0000000000..18c68f9098 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/0.orig/omega @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object omega; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 -1 0 0 0 0]; + +internalField uniform 144.87; // epsilon/Cmu/k + +boundaryField +{ + "(bottom|top)" + { + type omegaWallFunction; + value $internalField; + } + + "(inlet|outlet)" + { + type cyclic; + } + + leftAndRight + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/constant/turbulenceProperties b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/constant/turbulenceProperties new file mode 100644 index 0000000000..61413fd752 --- /dev/null +++ b/tutorials/verificationAndValidation/turbulenceModels/planeChannel/setups.orig/kOmegaSST/constant/turbulenceProperties @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2012 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kOmegaSST; + turbulence on; + printCoeffs on; +} + + +// ************************************************************************* //