From 3177e81566e39512f6ba5bd115a1c291a67e432a Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Thu, 31 Mar 2011 13:53:48 +0200
Subject: [PATCH] ENH: adjust thermalPorousZone to match documentation

eg, dictionary entry:

        thermalModel
        {
            type        none; // fixedTemperature;
            // fixedTemperature coefficients
            T           350;
        }

A missing thermalModel is treated as 'none'
---
 .../cfdTools/general/porousMedia/porousZone.C      |  9 ++++++++-
 .../fixedTemperature/fixedTemperature.C            |  6 +++---
 .../fixedTemperature/fixedTemperature.H            |  5 ++---
 .../thermalModel/noThermalModel/noThermalModel.H   |  5 ++---
 .../thermalModel/thermalModel/thermalModel.C       |  8 ++++----
 .../thermalModel/thermalModel/thermalModel.H       | 14 +++++++-------
 .../thermalModel/thermalModel/thermalModelNew.C    | 10 ++++++++--
 .../thermalPorousZone/thermalPorousZone.C          |  7 +++++--
 .../thermalPorousZone/thermalPorousZone.H          |  4 ++--
 .../thermalPorousZone/thermalPorousZones.C         |  2 +-
 .../thermalPorousZone/thermalPorousZones.H         |  7 ++++---
 .../angledDuctImplicit/constant/porousZones        |  9 +++++----
 12 files changed, 51 insertions(+), 35 deletions(-)

diff --git a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C
index cdce53e932c..97fe34d5868 100644
--- a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C
+++ b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2004-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -445,6 +445,13 @@ void Foam::porousZone::writeDict(Ostream& os, bool subDict) const
         dictPtr->write(os);
     }
 
+    // thermalModel
+    if (const dictionary* dictPtr = dict_.subDictPtr("thermalModel"))
+    {
+        os  << indent << "thermalModel";
+        dictPtr->write(os);
+    }
+
     os  << decrIndent << indent << token::END_BLOCK << endl;
 }
 
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C
index dba5a3d470c..4f75d3ee135 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -51,8 +51,8 @@ namespace porousMedia
 
 Foam::porousMedia::fixedTemperature::fixedTemperature(const porousZone& pZone)
 :
-    thermalModel(pZone, typeName),
-    T_(readScalar(coeffDict_.lookup("T")))
+    thermalModel(pZone),
+    T_(readScalar(thermalCoeffs_.lookup("T")))
 {}
 
 
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H
index 4ae9aab656f..5498cf7b908 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -33,7 +33,6 @@ Description
 #define fixedTemperature_H
 
 #include "thermalModel.H"
-#include "autoPtr.H"
 #include "runTimeSelectionTables.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -81,7 +80,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         virtual void addEnthalpySource
         (
-            const basicThermo& thermo,
+            const basicThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H b/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H
index 123a9b2fd56..4f6df998528 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -33,7 +33,6 @@ Description
 #define noThermalModel_H
 
 #include "thermalModel.H"
-#include "autoPtr.H"
 #include "runTimeSelectionTables.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -73,7 +72,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         virtual void addEnthalpySource
         (
-            const basicThermo& thermo,
+            const basicThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.C b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.C
index d7e36c8ed8c..36d06cf91ed 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,18 +42,18 @@ namespace porousMedia
 Foam::porousMedia::thermalModel::thermalModel(const porousZone& pZone)
 :
     pZone_(pZone),
-    coeffDict_(dictionary::null)
+    thermalCoeffs_(pZone.dict().subDictPtr("thermalModel"))
 {}
 
 
 Foam::porousMedia::thermalModel::thermalModel
 (
     const porousZone& pZone,
-    const word& modelType
+    const dictionary& thermalCoeffs
 )
 :
     pZone_(pZone),
-    coeffDict_(pZone_.dict().subDict(modelType + "Coeffs"))
+    thermalCoeffs_(thermalCoeffs)
 {}
 
 
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H
index bda42db68e2..a4f762c2852 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -63,8 +63,8 @@ protected:
         //- Reference to the porous zone
         const porousZone& pZone_;
 
-        //- Sub-model coefficients dictionary
-        const dictionary coeffDict_;
+        //- Thermal model coefficients dictionary
+        const dictionary thermalCoeffs_;
 
 
 public:
@@ -87,11 +87,11 @@ public:
 
     // Constructors
 
-        //- Construct null from porous zone
+        //- Construct from porous zone, coefficients from "thermalModel" entry
         thermalModel(const porousZone&);
 
-        //- Construct from porous zone and model type name
-        thermalModel(const porousZone&, const word& modelType);
+        //- Construct from porous zone and thermal model coefficients
+        thermalModel(const porousZone&, const dictionary& thermalCoeffs);
 
 
     //- Destructor
@@ -107,7 +107,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         virtual void addEnthalpySource
         (
-            const basicThermo& thermo,
+            const basicThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const = 0;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModelNew.C b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModelNew.C
index 8b89b7eef1b..731fdeac4a4 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModelNew.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModelNew.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -33,7 +33,13 @@ Foam::porousMedia::thermalModel::New
     const porousZone& pZone
 )
 {
-    const word modelType(pZone.dict().lookup("thermalModel"));
+    // a missing thermalModel is the same as type "none"
+    word modelType("none");
+
+    if (const dictionary* dictPtr = pZone.dict().subDictPtr("thermalModel"))
+    {
+        dictPtr->lookup("type") >> modelType;
+    }
 
     Info<< "Selecting thermalModel " << modelType << endl;
 
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C
index 9207716af53..78ab986742a 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -51,7 +51,10 @@ void Foam::thermalPorousZone::addEnthalpySource
     fvScalarMatrix& hEqn
 ) const
 {
-    model_->addEnthalpySource(thermo, rho, hEqn);
+    if (model_.valid())
+    {
+        model_->addEnthalpySource(thermo, rho, hEqn);
+    }
 }
 
 
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H
index 57d5e292375..ce864586f9c 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -127,7 +127,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         void addEnthalpySource
         (
-            const basicThermo& thermo,
+            const basicThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C
index a7d80ab9b16..daccc257494 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H
index f30e0e50c38..2589e51ce54 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2004-2011 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2011 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,7 +32,8 @@ Description
     thermalPorousZone.
 
     The input file \c constant/thermalPorousZone is implemented as
-    IOPtrList\<thermalPorousZone\> and contains the following type of data:
+    IOPtrList\<thermalPorousZone\> (but written as a dictionary)
+    and contains the following type of data:
 
     \verbatim
     1
@@ -94,7 +95,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         void addEnthalpySource
         (
-            const basicThermo& thermo,
+            const basicThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctImplicit/constant/porousZones b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctImplicit/constant/porousZones
index e4d251bf9eb..ef7fd5ea5e4 100644
--- a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctImplicit/constant/porousZones
+++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctImplicit/constant/porousZones
@@ -31,11 +31,12 @@ FoamFile
             f   f [0 -1 0 0 0 0 0] (0 0 0);
         }
 
-        thermalModel none; // fixedTemperature;
-
-        fixedTemperatureCoeffs
+        thermalModel
         {
-            T              350;
+            type        none; // fixedTemperature;
+
+            // fixedTemperature coefficients
+            T           350;
         }
     }
 )
-- 
GitLab