diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C index f330aecfcfaaac218b2b56be33c56babd3e3f033..b216cf1f207a8375ce041612c2c89285f41a0f55 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C +++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C @@ -166,6 +166,25 @@ tmp<volScalarField> DESModel<BasicTurbulenceModel>::Ssigma } +template<class BasicTurbulenceModel> +tmp<volScalarField> DESModel<BasicTurbulenceModel>::fd() const +{ + return tmp<volScalarField>::New + ( + IOobject + ( + "fd", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + this->mesh_, + dimensionedScalar(dimless, Zero) + ); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H index 9570a12bb946ddd5fc9c61fa607711c142a7d993..1efac2db0f1614a98578382c98ebed7bd51479e1 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H +++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H @@ -120,7 +120,10 @@ public: //- Return modified strain rate // Note: uses Ctrans_ coefficient - tmp<volScalarField> Ssigma(const volTensorField& gradU) const; + virtual tmp<volScalarField> Ssigma(const volTensorField& gradU) const; + + //- Return the shielding function + virtual tmp<volScalarField> fd() const; }; diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C index 911c1411a86b05c02c3f885ff5f876a6deb7964f..c99fdcad27c68441785f08dd0b410276386f327d 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C +++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C @@ -23,16 +23,6 @@ License 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::DESModelBase - -Description - Base class for DES models providing an interfaces to the LESRegion - function. - -SourceFiles - DESModelBase.C - \*---------------------------------------------------------------------------*/ #include "DESModelBase.H" diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H index c437ec6c289a209915cfb7162d964b72412ecd08..fa16efe5d1a7b48ef97570799d74181f8eb342e9 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H +++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2015 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,8 +28,7 @@ Class Foam::DESModelBase Description - Base class for DES models providing an interfaces to the LESRegion - function. + Base class for DES models providing an interfaces to DES fields. SourceFiles DESModelBase.C @@ -70,6 +69,9 @@ public: //- Return the LES field indicator virtual tmp<volScalarField> LESRegion() const = 0; + + //- Return the shielding function + virtual tmp<volScalarField> fd() const = 0; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C index 4c75b3c72d514e516d39743de2e2c561e35b84de..1eec436b360ff78ef7f0f5531ec4174befa88ecb 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C @@ -189,6 +189,13 @@ bool SpalartAllmarasDDES<BasicTurbulenceModel>::read() } +template<class BasicTurbulenceModel> +tmp<volScalarField> SpalartAllmarasDDES<BasicTurbulenceModel>::fd() const +{ + return fd(mag(fvc::grad(this->U_))); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H index 17d3ede0ee9fb397c9436dfdda527f60dc5d5bdf..61b42412377a0212f85f0d198765f49e47e29cfc 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H @@ -147,6 +147,9 @@ public: //- Read from dictionary virtual bool read(); + + //- Return the shielding function + virtual tmp<volScalarField> fd() const; }; diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C index 03f7ea3517b2c6fe3f1d0e7acc89a23da797484e..514c894e5a20d9d1a150cdc41a8b025bd1a30cf9 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C @@ -236,6 +236,17 @@ bool SpalartAllmarasIDDES<BasicTurbulenceModel>::read() } +template<class BasicTurbulenceModel> +tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::fd() const +{ + const volScalarField alpha(this->alpha()); + const volScalarField expTerm(exp(sqr(alpha))); + + tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1)); + return max(1 - fdt(mag(fvc::grad(this->U_))), fB); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H index 470a05647f4eb33fd3bf68319f35ebed6332c5f9..f3901ad5fe5ee1c540685ddde885cf840f74980f 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H @@ -153,6 +153,9 @@ public: //- Re-read model coefficients if they have changed virtual bool read(); + + //- Return the shielding function + virtual tmp<volScalarField> fd() const; }; diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C index 2eff1bb0d5102f9922b51137d293ddfcba4519ca..16907d266df74b659c40a0b5d4532b59f0e0b835 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C +++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C @@ -201,6 +201,13 @@ bool kOmegaSSTDDES<BasicTurbulenceModel>::read() } +template<class BasicTurbulenceModel> +tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::fd() const +{ + return fd(mag(fvc::grad(this->U_))); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H index f572216a3a36db4f9a561af7e3a9338e722b8a26..54e4c711a1e23e8e67c18d15ae8dc4a42edf64db 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H +++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H @@ -157,6 +157,9 @@ public: //- Re-read model coefficients if they have changed virtual bool read(); + + //- Return the shielding function + virtual tmp<volScalarField> fd() const; }; diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H index 114633c9190c3d3e75515b8cee24e23107c722c4..b6b035cfca8a13e1c7e421d6bc9b442bf303008e 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H +++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H @@ -93,7 +93,7 @@ protected: dimensionedScalar kappa_; - //- DES coefficients + //- DES coefficients dimensionedScalar CDESkom_; dimensionedScalar CDESkeps_; diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C index 5b18937f9eda57f3cfa6b9d432eb956491d2e074..c955da513262313cf2ff5ab45c8be8650bd69d09 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C +++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C @@ -231,6 +231,17 @@ bool kOmegaSSTIDDES<BasicTurbulenceModel>::read() } +template<class BasicTurbulenceModel> +tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::fd() const +{ + const volScalarField alpha(this->alpha()); + const volScalarField expTerm(exp(sqr(alpha))); + + tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1)); + return max(1 - fdt(mag(fvc::grad(this->U_))), fB); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H index 7b9d4b7d052a55c7bdf72e1c78f4660cd2ea8536..d5695afba87dc4c42896450519451218093eb320 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H +++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H @@ -149,6 +149,9 @@ public: //- Re-read model coefficients if they have changed virtual bool read(); + + //- Return the shielding function + virtual tmp<volScalarField> fd() const; };