From f7040f7cc1a0a0018b27e3080338c3777199de00 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 29 Jan 2009 13:41:08 +0000 Subject: [PATCH 1/5] using DpDt and adding run-time modifiable timestep support --- .../solvers/heatTransfer/buoyantFoam/buoyantFoam.C | 7 ++++++- .../solvers/heatTransfer/buoyantFoam/createFields.H | 5 +++-- applications/solvers/heatTransfer/buoyantFoam/hEqn.H | 4 +--- applications/solvers/heatTransfer/buoyantFoam/pEqn.H | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) 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" From 6c278d6fea2c3143b2271b3b0b344d4f5ed0ad38 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 30 Jan 2009 16:18:38 +0000 Subject: [PATCH 2/5] corrected initialisation of sub-grid scale fields --- .../DeardorffDiffStress/DeardorffDiffStress.C | 14 ++++++-- .../DeardorffDiffStress/DeardorffDiffStress.H | 3 ++ .../LES/LRRDiffStress/LRRDiffStress.C | 14 ++++++-- .../LES/LRRDiffStress/LRRDiffStress.H | 3 ++ .../LES/Smagorinsky/Smagorinsky.C | 17 ++++++--- .../LES/Smagorinsky/Smagorinsky.H | 3 ++ .../LES/SpalartAllmaras/SpalartAllmaras.C | 17 +++++++-- .../LES/SpalartAllmaras/SpalartAllmaras.H | 3 ++ .../IDDESDelta/IDDESDelta.C | 2 +- .../dynMixedSmagorinsky/dynMixedSmagorinsky.C | 2 +- .../LES/dynOneEqEddy/dynOneEqEddy.C | 12 +++++-- .../LES/dynOneEqEddy/dynOneEqEddy.H | 3 ++ .../LES/dynSmagorinsky/dynSmagorinsky.C | 15 +++++--- .../LES/dynSmagorinsky/dynSmagorinsky.H | 3 ++ .../LES/kOmegaSSTSAS/kOmegaSSTSAS.C | 19 +++++++--- .../LES/kOmegaSSTSAS/kOmegaSSTSAS.H | 6 +++- .../LES/locDynOneEqEddy/locDynOneEqEddy.C | 17 +++++++-- .../LES/locDynOneEqEddy/locDynOneEqEddy.H | 7 ++++ .../incompressible/LES/oneEqEddy/oneEqEddy.C | 15 ++++++-- .../incompressible/LES/oneEqEddy/oneEqEddy.H | 3 ++ .../LES/spectEddyVisc/spectEddyVisc.C | 36 +++++++++++-------- .../LES/spectEddyVisc/spectEddyVisc.H | 3 ++ 22 files changed, 174 insertions(+), 43 deletions(-) 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 a6d7b44bb5..91ee6900b0 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 @@ -266,7 +275,10 @@ SpalartAllmaras::SpalartAllmaras ), mesh_ ) -{} +{ + updateSubGridScaleFields(); +} + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -306,8 +318,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