/*---------------------------------------------------------------------------*\ ========= | \\ / 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 . 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 deltaTChem_; // Protected Member Functions //- Return non-const access to the latest estimation of integration // step, e.g. for multi-chemistry model inline DimensionedField& 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 static autoPtr 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& deltaTChem() const; // Functions to be derived in derived classes // Fields //- Return const access to chemical source terms [kg/m3/s] virtual const DimensionedField& RR ( const label i ) const = 0; //- Return access to chemical source terms [kg/m3/s] virtual DimensionedField& RR ( const label i ) = 0; //- Return reaction rate of the speciei in reactioni virtual tmp> 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 tc() const = 0; //- Return source for enthalpy equation [kg/m/s3] virtual tmp Sh() const = 0; //- Return the heat release, i.e. enthalpy/sec [m2/s3] virtual tmp dQ() const = 0; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "basicChemistryModelI.H" #ifdef NoRepository #include "basicChemistryModelTemplates.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //