From e0911c9139fd45a741d2e96113b00073895c3116 Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Wed, 28 Jan 2015 16:34:18 +0000
Subject: [PATCH] buoyantKEpsilon: filter sources depending on mag(g) so that
 it operates as kEpsilon if mag(g) = 0

---
 .../RAS/buoyantKEpsilon/buoyantKEpsilon.C     | 35 ++++++++++++++-----
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C b/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C
index 14b1b6ee616..2f7bdb16179 100644
--- a/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C
+++ b/src/TurbulenceModels/compressible/RAS/buoyantKEpsilon/buoyantKEpsilon.C
@@ -116,7 +116,18 @@ template<class BasicTurbulenceModel>
 tmp<fvScalarMatrix>
 buoyantKEpsilon<BasicTurbulenceModel>::kSource() const
 {
-    return -fvm::SuSp(Gcoef(), this->k_);
+    const uniformDimensionedVectorField& g =
+        this->mesh_.objectRegistry::template
+        lookupObject<uniformDimensionedVectorField>("g");
+
+    if (mag(g.value()) > SMALL)
+    {
+        return -fvm::SuSp(Gcoef(), this->k_);
+    }
+    else
+    {
+        return kEpsilon<BasicTurbulenceModel>::kSource();
+    }
 }
 
 
@@ -128,15 +139,23 @@ buoyantKEpsilon<BasicTurbulenceModel>::epsilonSource() const
         this->mesh_.objectRegistry::template
         lookupObject<uniformDimensionedVectorField>("g");
 
-    vector gHat(g.value()/mag(g.value()));
+    if (mag(g.value()) > SMALL)
+    {
+        vector gHat(g.value()/mag(g.value()));
 
-    volScalarField v(gHat & this->U_);
-    volScalarField u
-    (
-        mag(this->U_ - gHat*v) + dimensionedScalar("SMALL", dimVelocity, SMALL)
-    );
+        volScalarField v(gHat & this->U_);
+        volScalarField u
+        (
+            mag(this->U_ - gHat*v)
+          + dimensionedScalar("SMALL", dimVelocity, SMALL)
+        );
 
-    return -fvm::SuSp(this->C1_*tanh(mag(v)/u)*Gcoef(), this->epsilon_);
+        return -fvm::SuSp(this->C1_*tanh(mag(v)/u)*Gcoef(), this->epsilon_);
+    }
+    else
+    {
+        return kEpsilon<BasicTurbulenceModel>::epsilonSource();
+    }
 }
 
 
-- 
GitLab