diff --git a/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C b/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C
index b8313c57253b7331cd1e1a4f679c62719aa603ba..a16ca46fbcd1ceff0ae325fc8dd2931beb642f3a 100644
--- a/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C
+++ b/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C
@@ -149,6 +149,17 @@ Foam::DPMIncompressibleTurbulenceModel<TransportModel>::devReff() const
 }
 
 
+template<class TransportModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::DPMIncompressibleTurbulenceModel<TransportModel>::devReff
+(
+    const volVectorField& U
+) const
+{
+    return devRhoReff(U);
+}
+
+
 template<class TransportModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::DPMIncompressibleTurbulenceModel<TransportModel>::divDevReff
@@ -170,6 +181,19 @@ Foam::DPMIncompressibleTurbulenceModel<TransportModel>::devRhoReff() const
 }
 
 
+template<class TransportModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::DPMIncompressibleTurbulenceModel<TransportModel>::devRhoReff
+(
+    const volVectorField& U
+) const
+{
+    NotImplemented;
+
+    return nullptr;
+}
+
+
 template<class TransportModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::DPMIncompressibleTurbulenceModel<TransportModel>::divDevRhoReff
diff --git a/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H b/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H
index 914c93d72ffff5637521fcee8be05578e2078ec4..14d36e9f2f78aa99ef90d7ef1123c1e6addea8f8 100644
--- a/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H
+++ b/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H
@@ -116,12 +116,24 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
 
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 };
diff --git a/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H b/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H
index 07de20a43d8972e1d51885da579598800c6e0c95..abed13fee96d24cfeebf4f4b758dd707ddad01dd 100644
--- a/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H
+++ b/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H
@@ -123,6 +123,13 @@ public:
         //- Return the effective stress tensor including the laminar stress
         virtual tmp<volSymmTensorField> devRhoReff() const = 0;
 
+        //- Return the effective stress tensor including
+        //- the laminar stress based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const = 0;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const = 0;
 
diff --git a/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.C b/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.C
index 56c7381703fa549ee3be104142abd6efbbe14787..e197d22803d00edb139cc1915fb13b0fe829f5cf 100644
--- a/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.C
+++ b/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.C
@@ -107,6 +107,17 @@ Foam::IncompressibleTurbulenceModel<TransportModel>::devReff() const
 }
 
 
+template<class TransportModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::IncompressibleTurbulenceModel<TransportModel>::devReff
+(
+    const volVectorField& U
+) const
+{
+    return devRhoReff(U);
+}
+
+
 template<class TransportModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::IncompressibleTurbulenceModel<TransportModel>::divDevReff
@@ -128,6 +139,19 @@ Foam::IncompressibleTurbulenceModel<TransportModel>::devRhoReff() const
 }
 
 
+template<class TransportModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::IncompressibleTurbulenceModel<TransportModel>::devRhoReff
+(
+    const volVectorField& U
+) const
+{
+    NotImplemented;
+
+    return nullptr;
+}
+
+
 template<class TransportModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::IncompressibleTurbulenceModel<TransportModel>::divDevRhoReff
diff --git a/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.H b/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.H
index 9734d732b09b68b828cdc5eaad8a22e9bb6720db..291fc37eb8c18da54e673f5fd5cca6c557c24bdc 100644
--- a/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.H
+++ b/src/TurbulenceModels/incompressible/IncompressibleTurbulenceModel/IncompressibleTurbulenceModel.H
@@ -108,12 +108,24 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
 
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/TurbulenceModels/incompressible/incompressibleRhoTurbulenceModel.H b/src/TurbulenceModels/incompressible/incompressibleRhoTurbulenceModel.H
index 14715b344ee7d0cae1cf469dd3c002a855bd256f..b3dee1ed3bd35981d02c033e1f77c2e957d8ac19 100644
--- a/src/TurbulenceModels/incompressible/incompressibleRhoTurbulenceModel.H
+++ b/src/TurbulenceModels/incompressible/incompressibleRhoTurbulenceModel.H
@@ -139,6 +139,13 @@ public:
         //- Return the effective stress tensor including the laminar stress
         virtual tmp<volSymmTensorField> devReff() const = 0;
 
+        //- Return the effective stress tensor including
+        //- the laminar stress based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const = 0;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
 };
diff --git a/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H b/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H
index adb8438702fa20664d4b09a8a8362cc704879ba5..5578a510818d3e107beca25ee236daec4e3b7172 100644
--- a/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H
+++ b/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H
@@ -138,6 +138,13 @@ public:
         //- Return the effective stress tensor including the laminar stress
         virtual tmp<volSymmTensorField> devReff() const = 0;
 
+        //- Return the effective stress tensor including
+        //- the laminar stress based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const = 0;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
 };
diff --git a/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.C b/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.C
index 137c92a0373f8f18502eaddb176ea81beed849ba..bee2cc0ed8e3059be93406d3e421288d9377c6a5 100644
--- a/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.C
+++ b/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.C
@@ -150,6 +150,17 @@ Foam::PhaseIncompressibleTurbulenceModel<TransportModel>::devReff() const
 }
 
 
+template<class TransportModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::PhaseIncompressibleTurbulenceModel<TransportModel>::devReff
+(
+    const volVectorField& U
+) const
+{
+    return devRhoReff(U);
+}
+
+
 template<class TransportModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::PhaseIncompressibleTurbulenceModel<TransportModel>::divDevReff
@@ -171,6 +182,19 @@ Foam::PhaseIncompressibleTurbulenceModel<TransportModel>::devRhoReff() const
 }
 
 
+template<class TransportModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::PhaseIncompressibleTurbulenceModel<TransportModel>::devRhoReff
+(
+    const volVectorField& U
+) const
+{
+    NotImplemented;
+
+    return nullptr;
+}
+
+
 template<class TransportModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::PhaseIncompressibleTurbulenceModel<TransportModel>::divDevRhoReff
diff --git a/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.H b/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.H
index b25692493e13616dfc155bf54361b04d98c2aeca..cebba9df4fe5a901dbf3e56dcab6f5b6d72c4425 100644
--- a/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.H
+++ b/src/TurbulenceModels/phaseIncompressible/PhaseIncompressibleTurbulenceModel/PhaseIncompressibleTurbulenceModel.H
@@ -117,12 +117,24 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
 
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 };
diff --git a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C
index dcf05d0a57616820aca64d816f3ddb459ca4af3c..a3a7b42d622e0edec60109e2c3ec495b266cad01 100644
--- a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C
+++ b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.C
@@ -208,6 +208,17 @@ Foam::ReynoldsStress<BasicTurbulenceModel>::k() const
 template<class BasicTurbulenceModel>
 Foam::tmp<Foam::volSymmTensorField>
 Foam::ReynoldsStress<BasicTurbulenceModel>::devRhoReff() const
+{
+    return devRhoReff(this->U_);
+}
+
+
+template<class BasicTurbulenceModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::ReynoldsStress<BasicTurbulenceModel>::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     return tmp<volSymmTensorField>
     (
@@ -223,7 +234,7 @@ Foam::ReynoldsStress<BasicTurbulenceModel>::devRhoReff() const
             ),
             this->alpha_*this->rho_*R_
           - (this->alpha_*this->rho_*this->nu())
-           *dev(twoSymm(fvc::grad(this->U_)))
+           *dev(twoSymm(fvc::grad(U)))
         )
     );
 }
diff --git a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H
index 371d1ecb52c195d56337c4c7a826df55eb1cf8b9..612cc61047475571ef82cbf5e8088235e6286a7a 100644
--- a/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H
+++ b/src/TurbulenceModels/turbulenceModels/ReynoldsStress/ReynoldsStress.H
@@ -140,6 +140,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.C b/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.C
index ed314a944be43c1b54d0cdb11387f02f28c384bc..6c03e0eb00849a70d3c8ad7b1ba22e0928c36e65 100644
--- a/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.C
+++ b/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.C
@@ -104,6 +104,7 @@ bool Maxwell<BasicTurbulenceModel>::read()
     return false;
 }
 
+
 template<class BasicTurbulenceModel>
 tmp<Foam::volSymmTensorField>
 Maxwell<BasicTurbulenceModel>::R() const
@@ -111,9 +112,18 @@ Maxwell<BasicTurbulenceModel>::R() const
     return sigma_;
 }
 
+
 template<class BasicTurbulenceModel>
 tmp<Foam::volSymmTensorField>
 Maxwell<BasicTurbulenceModel>::devRhoReff() const
+{
+    return devRhoReff(this->U_);
+}
+
+
+template<class BasicTurbulenceModel>
+tmp<Foam::volSymmTensorField>
+Maxwell<BasicTurbulenceModel>::devRhoReff(const volVectorField& U) const
 {
     return tmp<volSymmTensorField>
     (
@@ -129,7 +139,7 @@ Maxwell<BasicTurbulenceModel>::devRhoReff() const
             ),
             this->alpha_*this->rho_*sigma_
           - (this->alpha_*this->rho_*this->nu())
-           *dev(twoSymm(fvc::grad(this->U_)))
+           *dev(twoSymm(fvc::grad(U)))
         )
     );
 }
diff --git a/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.H b/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.H
index 1f3ce3c6863ed322761e1bcc4b7a2d2a5306698a..d446622fa41df231ffb489525fe654ce0c59c699 100644
--- a/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.H
+++ b/src/TurbulenceModels/turbulenceModels/laminar/Maxwell/Maxwell.H
@@ -143,6 +143,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.C b/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.C
index e6515388ca190fcd5b7e816a45322cdcb429602f..b71797502ba7825d4897736017d59d1b4deb527b 100644
--- a/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.C
+++ b/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.C
@@ -70,6 +70,17 @@ bool Foam::linearViscousStress<BasicTurbulenceModel>::read()
 template<class BasicTurbulenceModel>
 Foam::tmp<Foam::volSymmTensorField>
 Foam::linearViscousStress<BasicTurbulenceModel>::devRhoReff() const
+{
+    return devRhoReff(this->U_);
+}
+
+
+template<class BasicTurbulenceModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::linearViscousStress<BasicTurbulenceModel>::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     return tmp<volSymmTensorField>
     (
@@ -84,7 +95,7 @@ Foam::linearViscousStress<BasicTurbulenceModel>::devRhoReff() const
                 IOobject::NO_WRITE
             ),
             (-(this->alpha_*this->rho_*this->nuEff()))
-           *dev(twoSymm(fvc::grad(this->U_)))
+           *dev(twoSymm(fvc::grad(U)))
         )
     );
 }
diff --git a/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.H b/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.H
index 3c81b7227e8c9afc7f56d4a546510a28f32f0cdd..c307c6268c4b0d2f7c045d5577bb5f15782e26cb 100644
--- a/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.H
+++ b/src/TurbulenceModels/turbulenceModels/linearViscousStress/linearViscousStress.H
@@ -91,6 +91,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.C b/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.C
index d92488a662f5ee73afb22c89389413002162455d..699fa25e7b80f08944b8e579a802dd6fd62dfbc5 100644
--- a/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.C
+++ b/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.C
@@ -88,12 +88,24 @@ Foam::nonlinearEddyViscosity<BasicTurbulenceModel>::R() const
 template<class BasicTurbulenceModel>
 Foam::tmp<Foam::volSymmTensorField>
 Foam::nonlinearEddyViscosity<BasicTurbulenceModel>::devRhoReff() const
+{
+    return devRhoReff(this->U_);
+}
+
+
+template<class BasicTurbulenceModel>
+Foam::tmp<Foam::volSymmTensorField>
+Foam::nonlinearEddyViscosity<BasicTurbulenceModel>::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     tmp<volSymmTensorField> tdevRhoReff
     (
-        eddyViscosity<BasicTurbulenceModel>::devRhoReff()
+        eddyViscosity<BasicTurbulenceModel>::devRhoReff(U)
     );
     tdevRhoReff.ref() += this->rho_*nonlinearStress_;
+
     return tdevRhoReff;
 }
 
diff --git a/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.H b/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.H
index 2d97c5ba70b8e64c765f331b8c1da898c78f2db9..be6f16c6f63fce9cc435212790ed22ab4b337c47 100644
--- a/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.H
+++ b/src/TurbulenceModels/turbulenceModels/nonlinearEddyViscosity/nonlinearEddyViscosity.H
@@ -107,6 +107,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.C
index 7bed329b68c46a4a0b4c06662dd180054450a123..d79320f848a6b1c24e1a660a161349cb08d363f8 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.C
@@ -71,6 +71,15 @@ adjointLaminar::adjointLaminar
 tmp<volSymmTensorField> adjointLaminar::devReff() const
 {
     const volVectorField& Ua = adjointVars_.Ua();
+    return devReff(Ua);
+}
+
+
+tmp<volSymmTensorField> adjointLaminar::devReff
+(
+    const volVectorField& U
+) const
+{
     return tmp<volSymmTensorField>
     (
         new volSymmTensorField
@@ -83,7 +92,7 @@ tmp<volSymmTensorField> adjointLaminar::devReff() const
                 IOobject::NO_READ,
                 IOobject::NO_WRITE
             ),
-           -nu()*dev(twoSymm(fvc::grad(Ua)))
+           -nu()*dev(twoSymm(fvc::grad(U)))
         )
     );
 }
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.H b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.H
index e0e155e5fd261bef23d4f668cf6589432b6f7767..51a52df5d6f46cd89c2610e11630cbb406032584 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.H
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointLaminar/adjointLaminar.H
@@ -100,6 +100,12 @@ public:
         //- Return the effective stress tensor, i.e. the adjointLaminar stress
         virtual tmp<volSymmTensorField> devReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the diffusion term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointRASModel/adjointRASModel.H b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointRASModel/adjointRASModel.H
