diff --git a/applications/solvers/heatTransfer/buoyantFoam/buoyantFoam.C b/applications/solvers/heatTransfer/buoyantFoam/buoyantFoam.C index cafb677900..24ad89e4e3 100644 --- a/applications/solvers/heatTransfer/buoyantFoam/buoyantFoam.C +++ b/applications/solvers/heatTransfer/buoyantFoam/buoyantFoam.C @@ -48,6 +48,9 @@ int main(int argc, char *argv[]) # include "readEnvironmentalProperties.H" # include "createFields.H" # include "initContinuityErrs.H" +# include "readTimeControls.H" +# include "compressibleCourantNo.H" +# include "setInitialDeltaT.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -55,11 +58,13 @@ int main(int argc, char *argv[]) while (runTime.run()) { +# include "readTimeControls.H" # include "readPISOControls.H" # include "compressibleCourantNo.H" -//# include "setDeltaT.H" +# include "setDeltaT.H" runTime++; + Info<< "Time = " << runTime.timeName() << nl << endl; # include "rhoEqn.H" diff --git a/applications/solvers/heatTransfer/buoyantFoam/createFields.H b/applications/solvers/heatTransfer/buoyantFoam/createFields.H index 3d604d4daf..9535718fbb 100644 --- a/applications/solvers/heatTransfer/buoyantFoam/createFields.H +++ b/applications/solvers/heatTransfer/buoyantFoam/createFields.H @@ -52,8 +52,9 @@ ) ); - Info<< "Creating field dpdt\n" << endl; - volScalarField dpdt = fvc::ddt(p); + Info<< "Creating field DpDt\n" << endl; + volScalarField DpDt = + fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); Info<< "Calculating field g.h\n" << endl; volScalarField gh("gh", g & mesh.C()); diff --git a/applications/solvers/heatTransfer/buoyantFoam/hEqn.H b/applications/solvers/heatTransfer/buoyantFoam/hEqn.H index 008e3b0f56..f1a87c6a79 100644 --- a/applications/solvers/heatTransfer/buoyantFoam/hEqn.H +++ b/applications/solvers/heatTransfer/buoyantFoam/hEqn.H @@ -5,9 +5,7 @@ + fvm::div(phi, h) - fvm::laplacian(turbulence->alphaEff(), h) == - dpdt - + fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p)) - - p*fvc::div(phi/fvc::interpolate(rho)) + DpDt ); hEqn.relax(); diff --git a/applications/solvers/heatTransfer/buoyantFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantFoam/pEqn.H index 36378f7f6f..1cdbd0b199 100644 --- a/applications/solvers/heatTransfer/buoyantFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantFoam/pEqn.H @@ -40,7 +40,7 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) } p == pd + rho*gh + pRef; -dpdt = fvc::ddt(p); +DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); #include "rhoEqn.H" #include "compressibleContinuityErrs.H" 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 9e2949b976..65a6a69bde 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(rho()*nuTilda_/mu()); @@ -223,6 +230,8 @@ SpalartAllmaras::SpalartAllmaras ) { + updateSubGridScaleFields(); + printCoeffs(); } @@ -286,10 +295,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&); diff --git a/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.C b/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.C index 0e3004edd7..271b7c0b92 100644 --- a/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.C +++ b/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.C @@ -41,6 +41,15 @@ namespace LESModels defineTypeNameAndDebug(DeardorffDiffStress, 0); addToRunTimeSelectionTable(LESModel, DeardorffDiffStress, dictionary); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void DeardorffDiffStress::updateSubGridScaleFields(const volScalarField& K) +{ + nuSgs_ = ck_*sqrt(K)*delta(); + nuSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // DeardorffDiffStress::DeardorffDiffStress @@ -72,6 +81,8 @@ DeardorffDiffStress::DeardorffDiffStress ) ) { + updateSubGridScaleFields(0.5*tr(B_)); + printCoeffs(); } @@ -121,8 +132,7 @@ void DeardorffDiffStress::correct(const tmp& tgradU) K = 0.5*tr(B_); bound(K, k0()); - nuSgs_ = ck_*sqrt(K)*delta(); - nuSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(K); } diff --git a/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H b/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H index bdffcf061c..67d422d64b 100644 --- a/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H +++ b/src/turbulenceModels/incompressible/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/incompressible/LES/LRRDiffStress/LRRDiffStress.C b/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.C index 3b915025e9..3931684b6a 100644 --- a/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.C +++ b/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.C @@ -41,6 +41,15 @@ namespace LESModels defineTypeNameAndDebug(LRRDiffStress, 0); addToRunTimeSelectionTable(LESModel, LRRDiffStress, dictionary); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void LRRDiffStress::updateSubGridScaleFields(const volScalarField& K) +{ + nuSgs_ = ck_*sqrt(K)*delta(); + nuSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // LRRDiffStress::LRRDiffStress @@ -81,6 +90,8 @@ LRRDiffStress::LRRDiffStress ) ) { + updateSubGridScaleFields(0.5*tr(B_)); + printCoeffs(); } @@ -131,8 +142,7 @@ void LRRDiffStress::correct(const tmp& tgradU) K = 0.5*tr(B_); bound(K, k0()); - nuSgs_ = ck_*sqrt(K)*delta(); - nuSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(K); } diff --git a/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H b/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H index 55bb7c5d48..586d4a9f5d 100644 --- a/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H +++ b/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H @@ -80,6 +80,9 @@ class LRRDiffStress // Private Member Functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(const volScalarField& K); + // Disallow default bitwise copy construct and assignment LRRDiffStress(const LRRDiffStress&); LRRDiffStress& operator=(const LRRDiffStress&); diff --git a/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.C b/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.C index 0435908316..d19c2c7898 100644 --- a/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.C +++ b/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.C @@ -41,6 +41,15 @@ namespace LESModels defineTypeNameAndDebug(Smagorinsky, 0); addToRunTimeSelectionTable(LESModel, Smagorinsky, dictionary); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Smagorinsky::updateSubGridScaleFields(const volTensorField& gradU) +{ + nuSgs_ = ck_*delta()*sqrt(k(gradU)); + nuSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Smagorinsky::Smagorinsky @@ -62,7 +71,9 @@ Smagorinsky::Smagorinsky 0.094 ) ) -{} +{ + updateSubGridScaleFields(fvc::grad(U)); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -70,9 +81,7 @@ Smagorinsky::Smagorinsky void Smagorinsky::correct(const tmp& gradU) { GenEddyVisc::correct(gradU); - - nuSgs_ = ck_*delta()*sqrt(k(gradU)); - nuSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(gradU()); } diff --git a/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H b/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H index eba420101d..13966f4883 100644 --- a/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H +++ b/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H @@ -77,6 +77,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/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C index 6dfaa35ef1..11fd61b957 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C @@ -41,6 +41,15 @@ namespace LESModels defineTypeNameAndDebug(SpalartAllmaras, 0); addToRunTimeSelectionTable(LESModel, SpalartAllmaras, dictionary); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void SpalartAllmaras::updateSubGridScaleFields() +{ + nuSgs_.internalField() = fv1()*nuTilda_.internalField(); + nuSgs_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // tmp SpalartAllmaras::fv1() const @@ -265,7 +274,10 @@ SpalartAllmaras::SpalartAllmaras ), mesh_ ) -{} +{ + updateSubGridScaleFields(); +} + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -305,8 +317,7 @@ void SpalartAllmaras::correct(const tmp& gradU) bound(nuTilda_, dimensionedScalar("zero", nuTilda_.dimensions(), 0.0)); nuTilda_.correctBoundaryConditions(); - nuSgs_.internalField() = fv1()*nuTilda_.internalField(); - nuSgs_.correctBoundaryConditions(); + updateSubGridScaleFields(); } diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H index b813075b1d..60dfbcc555 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H @@ -59,6 +59,9 @@ class SpalartAllmaras { // Private member functions + //- Update sub-grid scale fields + void updateSubGridScaleFields(); + // Disallow default bitwise copy construct and assignment SpalartAllmaras(const SpalartAllmaras&); SpalartAllmaras& operator=(const SpalartAllmaras&); diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C index ef02e48456..3f3aa7699b 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C @@ -44,7 +44,7 @@ void Foam::IDDESDelta::calcDelta() const Vector