Newer
Older
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Namespace
Foam::radiation
Description
Namespace for radiation modelling
Class
Foam::radiation::radiationModel
Description
Top level model for radiation modelling
SourceFiles
radiationModel.C
radiationModelNew.C
\*---------------------------------------------------------------------------*/
#ifndef radiationModel_H
#define radiationModel_H
#include "IOdictionary.H"
#include "autoPtr.H"
#include "runTimeSelectionTables.H"
#include "volFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
class basicThermo;
namespace radiation
{
// Forward declaration of classes
/*---------------------------------------------------------------------------*\
Class radiationModel Declaration
\*---------------------------------------------------------------------------*/
class radiationModel
:
public IOdictionary
{
public:
// Static data
//- Static name external radiative fluxes
static const word externalRadHeatFieldName_;
//- Static name for primary solar fluxes
static const word primaryFluxName_;
//- Static name for reflected solar fluxes
static const word relfectedFluxName_;
//- Reference to the mesh database
const fvMesh& mesh_;
//- Reference to the time database
const Time& time_;
//- Reference to the temperature field
const volScalarField& T_;
Switch radiation_;
//- Radiation model dictionary
//- Radiation solver frequency - number flow solver iterations per
// radiation solver iteration
label solverFreq_;
//- Flag to enable radiation model to be evaluated on first iteration
bool firstIter_;
// References to the radiation sub-models
//- Absorption/emission model
autoPtr<absorptionEmissionModel> absorptionEmission_;
//- Scatter model
autoPtr<scatterModel> scatter_;
//- Soot model
autoPtr<sootModel> soot_;
//- Transmissivity model
private:
// Private Member Functions
andy
committed
//- Create IO object if dictionary is present
IOobject createIOobject(const fvMesh& mesh) const;
//- Initialise
void initialise();
//- No copy construct
radiationModel(const radiationModel&) = delete;
//- No copy assignment
void operator=(const radiationModel&) = delete;
public:
//- Runtime type information
TypeName("radiationModel");
// Declare runtime constructor selection table
declareRunTimeSelectionTable
(
autoPtr,
radiationModel,
T,
(
const volScalarField& T
),
(T)
);
declareRunTimeSelectionTable
(
autoPtr,
radiationModel,
dictionary,
(
const dictionary& dict,
const volScalarField& T
),
(dict, T)
);
// Constructors
//- Null constructor
radiationModel(const volScalarField& T);
//- Construct from components
radiationModel(const word& type, const volScalarField& T);
//- Construct from components
radiationModel
(
const word& type,
const dictionary& dict,
const volScalarField& T
);
//- Return a reference to the selected radiation model
static autoPtr<radiationModel> New(const volScalarField& T);
//- Return a reference to the selected radiation model
static autoPtr<radiationModel> New
(
const dictionary& dict,
const volScalarField& T
);
//- Destructor
// Member Functions
// Edit
//- Main update/correction routine
virtual void correct();
//- Solve radiation equation(s)
virtual void calculate() = 0;
//- Read radiationProperties dictionary
henry
committed
virtual bool read() = 0;
//- Radiation model on/off flag
const Switch radiation() const
{
return radiation_;
}
//- Source term component (for power of T^4)
virtual tmp<volScalarField> Rp() const = 0;
//- Source term component (constant)
virtual tmp<volScalarField::Internal> Ru() const = 0;
virtual tmp<fvScalarMatrix> Sh
(
const basicThermo& thermo,
const volScalarField& he
) const;
//- Temperature source term
virtual tmp<fvScalarMatrix> ST
(
const dimensionedScalar& rhoCp,
volScalarField& T
) const;
//- Temperature source term
virtual tmp<fvScalarMatrix> ST
(
tmp<volScalarField> rhoCp,
volScalarField& T
) const;
//- Temperature source term
virtual tmp<fvScalarMatrix> ST
(
volScalarField& T
) const;
const absorptionEmissionModel& absorptionEmission() const;
//- Access to soot Model
const sootModel& soot() const;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#define addToRadiationRunTimeSelectionTables(model) \
\
addToRunTimeSelectionTable \
( \
radiationModel, \
model, \
dictionary \
); \
\
addToRunTimeSelectionTable \
( \
radiationModel, \
model, \
T \
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace radiation
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //