diff --git a/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C b/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C index 2f7bdb161799177f4174f328dad2cd0676c9445b..b78dddf279963f53a2940ea456616db575db0daf 100644 --- a/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C +++ b/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C @@ -74,7 +74,6 @@ buoyantKEpsilon<BasicTurbulenceModel>::buoyantKEpsilon { if (type == typeName) { - kEpsilon<BasicTurbulenceModel>::correctNut(); this->printCoeffs(type); } } diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C index d2417a85307580599ec74a31d11c305500d833a8..245a0ff55c80b11adbc348d6911a54c2d076d7f8 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C @@ -181,14 +181,6 @@ LamBremhorstKE::LamBremhorstKE if (type == typeName) { printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienCubicKE/LienCubicKE.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienCubicKE/LienCubicKE.C index 440517134f07cd0b98c70231e5df978778448136..cc58aabc787e045e4dbae86455cc1fdbc2a3de22 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienCubicKE/LienCubicKE.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienCubicKE/LienCubicKE.C @@ -331,14 +331,6 @@ LienCubicKE::LienCubicKE if (type == typeName) { printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienLeschziner/LienLeschziner.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienLeschziner/LienLeschziner.C index 29b5aa0114f977afce4a5635fd978c97bca74f9e..0b1ec7320235533b0141d29de6ef45cff0e06ef9 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienLeschziner/LienLeschziner.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LienLeschziner/LienLeschziner.C @@ -225,14 +225,6 @@ LienLeschziner::LienLeschziner if (type == typeName) { printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/ShihQuadraticKE/ShihQuadraticKE.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/ShihQuadraticKE/ShihQuadraticKE.C index 38dc7ab62b44f9233a1b327f4b5b8be7e1316650..c2d22054c2df7fc76de332a080729e84f3a6ca39 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/ShihQuadraticKE/ShihQuadraticKE.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/ShihQuadraticKE/ShihQuadraticKE.C @@ -223,14 +223,6 @@ ShihQuadraticKE::ShihQuadraticKE if (type == typeName) { printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.C index cc59e63e598695d8137de202dd2ca1ff1a9e2634..58a84fc1482f935b199afc03b66d71ca126af707 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.C @@ -593,6 +593,10 @@ bool kkLOmega::read() } +void kkLOmega::validate() +{} + + void kkLOmega::correct() { eddyViscosity<incompressible::RASModel>::correct(); diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.H b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.H index 68ba3793804c1b002f16d6fe01aa9718881e8abc..53bd64e7f8afabfbdd19f82ac3df9d07da7b989d 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.H +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kkLOmega/kkLOmega.H @@ -301,6 +301,10 @@ public: return epsilon_; } + //- Validate the turbulence fields after construction + // Update turbulence viscosity and other derived fields as requires + virtual void validate(); + //- Solve the turbulence equations and correct the turbulence viscosity virtual void correct(); }; diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/qZeta/qZeta.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/qZeta/qZeta.C index bc57fd4200ea6d346df69a900ef47460710cce51..44a5c331214720a8c0dba4eba3ec81a47e2ab53e 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/qZeta/qZeta.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/qZeta/qZeta.C @@ -208,14 +208,6 @@ qZeta::qZeta if (type == typeName) { printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/phaseCompressible/LES/Niceno/NicenoKEqn.C b/src/TurbulenceModels/phaseCompressible/LES/Niceno/NicenoKEqn.C index 2d3ee8421b066ca0488fc68d0a2758d89f562cf6..44eb97019b1cc0626156a224e75e40797a8e1144 100644 --- a/src/TurbulenceModels/phaseCompressible/LES/Niceno/NicenoKEqn.C +++ b/src/TurbulenceModels/phaseCompressible/LES/Niceno/NicenoKEqn.C @@ -96,9 +96,6 @@ NicenoKEqn<BasicTurbulenceModel>::NicenoKEqn { if (type == typeName) { - // Cannot correct nut yet: construction of the phases is not complete - // correctNut(); - this->printCoeffs(type); } } diff --git a/src/TurbulenceModels/phaseCompressible/LES/SmagorinskyZhang/SmagorinskyZhang.C b/src/TurbulenceModels/phaseCompressible/LES/SmagorinskyZhang/SmagorinskyZhang.C index 4eb3187d953ed1ce1e704579a342532847ca6975..f7bfe4fbf68e279152c5678f815476d2f109109b 100644 --- a/src/TurbulenceModels/phaseCompressible/LES/SmagorinskyZhang/SmagorinskyZhang.C +++ b/src/TurbulenceModels/phaseCompressible/LES/SmagorinskyZhang/SmagorinskyZhang.C @@ -73,9 +73,6 @@ SmagorinskyZhang<BasicTurbulenceModel>::SmagorinskyZhang { if (type == typeName) { - // Cannot correct nut yet: construction of the phases is not complete - // correctNut(); - this->printCoeffs(type); } } diff --git a/src/TurbulenceModels/phaseCompressible/LES/continuousGasKEqn/continuousGasKEqn.C b/src/TurbulenceModels/phaseCompressible/LES/continuousGasKEqn/continuousGasKEqn.C index 6bfec32e68484174ff8f4e0b2b220d6c644eb0ee..00e23e7c32a73ed6012f1a4be134e6fc294a2121 100644 --- a/src/TurbulenceModels/phaseCompressible/LES/continuousGasKEqn/continuousGasKEqn.C +++ b/src/TurbulenceModels/phaseCompressible/LES/continuousGasKEqn/continuousGasKEqn.C @@ -75,7 +75,6 @@ continuousGasKEqn<BasicTurbulenceModel>::continuousGasKEqn { if (type == typeName) { - kEqn<BasicTurbulenceModel>::correctNut(); this->printCoeffs(type); } } diff --git a/src/TurbulenceModels/phaseCompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C b/src/TurbulenceModels/phaseCompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C index c7d0d22e4426e3a2ed1d58aac745f24e4a776177..843ecc015d7a85fd7333146b2541dbf8eb0f01fc 100644 --- a/src/TurbulenceModels/phaseCompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C +++ b/src/TurbulenceModels/phaseCompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C @@ -107,9 +107,6 @@ LaheyKEpsilon<BasicTurbulenceModel>::LaheyKEpsilon if (type == typeName) { this->printCoeffs(type); - - // Cannot correct nut yet: construction of the phases is not complete - // correctNut(); } } diff --git a/src/TurbulenceModels/phaseCompressible/RAS/continuousGasKEpsilon/continuousGasKEpsilon.C b/src/TurbulenceModels/phaseCompressible/RAS/continuousGasKEpsilon/continuousGasKEpsilon.C index 3f4798e515acbc69d65ee38828e9a7e946a7be32..86d6a7f334fc493afd951eea06c2f01ea60ebba8 100644 --- a/src/TurbulenceModels/phaseCompressible/RAS/continuousGasKEpsilon/continuousGasKEpsilon.C +++ b/src/TurbulenceModels/phaseCompressible/RAS/continuousGasKEpsilon/continuousGasKEpsilon.C @@ -89,8 +89,6 @@ continuousGasKEpsilon<BasicTurbulenceModel>::continuousGasKEpsilon { if (type == typeName) { - // Cannot correct nut yet: construction of the phases is not complete - // kEpsilon<BasicTurbulenceModel>::correctNut(); this->printCoeffs(type); } } diff --git a/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C b/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C index 7e5114d82876dc5f1e8ad4d92582fc360fc53fa5..76d7e4d0be12dafffede5d945ab72f7a9b817e0c 100644 --- a/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C +++ b/src/TurbulenceModels/phaseCompressible/RAS/kOmegaSSTSato/kOmegaSSTSato.C @@ -76,8 +76,6 @@ kOmegaSSTSato<BasicTurbulenceModel>::kOmegaSSTSato { if (type == typeName) { - // Cannot correct nut yet: construction of the phases is not complete - // correctNut(); this->printCoeffs(type); } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C b/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C index 5a00433a347e3b2649fefa44add962105c6aa6fd..e958e933246e7f63129950b4c49bfba2c97a5af2 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C +++ b/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C @@ -112,14 +112,6 @@ DeardorffDiffStress<BasicTurbulenceModel>::DeardorffDiffStress { this->printCoeffs(type); this->boundNormalStress(this->R_); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C b/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C index 7de1f91f1ed0ba1456751d93e4e9fd575f743e5d..9827f76063cafcba37bd8482cfc7aaed85fe4782 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C +++ b/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C @@ -114,14 +114,6 @@ Smagorinsky<BasicTurbulenceModel>::Smagorinsky if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C b/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C index fa6ddc86e3ea800cd83371948c04506c999f7719..ed5cae80da06e6bc38f4a477d073b7381c0dcf34 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C +++ b/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C @@ -319,14 +319,6 @@ SpalartAllmarasDES<BasicTurbulenceModel>::SpalartAllmarasDES if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C b/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C index 3879d5fffe17e8abfad3c59394c3bf3ae6606fff..49a353ba1da68a04c55825cd20a3772a68585dee 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C +++ b/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C @@ -144,14 +144,6 @@ WALE<BasicTurbulenceModel>::WALE if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/dynamicKEqn/dynamicKEqn.C b/src/TurbulenceModels/turbulenceModels/LES/dynamicKEqn/dynamicKEqn.C index 7fd40001837d3245a5b4939feade929aa7dae004..ac076991e8eab4d90fd3956aea0410e7fce73a37 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/dynamicKEqn/dynamicKEqn.C +++ b/src/TurbulenceModels/turbulenceModels/LES/dynamicKEqn/dynamicKEqn.C @@ -186,14 +186,6 @@ dynamicKEqn<BasicTurbulenceModel>::dynamicKEqn if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C b/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C index 7c5c403fcc8df4147f295009e5a60a9f879a5f4b..6a6fb02b93002e816bf22f1cdda248fd6d822a98 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C +++ b/src/TurbulenceModels/turbulenceModels/LES/dynamicLagrangian/dynamicLagrangian.C @@ -123,14 +123,6 @@ dynamicLagrangian<BasicTurbulenceModel>::dynamicLagrangian if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C b/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C index c02556ea037bebdc55874d95d0ab994e84e77a7c..ef2b2b85359f3af143c96d62cd2d278d9ec392c4 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C +++ b/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C @@ -114,14 +114,6 @@ kEqn<BasicTurbulenceModel>::kEqn if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C b/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C index fe33923d19729cd85c95192be0709ec7221a0cb1..2b8be527627a18ac325c7a8680d31cf826f08034 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C @@ -205,14 +205,6 @@ LRR<BasicTurbulenceModel>::LRR this->boundNormalStress(this->R_); bound(epsilon_, this->epsilonMin_); k_ = 0.5*tr(this->R_); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C b/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C index e5ef40222a7ffb74159ba79d148251ca7950bf7e..d3fca3307b66954895d545de38f884cad5d8055c 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C @@ -205,14 +205,6 @@ LaunderSharmaKE<BasicTurbulenceModel>::LaunderSharmaKE if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C b/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C index 18d22249274c03663beaf589b034feec99ae2c09..1eec3da8a91d5e6df98859714891200436ff577f 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C @@ -206,14 +206,6 @@ RNGkEpsilon<BasicTurbulenceModel>::RNGkEpsilon if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/SSG/SSG.C b/src/TurbulenceModels/turbulenceModels/RAS/SSG/SSG.C index 34798924b6927f695a45b83bc4c18176e2a79f6e..9f9cc534640177ef2c0d1bee83567271ad4bc0af 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/SSG/SSG.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/SSG/SSG.C @@ -214,14 +214,6 @@ SSG<BasicTurbulenceModel>::SSG this->boundNormalStress(this->R_); bound(epsilon_, this->epsilonMin_); k_ = 0.5*tr(this->R_); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C b/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C index 50f9a989f0bb2b86a1c152e7bfccbb476a890e71..a029db7ad39da7cea715558a54d5e3a4ba92ccb4 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C @@ -256,14 +256,6 @@ SpalartAllmaras<BasicTurbulenceModel>::SpalartAllmaras if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C index 1deb554d1cc00e6abc97a8395d79c5cdf93378e6..75d9a3d1b849329d597d4bb0cdf1aa0d6f348f7a 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C @@ -42,6 +42,16 @@ void kEpsilon<BasicTurbulenceModel>::correctNut() this->nut_ = Cmu_*sqr(k_)/epsilon_; this->nut_.correctBoundaryConditions(); + // const_cast needed because the operators and functions of fvOptions + // are currently non-const. + fv::optionList& fvOptions = const_cast<fv::optionList&> + ( + this->mesh_.objectRegistry::template + lookupObject<fv::optionList>("fvOptions") + ); + + fvOptions.correct(this->nut_); + BasicTurbulenceModel::correctNut(); } @@ -189,14 +199,6 @@ kEpsilon<BasicTurbulenceModel>::kEpsilon if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } @@ -300,7 +302,6 @@ void kEpsilon<BasicTurbulenceModel>::correct() bound(k_, this->kMin_); correctNut(); - fvOptions.correct(nut); } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kOmega/kOmega.C b/src/TurbulenceModels/turbulenceModels/RAS/kOmega/kOmega.C index 4578b5811f747c96bfdd1d6f36a8ee021c230d78..5f5e76c03f9109674ce846c69eb857f9d12dcb44 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kOmega/kOmega.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kOmega/kOmega.C @@ -148,14 +148,6 @@ kOmega<BasicTurbulenceModel>::kOmega if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C b/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C index f634aa65bebb34c7a9b23ca1c4ec8dcf7fced3e5..223492ba888dc013520ef7d2d5b61ec5f173828a 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C @@ -351,14 +351,6 @@ kOmegaSST<BasicTurbulenceModel>::kOmegaSST if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C index c3428a64c9728ecd9077ec138021ff1fadbfbd28..81212cb41084716dd7b158450a3c4c6c0688f7af 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C @@ -227,14 +227,6 @@ realizableKE<BasicTurbulenceModel>::realizableKE if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C index 95cb209a45dcfc149992003d844cca08318d885c..4a76ee1870a16cd82f13994ab4c73dc54c69c177 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C @@ -239,14 +239,6 @@ v2f<BasicTurbulenceModel>::v2f if (type == typeName) { this->printCoeffs(type); - - // Correct nut for single-phase solvers only. - // For multiphase solvers the phase construction is not complete - // at this point. - if (isType<geometricOneField>(alpha)) - { - correctNut(); - } } } diff --git a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C index 63dc8d581ee5dda02af0b31c4c8db5b1c2a87875..55001003da8088632c50f29b9fa100c167a17938 100644 --- a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C +++ b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C @@ -295,6 +295,13 @@ Foam::ReynoldsStress<BasicTurbulenceModel>::divDevRhoReff } +template<class BasicTurbulenceModel> +void Foam::ReynoldsStress<BasicTurbulenceModel>::validate() +{ + correctNut(); +} + + template<class BasicTurbulenceModel> void Foam::ReynoldsStress<BasicTurbulenceModel>::correct() { diff --git a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H index b27468b5a335cadcf34b6c59d2533c8394759795..0beb0f5885aa4435ad31b3362c3ce777eb95ea5c 100644 --- a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H +++ b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H @@ -140,6 +140,10 @@ public: volVectorField& U ) const; + //- Validate the turbulence fields after construction + // Update turbulence viscosity and other derived fields as requires + virtual void validate(); + //- Solve the turbulence equations and correct the turbulence viscosity virtual void correct() = 0; }; diff --git a/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.C b/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.C index 641f012bee2b4a57d26ef88be9b37f12064e9364..82a0da7719bbba147a6533d27de051818b7f29fc 100644 --- a/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.C +++ b/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.C @@ -121,6 +121,13 @@ Foam::eddyViscosity<BasicTurbulenceModel>::R() const } +template<class BasicTurbulenceModel> +void Foam::eddyViscosity<BasicTurbulenceModel>::validate() +{ + correctNut(); +} + + template<class BasicTurbulenceModel> void Foam::eddyViscosity<BasicTurbulenceModel>::correct() { diff --git a/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H b/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H index e46543864b54f5fb90eb6db4df035a0dc28afd56..3a26fac199d2ce07e960df4ecdee01b425a84516 100644 --- a/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H +++ b/src/TurbulenceModels/turbulenceModels/eddyViscosity/eddyViscosity.H @@ -127,6 +127,10 @@ public: //- Return the Reynolds stress tensor virtual tmp<volSymmTensorField> R() const; + //- Validate the turbulence fields after construction + // Update turbulence viscosity and other derived fields as requires + virtual void validate(); + //- Solve the turbulence equations and correct the turbulence viscosity virtual void correct() = 0; }; diff --git a/src/TurbulenceModels/turbulenceModels/turbulenceModel.C b/src/TurbulenceModels/turbulenceModels/turbulenceModel.C index 0cee0437681021b74a947918fd398c36a609a44e..58a1c34ebd096de18aaea52c15fc64a76330df15 100644 --- a/src/TurbulenceModels/turbulenceModels/turbulenceModel.C +++ b/src/TurbulenceModels/turbulenceModels/turbulenceModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,6 +84,10 @@ bool Foam::turbulenceModel::read() } +void Foam::turbulenceModel::validate() +{} + + void Foam::turbulenceModel::correct() { if (mesh_.changing()) diff --git a/src/TurbulenceModels/turbulenceModels/turbulenceModel.H b/src/TurbulenceModels/turbulenceModels/turbulenceModel.H index a634cedcbe507076dbad30bc5c61e9eee30db40e..43b848b23f0383f3f64b957f5a5d3574088f1f73 100644 --- a/src/TurbulenceModels/turbulenceModels/turbulenceModel.H +++ b/src/TurbulenceModels/turbulenceModels/turbulenceModel.H @@ -205,6 +205,10 @@ public: //- Return the Reynolds stress tensor virtual tmp<volSymmTensorField> R() const = 0; + //- Validate the turbulence fields after construction + // Update derived fields as required + virtual void validate(); + //- Solve the turbulence equations and correct the turbulence viscosity virtual void correct() = 0; };