index 4b654311ae3bf20ba5b0842b0771de476c27ec53..6abd793144176151a3a477f85ced978ffadd0080 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointRASModel/adjointRASModel.H
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointRASModel/adjointRASModel.H
@@ -261,6 +261,12 @@ public:
         //- Return the effective stress tensor including the laminar stress
         virtual tmp<volSymmTensorField> devReff() const = 0;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const = 0;
+
         //- Return the diffusion term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.C b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.C
index 073ea69ffde198c6b27a6ce56dbb951ff0670fa6..7878349822708ebf00a5f0326e72597cb5e38974 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.C
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.C
@@ -703,7 +703,17 @@ adjointSpalartAllmaras::adjointSpalartAllmaras
 tmp<volSymmTensorField> adjointSpalartAllmaras::devReff() const
 {
     const volVectorField& Ua = adjointVars_.UaInst();
-    return tmp<volSymmTensorField>::New
+    return devReff(Ua);
+}
+
+
+tmp<volSymmTensorField> adjointSpalartAllmaras::devReff
+(
+    const volVectorField& U
+) const
+{
+    return
+        tmp<volSymmTensorField>::New
         (
             IOobject
             (
@@ -713,7 +723,7 @@ tmp<volSymmTensorField> adjointSpalartAllmaras::devReff() const
                 IOobject::NO_READ,
                 IOobject::NO_WRITE
             ),
-           -nuEff()*dev(twoSymm(fvc::grad(Ua)))
+           -nuEff()*dev(twoSymm(fvc::grad(U)))
         );
 }
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.H b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.H
index 6404c0169b04d7b2b5f179c1d6d65b7fa4a24dd8..91606032411581530284e13890e30f4a336b68fa 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.H
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointRAS/adjointSpalartAllmaras/adjointSpalartAllmaras.H
@@ -317,6 +317,8 @@ public:
 
         virtual tmp<volSymmTensorField> devReff() const;
 
+        virtual tmp<volSymmTensorField> devReff(const volVectorField& U) const;
+
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
 
         virtual tmp<volVectorField> adjointMeanFlowSource();
diff --git a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointTurbulenceModel/adjointTurbulenceModel.H b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointTurbulenceModel/adjointTurbulenceModel.H
index 93d4b673eaa93e9dc2e2cbf0a9bdb7d44edf7235..e7039465e53fee1835ff04b9a2c9d1490455ddb8 100644
--- a/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointTurbulenceModel/adjointTurbulenceModel.H
+++ b/src/optimisation/adjointOptimisation/adjoint/turbulenceModels/incompressibleAdjoint/adjointTurbulenceModel/adjointTurbulenceModel.H
@@ -186,6 +186,12 @@ public:
         //- Return the effective stress tensor including the laminar stress
         virtual tmp<volSymmTensorField> devReff() const = 0;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devReff
+        (
+            const volVectorField& U
+        ) const = 0;
+
         //- Return the diffusion term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
 
diff --git a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
index f2831ad3d888ea478de3bd235fae648c0abb2541..25572bfb3c92795708dece8e7eb4d22bee74979e 100644
--- a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+++ b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -311,6 +311,16 @@ Foam::RASModels::kineticTheoryModel::pPrimef() const
 
 Foam::tmp<Foam::volSymmTensorField>
 Foam::RASModels::kineticTheoryModel::devRhoReff() const
