diff --git a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C index aa0b474992..e847acda6e 100644 --- a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C +++ b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C @@ -41,6 +41,16 @@ namespace LESModels defineTypeNameAndDebug(DeardorffDiffStress, 0); addToRunTimeSelectionTable(LESModel, DeardorffDiffStress, dictionary); + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void DeardorffDiffStress::updateSubGridScaleFields(const volScalarField& K) +{ + muSgs_ = ck_*rho()*sqrt(K)*delta(); + muSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // DeardorffDiffStress::DeardorffDiffStress @@ -73,6 +83,8 @@ DeardorffDiffStress::DeardorffDiffStress ) ) { + updateSubGridScaleFields(0.5*tr(B_)); + printCoeffs(); } @@ -119,8 +131,7 @@ void DeardorffDiffStress::correct(const tmp& tgradU) K = 0.5*tr(B_); bound(K, k0()); - muSgs_ = ck_*rho()*sqrt(K)*delta(); - muSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(K); } diff --git a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H index 4371afbc66..510c304f20 100644 --- a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H +++ b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H @@ -81,6 +81,9 @@ class DeardorffDiffStress // Private Member Functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(const volScalarField& K); + // Disallow default bitwise copy construct and assignment DeardorffDiffStress(const DeardorffDiffStress&); DeardorffDiffStress& operator=(const DeardorffDiffStress&); diff --git a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C index e845776031..c89b2aeecf 100644 --- a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C +++ b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C @@ -41,6 +41,24 @@ namespace LESModels defineTypeNameAndDebug(Smagorinsky, 0); addToRunTimeSelectionTable(LESModel, Smagorinsky, dictionary); + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Smagorinsky::updateSubGridScaleFields(const volTensorField& gradU) +{ + volSymmTensorField D = symm(gradU); + + volScalarField a = ce_/delta(); + volScalarField b = (2.0/3.0)*tr(D); + volScalarField c = 2*ck_*delta()*(dev(D) && D); + + k_ = sqr((-b + sqrt(sqr(b) + 4*a*c))/(2*a)); + + muSgs_ = ck_*rho()*delta()*sqrt(k_); + muSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Smagorinsky::Smagorinsky @@ -64,6 +82,8 @@ Smagorinsky::Smagorinsky ) ) { + updateSubGridScaleFields(fvc::grad(U)); + printCoeffs(); } @@ -73,17 +93,7 @@ Smagorinsky::Smagorinsky void Smagorinsky::correct(const tmp& gradU) { GenEddyVisc::correct(gradU); - - volSymmTensorField D = symm(gradU); - - volScalarField a = ce_/delta(); - volScalarField b = (2.0/3.0)*tr(D); - volScalarField c = 2*ck_*delta()*(dev(D) && D); - - k_ = sqr((-b + sqrt(sqr(b) + 4*a*c))/(2*a)); - - muSgs_ = ck_*rho()*delta()*sqrt(k_); - muSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(gradU()); } diff --git a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H index c93745dbcb..ba296a87f9 100644 --- a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H +++ b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H @@ -76,6 +76,9 @@ class Smagorinsky // Private Member Functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(const volTensorField& gradU); + // Disallow default bitwise copy construct and assignment Smagorinsky(const Smagorinsky&); Smagorinsky& operator=(const Smagorinsky&); diff --git a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C index 92d15f5cd8..b8d1a8b97a 100644 --- a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C +++ b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C @@ -45,6 +45,13 @@ addToRunTimeSelectionTable(LESModel, SpalartAllmaras, dictionary); // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // +void SpalartAllmaras::updateSubGridScaleFields() +{ + muSgs_.internalField() = rho()*fv1()*nuTilda_.internalField(); + muSgs_.correctBoundaryConditions(); +} + + tmp SpalartAllmaras::fv1() const { volScalarField chi3 = pow3(nuTilda_/(mu()/rho())); @@ -225,6 +232,8 @@ SpalartAllmaras::SpalartAllmaras ) { + updateSubGridScaleFields(); + printCoeffs(); } @@ -288,10 +297,9 @@ void SpalartAllmaras::correct(const tmp& tgradU) ); bound(nuTilda_, dimensionedScalar("zero", nuTilda_.dimensions(), 0.0)); - nuTilda_.correctBoundaryConditions(); - muSgs_.internalField() = rho()*fv1()*nuTilda_.internalField(); - muSgs_.correctBoundaryConditions(); + + updateSubGridScaleFields(); } diff --git a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H index 437baedb49..e119768537 100644 --- a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H @@ -49,7 +49,7 @@ namespace LESModels { /*---------------------------------------------------------------------------*\ - Class SpalartAllmaras Declaration + Class SpalartAllmaras Declaration \*---------------------------------------------------------------------------*/ class SpalartAllmaras @@ -74,6 +74,9 @@ class SpalartAllmaras // Private member functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(); + tmp fv1() const; tmp fv2() const; tmp fv3() const; diff --git a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C b/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C index f6194e4882..7e9b3d9b7b 100644 --- a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C +++ b/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C @@ -43,6 +43,13 @@ addToRunTimeSelectionTable(LESModel, dynOneEqEddy, dictionary); // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +void dynOneEqEddy::updateSubGridScaleFields(const volSymmTensorField& D) +{ + muSgs_ = ck_(D)*rho()*sqrt(k_)*delta(); + muSgs_.correctBoundaryConditions(); +} + + dimensionedScalar dynOneEqEddy::ck_(const volSymmTensorField& D) const { volScalarField KK = 0.5*(filter_(magSqr(U())) - magSqr(filter_(U()))); @@ -90,6 +97,8 @@ dynOneEqEddy::dynOneEqEddy filterPtr_(LESfilter::New(U.mesh(), coeffDict())), filter_(filterPtr_()) { + updateSubGridScaleFields(dev(symm(fvc::grad(U)))); + printCoeffs(); } @@ -119,8 +128,7 @@ void dynOneEqEddy::correct(const tmp& tgradU) bound(k_, dimensionedScalar("0", k_.dimensions(), 1.0e-10)); - muSgs_ = ck_(D)*rho()*sqrt(k_)*delta(); - muSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(D); } diff --git a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H b/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H index 4f5ec19b70..a32dacddfd 100644 --- a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H +++ b/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H @@ -82,6 +82,9 @@ class dynOneEqEddy // Private Member Functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(const volSymmTensorField& D); + //- Calculate ck, ce by filtering the velocity field U. dimensionedScalar ck_(const volSymmTensorField& D) const; dimensionedScalar ce_(const volSymmTensorField& D) const; diff --git a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C index 3783677eaf..b5670ad245 100644 --- a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C +++ b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C @@ -41,6 +41,19 @@ namespace LESModels defineTypeNameAndDebug(lowReOneEqEddy, 0); addToRunTimeSelectionTable(LESModel, lowReOneEqEddy, dictionary); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void lowReOneEqEddy::updateSubGridScaleFields() +{ + // High Re eddy viscosity + muSgs_ = ck_*rho()*sqrt(k_)*delta(); + + // low Re no corrected eddy viscosity + muSgs_ -= (mu()/beta_)*(scalar(1) - exp(-beta_*muSgs_/mu())); + muSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // lowReOneEqEddy::lowReOneEqEddy @@ -73,6 +86,8 @@ lowReOneEqEddy::lowReOneEqEddy ) ) { + updateSubGridScaleFields(); + printCoeffs(); } @@ -101,13 +116,7 @@ void lowReOneEqEddy::correct(const tmp& tgradU) bound(k_, k0()); - // High Re eddy viscosity - muSgs_ = ck_*rho()*sqrt(k_)*delta(); - - // low Re no corrected eddy viscosity - muSgs_ -= (mu()/beta_)*(scalar(1) - exp(-beta_*muSgs_/mu())); - - muSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(); } diff --git a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H index a36ec44860..9820905a41 100644 --- a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H +++ b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H @@ -77,6 +77,9 @@ class lowReOneEqEddy // Private Member Functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(); + // Disallow default bitwise copy construct and assignment lowReOneEqEddy(const lowReOneEqEddy&); lowReOneEqEddy& operator=(const lowReOneEqEddy&); diff --git a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C index 65457c0359..414aba5b03 100644 --- a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C +++ b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C @@ -41,6 +41,15 @@ namespace LESModels defineTypeNameAndDebug(oneEqEddy, 0); addToRunTimeSelectionTable(LESModel, oneEqEddy, dictionary); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void oneEqEddy::updateSubGridScaleFields() +{ + muSgs_ = ck_*rho()*sqrt(k_)*delta(); + muSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // oneEqEddy::oneEqEddy @@ -64,6 +73,8 @@ oneEqEddy::oneEqEddy ) ) { + updateSubGridScaleFields(); + printCoeffs(); } @@ -95,8 +106,7 @@ void oneEqEddy::correct(const tmp& tgradU) bound(k_, k0()); - muSgs_ = ck_*rho()*sqrt(k_)*delta(); - muSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(); } diff --git a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H index 6568724fd2..2a9bb74591 100644 --- a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H +++ b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H @@ -80,6 +80,9 @@ class oneEqEddy // Private Member Functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(); + // Disallow default bitwise copy construct and assignment oneEqEddy(const oneEqEddy&); oneEqEddy& operator=(const oneEqEddy&);