From 222e403794c737846af5193c0cc89ce3a7d190fe Mon Sep 17 00:00:00 2001
From: sergio <sergio>
Date: Wed, 30 Apr 2014 12:00:17 +0100
Subject: [PATCH] ENH: changing externalWallHeatFluxTemperature BC to work
 using mixed type.

---
 ...allHeatFluxTemperatureFvPatchScalarField.C | 39 ++++++++-----------
 ...allHeatFluxTemperatureFvPatchScalarField.H |  2 +-
 2 files changed, 17 insertions(+), 24 deletions(-)

diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
index ea273e25984..12d97372125 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
@@ -72,9 +72,9 @@ externalWallHeatFluxTemperatureFvPatchScalarField
     thicknessLayers_(),
     kappaLayers_()
 {
-    this->refValue() = 0.0;
-    this->refGrad() = 0.0;
-    this->valueFraction() = 1.0;
+    refValue() = 0.0;
+    refGrad() = 0.0;
+    valueFraction() = 1.0;
 }
 
 
@@ -242,17 +242,13 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
         return;
     }
 
-    scalarField q(size(), 0.0);
-    const scalarField Tc(patchInternalField());
     const scalarField Tp(*this);
-    const scalarField KWall(kappa(Tp));
-    const scalarField KDelta(KWall*patch().deltaCoeffs());
+    scalarField hp(patch().size(), 0.0);
 
     switch (mode_)
     {
         case fixedHeatFlux:
         {
-            q = q_;
             break;
         }
         case fixedHeatTransferCoeff:
@@ -269,7 +265,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
                     }
                 }
             }
-            q = (Ta_ - Tp)/(1.0/h_ + totalSolidRes);
+            hp = 1.0/(1.0/h_ + totalSolidRes);
             break;
         }
         default:
@@ -283,27 +279,24 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
         }
     }
 
-    forAll(*this, i)
+    if (mode_ == fixedHeatFlux)
     {
-        if (q[i] > 0) //in
-        {
-            this->refGrad()[i] =  q[i]/KWall[i];
-            this->refValue()[i] = 0.0;
-            this->valueFraction()[i] = 0.0;
-        }
-        else //out
-        {
-            this->refGrad()[i] = 0.0;
-            this->refValue()[i] = q[i]/KDelta[i] + Tc[i];
-            this->valueFraction()[i] = 1.0;
-        }
+        refGrad() =  q_/kappa(Tp);
+        refValue() =  0.0;
+        valueFraction() = 0.0;
+    }
+    else if (mode_ == fixedHeatTransferCoeff)
+    {
+        refGrad() =  0.0;
+        refValue() =  Ta_;
+        valueFraction() = hp/(hp + kappa(Tp)*patch().deltaCoeffs());
     }
 
     mixedFvPatchScalarField::updateCoeffs();
 
     if (debug)
     {
-        scalar Q = gSum(KWall*patch().magSf()*snGrad());
+        scalar Q = gSum(kappa(Tp)*patch().magSf()*snGrad());
 
         Info<< patch().boundaryMesh().mesh().name() << ':'
             << patch().name() << ':'
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H
index c07344e8b64..b4ca13a461e 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
-- 
GitLab