+{
+    return devRhoReff(U_);
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::kineticTheoryModel::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     return tmp<volSymmTensorField>
     (
@@ -318,14 +328,14 @@ Foam::RASModels::kineticTheoryModel::devRhoReff() const
         (
             IOobject
             (
-                IOobject::groupName("devRhoReff", U_.group()),
+                IOobject::groupName("devRhoReff", U.group()),
                 runTime_.timeName(),
                 mesh_,
                 IOobject::NO_READ,
                 IOobject::NO_WRITE
             ),
           - (rho_*nut_)
-           *dev(twoSymm(fvc::grad(U_)))
+           *dev(twoSymm(fvc::grad(U)))
           - ((rho_*lambda_)*fvc::div(phi_))*symmTensor::I
         )
     );
diff --git a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
index aa18a9c39031b7d3363180fd4448a0dd5f852e2a..6bec967ed79180104288ef370d73bc2c82616cb1 100644
--- a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
+++ b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
@@ -223,6 +223,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
index 1b29db5e4d4bb60c4877ccf5a46dfe933964212a..bf6fbd3316ddb2a91058505c34430e3ada383257 100644
--- a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
+++ b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
@@ -200,6 +200,16 @@ Foam::RASModels::phasePressureModel::pPrimef() const
 
 Foam::tmp<Foam::volSymmTensorField>
 Foam::RASModels::phasePressureModel::devRhoReff() const
+{
+    return devRhoReff(U_);
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::phasePressureModel::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     return tmp<volSymmTensorField>
     (
@@ -207,7 +217,7 @@ Foam::RASModels::phasePressureModel::devRhoReff() const
         (
             IOobject
             (
-                IOobject::groupName("devRhoReff", U_.group()),
+                IOobject::groupName("devRhoReff", U.group()),
                 runTime_.timeName(),
                 mesh_,
                 IOobject::NO_READ,
diff --git a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
index d9c41e8f3df2ce9ee9fd205a943fb1ff8077452f..5cde6bea3f5681fc76d857e53806dbca2e54345b 100644
--- a/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
+++ b/src/phaseSystemModels/reactingEuler/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
@@ -174,6 +174,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
index 588a310b1ab50aa1acefc53a0e26a622f3b73ee3..bca4b784428328a4bf3783563eee02f9baaba6c3 100644
--- a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+++ b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -311,6 +311,16 @@ Foam::RASModels::kineticTheoryModel::pPrimef() const
 
 Foam::tmp<Foam::volSymmTensorField>
 Foam::RASModels::kineticTheoryModel::devRhoReff() const
+{
+    return devRhoReff(U_);
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::kineticTheoryModel::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     return tmp<volSymmTensorField>
     (
@@ -318,14 +328,14 @@ Foam::RASModels::kineticTheoryModel::devRhoReff() const
         (
             IOobject
             (
-                IOobject::groupName("devRhoReff", U_.group()),
+                IOobject::groupName("devRhoReff", U.group()),
                 runTime_.timeName(),
                 mesh_,
                 IOobject::NO_READ,
                 IOobject::NO_WRITE
             ),
           - (rho_*nut_)
-           *dev(twoSymm(fvc::grad(U_)))
+           *dev(twoSymm(fvc::grad(U)))
           - ((rho_*lambda_)*fvc::div(phi_))*symmTensor::I
         )
     );
diff --git a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
index a9180f6afd320459b284bcc636915311d0ae2622..2d5b2c14022564c11f019227a232ded8df3448b6 100644
--- a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
+++ b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
@@ -223,6 +223,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
 
diff --git a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
index f20ed8a6334b9da84ac89a3182caaecac986edeb..42fa6cfbac522dc77c6c26b54080c8d55263c950 100644
--- a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
+++ b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
@@ -203,12 +203,22 @@ Foam::RASModels::phasePressureModel::pPrimef() const
 
 Foam::tmp<Foam::volSymmTensorField>
 Foam::RASModels::phasePressureModel::devRhoReff() const
+{
+    return devRhoReff(U_);
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::phasePressureModel::devRhoReff
+(
+    const volVectorField& U
+) const
 {
     return tmp<volSymmTensorField>::New
     (
         IOobject
         (
-            IOobject::groupName("devRhoReff", U_.group()),
+            IOobject::groupName("devRhoReff", U.group()),
             runTime_.timeName(),
             mesh_,
             IOobject::NO_READ,
diff --git a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
index fa54e84afe29d5db4f9968e4d6f2ddeb417494f2..84c9502a7d803bdd05eaab09fdb1ff541473a261 100644
--- a/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
+++ b/src/phaseSystemModels/twoPhaseEuler/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
@@ -178,6 +178,12 @@ public:
         //- Return the effective stress tensor
         virtual tmp<volSymmTensorField> devRhoReff() const;
 
+        //- Return the effective stress tensor based on a given velocity field
+        virtual tmp<volSymmTensorField> devRhoReff
+        (
+            const volVectorField& U
+        ) const;
+
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;