From 7810d4327c903280b024684cdb5fd23946967a2b Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Sun, 19 Jul 2015 19:05:06 +0100
Subject: [PATCH] SRFSimpleFoam, SRFPimpleFoam: Use absolute U for the
 production term in turbulence models Resolves bug-report
 http://www.openfoam.org/mantisbt/view.php?id=1788

---
 .../pimpleFoam/SRFPimpleFoam/createFields.H   | 14 +++++------
 .../simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C  | 20 +++-------------
 .../simpleFoam/SRFSimpleFoam/createFields.H   | 24 +++++++++++++++----
 3 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H
index f4707dacc7f..da4fee802ee 100644
--- a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H
+++ b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H
@@ -45,13 +45,6 @@ scalar pRefValue = 0.0;
 setRefCell(p, pimple.dict(), pRefCell, pRefValue);
 mesh.setFluxRequired(p.name());
 
-singlePhaseTransportModel laminarTransport(Urel, phi);
-
-autoPtr<incompressible::turbulenceModel> turbulence
-(
-    incompressible::turbulenceModel::New(Urel, phi, laminarTransport)
-);
-
 Info<< "Creating SRF model\n" << endl;
 autoPtr<SRF::SRFModel> SRF
 (
@@ -71,3 +64,10 @@ volVectorField U
     ),
     Urel + SRF->U()
 );
+
+singlePhaseTransportModel laminarTransport(U, phi);
+
+autoPtr<incompressible::turbulenceModel> turbulence
+(
+    incompressible::turbulenceModel::New(U, phi, laminarTransport)
+);
diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
index e52a6d93871..97617bd925f 100644
--- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
@@ -65,26 +65,12 @@ int main(int argc, char *argv[])
             #include "pEqn.H"
         }
 
+        U = Urel + SRF->U();
+
         laminarTransport.correct();
         turbulence->correct();
 
-        if (runTime.outputTime())
-        {
-            volVectorField Uabs
-            (
-                IOobject
-                (
-                    "Uabs",
-                    runTime.timeName(),
-                    mesh,
-                    IOobject::NO_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                Urel + SRF->U()
-            );
-
-            runTime.write();
-        }
+        runTime.write();
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H
index d7096ed087f..9d9fb484fcc 100644
--- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H
+++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H
@@ -45,12 +45,26 @@ scalar pRefValue = 0.0;
 setRefCell(p, simple.dict(), pRefCell, pRefValue);
 mesh.setFluxRequired(p.name());
 
-singlePhaseTransportModel laminarTransport(Urel, phi);
+Info<< "Creating SRF model\n" << endl;
+autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));
 
-autoPtr<incompressible::RASModel> turbulence
+// Construct the absolute velocity
+volVectorField U
 (
-    incompressible::RASModel::New(Urel, phi, laminarTransport)
+    IOobject
+    (
+        "U",
+        runTime.timeName(),
+        mesh,
+        IOobject::NO_READ,
+        IOobject::AUTO_WRITE
+    ),
+    Urel + SRF->U()
 );
 
-Info<< "Creating SRF model\n" << endl;
-autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));
+singlePhaseTransportModel laminarTransport(U, phi);
+
+autoPtr<incompressible::RASModel> turbulence
+(
+    incompressible::RASModel::New(U, phi, laminarTransport)
+);
-- 
GitLab