radiationModel.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Namespace
25  Foam::radiation
26 
27 Description
28  Namespace for radiation modelling
29 
30 Class
31  Foam::radiation::radiationModel
32 
33 Description
34  Top level model for radiation modelling
35 
36 SourceFiles
37  radiationModel.C
38  radiationModelNew.C
39 
40 \*---------------------------------------------------------------------------*/
41 
42 #ifndef radiationModel_H
43 #define radiationModel_H
44 
45 #include "IOdictionary.H"
46 #include "autoPtr.H"
47 #include "runTimeSelectionTables.H"
48 #include "volFieldsFwd.H"
49 #include "DimensionedField.H"
50 #include "fvMatricesFwd.H"
51 #include "Switch.H"
52 #include "transmissivityModel.H"
53 
54 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55 
56 namespace Foam
57 {
58 
59 class fluidThermo;
60 class fvMesh;
61 
62 namespace radiation
63 {
64 
65 // Forward declaration of classes
66 class absorptionEmissionModel;
67 class scatterModel;
68 class sootModel;
69 
70 /*---------------------------------------------------------------------------*\
71  Class radiationModel Declaration
72 \*---------------------------------------------------------------------------*/
73 
74 class radiationModel
75 :
76  public IOdictionary
77 {
78 public:
79 
80  // Static data
81 
82  //- Static name external radiative fluxes
83  static const word externalRadHeatFieldName_;
84 
85 protected:
86 
87 
88 
89  // Protected data
90 
91  //- Reference to the mesh database
92  const fvMesh& mesh_;
93 
94  //- Reference to the time database
95  const Time& time_;
96 
97  //- Reference to the temperature field
98  const volScalarField& T_;
99 
100  //- Radiation model on/off flag
102 
103  //- Radiation model dictionary
105 
106  //- Radiation solver frequency - number flow solver iterations per
107  // radiation solver iteration
109 
110  //- Flag to enable radiation model to be evaluated on first iteration
111  bool firstIter_;
112 
113 
114  // References to the radiation sub-models
115 
116  //- Absorption/emission model
118 
119  //- Scatter model
121 
122  //- Soot model
124 
125  //- Transmissivity model
127 
128 
129 private:
130 
131  // Private Member Functions
132 
133  //- Create IO object if dictionary is present
134  IOobject createIOobject(const fvMesh& mesh) const;
135 
136  //- Initialise
137  void initialise();
138 
139  //- Disallow default bitwise copy construct
141 
142  //- Disallow default bitwise assignment
143  void operator=(const radiationModel&);
144 
145 
146 public:
147 
148  //- Runtime type information
149  TypeName("radiationModel");
150 
151 
152  // Declare runtime constructor selection table
153 
155  (
156  autoPtr,
158  T,
159  (
160  const volScalarField& T
161  ),
162  (T)
163  );
164 
166  (
167  autoPtr,
169  dictionary,
170  (
171  const dictionary& dict,
172  const volScalarField& T
173  ),
174  (dict, T)
175  );
176 
177 
178  // Constructors
179 
180  //- Null constructor
182 
183  //- Construct from components
184  radiationModel(const word& type, const volScalarField& T);
185 
186  //- Construct from components
188  (
189  const word& type,
190  const dictionary& dict,
191  const volScalarField& T
192  );
193 
194 
195  // Selectors
196 
197  //- Return a reference to the selected radiation model
199 
200  //- Return a reference to the selected radiation model
202  (
203  const dictionary& dict,
204  const volScalarField& T
205  );
206 
207 
208  //- Destructor
209  virtual ~radiationModel();
210 
211 
212  // Member Functions
213 
214  // Edit
215 
216  //- Main update/correction routine
217  virtual void correct();
218 
219  //- Solve radiation equation(s)
220  virtual void calculate() = 0;
221 
222  //- Read radiationProperties dictionary
223  virtual bool read() = 0;
224 
225 
226  // Access
227 
228  //- Radiation model on/off flag
229  const Switch radiation() const
230  {
231  return radiation_;
232  }
233 
234  //- Source term component (for power of T^4)
235  virtual tmp<volScalarField> Rp() const = 0;
236 
237  //- Source term component (constant)
238  virtual tmp<DimensionedField<scalar, volMesh> > Ru() const = 0;
239 
240  //- Energy source term
241  virtual tmp<fvScalarMatrix> Sh(fluidThermo& thermo) const;
242 
243  //- Temperature source term
244  virtual tmp<fvScalarMatrix> ST
245  (
246  const dimensionedScalar& rhoCp,
248  ) const;
249 
250  //- Access to absorptionEmission model
252 
253  //- Access to transmissivity Model
254  const transmissivityModel& transmissivity() const;
255 
256  //- Access to soot Model
257  const sootModel& soot() const;
258 
259 };
260 
261 
262 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
263 
264 #define addToRadiationRunTimeSelectionTables(model) \
265  \
266  addToRunTimeSelectionTable \
267  ( \
268  radiationModel, \
269  model, \
270  dictionary \
271  ); \
272  \
273  addToRunTimeSelectionTable \
274  ( \
275  radiationModel, \
276  model, \
277  T \
278  );
279 
280 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
281 
282 } // End namespace radiation
283 } // End namespace Foam
284 
285 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
286 
287 #endif
288 
289 // ************************************************************************* //
Foam::radiation::radiationModel::scatter_
autoPtr< scatterModel > scatter_
Scatter model.
Definition: radiationModel.H:119
Foam::IOdictionary
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Definition: IOdictionary.H:53
Foam::radiation::radiationModel::solverFreq_
label solverFreq_
Radiation solver frequency - number flow solver iterations per.
Definition: radiationModel.H:107
volFieldsFwd.H
Foam::IOobject
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:91
Foam::radiation::radiationModel::operator=
void operator=(const radiationModel &)
Disallow default bitwise assignment.
Foam::Switch
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
Definition: Switch.H:60
Foam::Time
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:68
Foam::radiation::radiationModel::transmissivity
const transmissivityModel & transmissivity() const
Access to transmissivity Model.
Definition: radiationModel.C:297
Foam::word
A class for handling words, derived from string.
Definition: word.H:59
Foam::radiation::radiationModel::coeffs_
dictionary coeffs_
Radiation model dictionary.
Definition: radiationModel.H:103
Foam::radiation::radiationModel::radiationModel
radiationModel(const radiationModel &)
Disallow default bitwise copy construct.
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:118
DimensionedField.H
Foam::fluidThermo
Fundamental fluid thermodynamic properties.
Definition: fluidThermo.H:49
Foam::radiation::radiationModel::TypeName
TypeName("radiationModel")
Runtime type information.
thermo
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
fvMatricesFwd.H
Forward declarations of fvMatrix specializations.
Foam::radiation::radiationModel::calculate
virtual void calculate()=0
Solve radiation equation(s)
Foam::radiation::transmissivityModel
Base class for radiation scattering.
Definition: transmissivityModel.H:50
Foam::radiation::radiationModel::T_
const volScalarField & T_
Reference to the temperature field.
Definition: radiationModel.H:97
Foam::radiation::radiationModel::read
virtual bool read()=0
Read radiationProperties dictionary.
Definition: radiationModel.C:197
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::radiation::radiationModel::soot
const sootModel & soot() const
Access to soot Model.
Definition: radiationModel.C:283
Foam::radiation::radiationModel::soot_
autoPtr< sootModel > soot_
Soot model.
Definition: radiationModel.H:122
Foam::radiation::radiationModel::New
static autoPtr< radiationModel > New(const volScalarField &T)
Return a reference to the selected radiation model.
Definition: radiationModelNew.C:33
Foam::radiation::radiationModel::declareRunTimeSelectionTable
declareRunTimeSelectionTable(autoPtr, radiationModel, T,(const volScalarField &T),(T))
Foam::T
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Definition: FieldFieldFunctions.C:55
Foam::radiation::radiationModel::~radiationModel
virtual ~radiationModel()
Destructor.
Definition: radiationModel.C:191
Foam::radiation::radiationModel::createIOobject
IOobject createIOobject(const fvMesh &mesh) const
Create IO object if dictionary is present.
Definition: radiationModel.C:51
Switch.H
Foam::radiation::radiationModel::firstIter_
bool firstIter_
Flag to enable radiation model to be evaluated on first iteration.
Definition: radiationModel.H:110
radiation
autoPtr< radiation::radiationModel > radiation(radiation::radiationModel::New(T))
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:137
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:18
Foam::dimensioned
Generic dimensioned Type class.
Definition: dimensionedScalarFwd.H:41
Foam::radiation::radiationModel::radiation
const Switch radiation() const
Radiation model on/off flag.
Definition: radiationModel.H:228
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::radiation::radiationModel::ST
virtual tmp< fvScalarMatrix > ST(const dimensionedScalar &rhoCp, volScalarField &T) const
Temperature source term.
Definition: radiationModel.C:255
Foam::radiation::radiationModel::correct
virtual void correct()
Main update/correction routine.
Definition: radiationModel.C:216
Foam::radiation::radiationModel::mesh_
const fvMesh & mesh_
Reference to the mesh database.
Definition: radiationModel.H:91
Foam::radiation::radiationModel::absorptionEmission
const absorptionEmissionModel & absorptionEmission() const
Access to absorptionEmission model.
Definition: radiationModel.C:269
IOdictionary.H
Foam::autoPtr
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: PtrList.H:117
Foam::radiation::radiationModel::Sh
virtual tmp< fvScalarMatrix > Sh(fluidThermo &thermo) const
Energy source term.
Definition: radiationModel.C:237
transmissivityModel.H
runTimeSelectionTables.H
Macros to ease declaration of run-time selection tables.
Foam::radiation::radiationModel
Top level model for radiation modelling.
Definition: radiationModel.H:73
Foam::radiation::radiationModel::initialise
void initialise()
Initialise.
Definition: radiationModel.C:77
Foam::radiation::sootModel
Base class for soor models.
Definition: sootModel.H:53
Foam::radiation::radiationModel::time_
const Time & time_
Reference to the time database.
Definition: radiationModel.H:94
Foam::radiation::radiationModel::Ru
virtual tmp< DimensionedField< scalar, volMesh > > Ru() const =0
Source term component (constant)
Foam::radiation::radiationModel::Rp
virtual tmp< volScalarField > Rp() const =0
Source term component (for power of T^4)
Foam::radiation::absorptionEmissionModel
Model to supply absorption and emission coefficients for radiation modelling.
Definition: absorptionEmissionModel.H:52
Foam::radiation::radiationModel::absorptionEmission_
autoPtr< absorptionEmissionModel > absorptionEmission_
Absorption/emission model.
Definition: radiationModel.H:116
Foam::type
fileName::Type type(const fileName &)
Return the file type: DIRECTORY or FILE.
Definition: POSIX.C:588
Foam::radiation::radiationModel::radiation_
Switch radiation_
Radiation model on/off flag.
Definition: radiationModel.H:100
Foam::GeometricField
Generic GeometricField class.
Definition: surfaceFieldsFwd.H:52
Foam::radiation::radiationModel::transmissivity_
autoPtr< transmissivityModel > transmissivity_
Transmissivity model.
Definition: radiationModel.H:125
Foam::radiation::radiationModel::externalRadHeatFieldName_
static const word externalRadHeatFieldName_
Static name external radiative fluxes.
Definition: radiationModel.H:82
autoPtr.H