213 lines
6.6 KiB
C++
213 lines
6.6 KiB
C++
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration |
|
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
|
\\/ M anipulation |
|
|
-------------------------------------------------------------------------------
|
|
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/>.
|
|
|
|
Class
|
|
Foam::basicChemistryModel
|
|
|
|
Description
|
|
Base class for chemistry models
|
|
|
|
SourceFiles
|
|
basicChemistryModelI.H
|
|
basicChemistryModel.C
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef basicChemistryModel_H
|
|
#define basicChemistryModel_H
|
|
|
|
#include "IOdictionary.H"
|
|
#include "Switch.H"
|
|
#include "scalarField.H"
|
|
#include "volFieldsFwd.H"
|
|
#include "volMesh.H"
|
|
#include "DimensionedField.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
|
|
// Forward declaration of classes
|
|
class fvMesh;
|
|
|
|
/*---------------------------------------------------------------------------*\
|
|
class basicChemistryModel Declaration
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
class basicChemistryModel
|
|
:
|
|
public IOdictionary
|
|
{
|
|
// Private Member Functions
|
|
|
|
//- Construct as copy (not implemented)
|
|
basicChemistryModel(const basicChemistryModel&);
|
|
|
|
//- Disallow default bitwise assignment
|
|
void operator=(const basicChemistryModel&);
|
|
|
|
|
|
protected:
|
|
|
|
// Protected data
|
|
|
|
//- Reference to the mesh database
|
|
const fvMesh& mesh_;
|
|
|
|
//- Chemistry activation switch
|
|
Switch chemistry_;
|
|
|
|
//- Initial chemical time step
|
|
const scalar deltaTChemIni_;
|
|
|
|
//- Latest estimation of integration step
|
|
DimensionedField<scalar, volMesh> deltaTChem_;
|
|
|
|
|
|
// Protected Member Functions
|
|
|
|
//- Return non-const access to the latest estimation of integration
|
|
// step, e.g. for multi-chemistry model
|
|
inline DimensionedField<scalar, volMesh>& deltaTChem();
|
|
|
|
//- Correct function - updates due to mesh changes
|
|
void correct();
|
|
|
|
|
|
public:
|
|
|
|
//- Runtime type information
|
|
TypeName("basicChemistryModel");
|
|
|
|
|
|
// Constructors
|
|
|
|
//- Construct from mesh
|
|
basicChemistryModel(const fvMesh& mesh, const word& phaseName);
|
|
|
|
|
|
// Selectors
|
|
|
|
//- Generic New for each of the related chemistry model
|
|
template<class Thermo>
|
|
static autoPtr<Thermo> New(const fvMesh& mesh, const word& phaseName);
|
|
|
|
|
|
//- Destructor
|
|
virtual ~basicChemistryModel();
|
|
|
|
|
|
// Member Functions
|
|
|
|
//- Return const access to the mesh database
|
|
inline const fvMesh& mesh() const;
|
|
|
|
//- Chemistry activation switch
|
|
inline Switch chemistry() const;
|
|
|
|
//- Return the latest estimation of integration step
|
|
inline const DimensionedField<scalar, volMesh>& deltaTChem() const;
|
|
|
|
|
|
// Functions to be derived in derived classes
|
|
|
|
// Fields
|
|
|
|
//- Return const access to chemical source terms [kg/m3/s]
|
|
virtual const DimensionedField<scalar, volMesh>& RR
|
|
(
|
|
const label i
|
|
) const = 0;
|
|
|
|
//- Return access to chemical source terms [kg/m3/s]
|
|
virtual DimensionedField<scalar, volMesh>& RR
|
|
(
|
|
const label i
|
|
) = 0;
|
|
|
|
//- Return reaction rate of the speciei in reactioni
|
|
virtual tmp<DimensionedField<scalar, volMesh>> calculateRR
|
|
(
|
|
const label reactioni,
|
|
const label speciei
|
|
) const = 0;
|
|
|
|
|
|
// Chemistry solution
|
|
|
|
//- Calculates the reaction rates
|
|
virtual void calculate() = 0;
|
|
|
|
//- Solve the reaction system for the given time step
|
|
// and return the characteristic time
|
|
virtual scalar solve(const scalar deltaT) = 0;
|
|
|
|
//- Solve the reaction system for the given time step
|
|
// and return the characteristic time
|
|
virtual scalar solve(const scalarField& deltaT) = 0;
|
|
virtual scalar solveCMCchem
|
|
(
|
|
scalar deltaT, scalar& rho, scalar& T,
|
|
scalar& p, scalarField& Qi, scalar& Qh,
|
|
scalarField& RRCMC, scalar& ChemDeltaT
|
|
) = 0; //CMC
|
|
|
|
virtual scalar calculateTCMC(scalar& Qh, scalarField& Qi, scalar& Told, scalar& rho, scalar& p) = 0; //CMC
|
|
virtual scalar calculateRHOCMC(scalarField& Qi, scalar& T, scalar& p) = 0; //CMC
|
|
virtual scalar calculateHCMC(scalarField& Qi, scalar& T, scalar& rho, scalar& p) = 0; //CMC
|
|
virtual scalar calculateShCMC(scalarField& RRCMC, label i) = 0; //CMC
|
|
virtual void correction
|
|
(
|
|
scalarField& b, scalarField& Ta, scalarField& Wa, scalarField& Wb,
|
|
scalarField& Gab, scalarField& Gat, scalarField& Gbt,
|
|
scalarField& Gaa, scalarField& Gbb, scalar& Gtt, scalar& rhorho
|
|
) = 0;
|
|
//- Return the chemical time scale
|
|
virtual tmp<volScalarField> tc() const = 0;
|
|
|
|
//- Return source for enthalpy equation [kg/m/s3]
|
|
virtual tmp<volScalarField> Sh() const = 0;
|
|
|
|
//- Return the heat release, i.e. enthalpy/sec [m2/s3]
|
|
virtual tmp<volScalarField> dQ() const = 0;
|
|
};
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
} // End namespace Foam
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#include "basicChemistryModelI.H"
|
|
|
|
#ifdef NoRepository
|
|
#include "basicChemistryModelTemplates.C"
|
|
#endif
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#endif
|
|
|
|
// ************************************************************************* //
|