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;
 };