Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / regionModels / pyrolysisModels / reactingOneDim / reactingOneDim.H
blobaadc429160a386aa02aac16752fa4deca0a4cbf5
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
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.
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.
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/>.
24 Class
25     Foam::reactingOneDim
27 Description
28     Reacting, 1-D pyrolysis model
30 SourceFiles
31     reactingOneDim.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef reactingOneDim_H
36 #define reactingOneDim_H
38 #include "pyrolysisModel.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
45 namespace regionModels
47 namespace pyrolysisModels
51 /*---------------------------------------------------------------------------*\
52                       Class reactingOneDim Declaration
53 \*---------------------------------------------------------------------------*/
55 class reactingOneDim
57     public pyrolysisModel
59 private:
61     // Private member functions
63         //- Disallow default bitwise copy construct
64         reactingOneDim(const reactingOneDim&);
66         //- Disallow default bitwise assignment
67         void operator=(const reactingOneDim&);
70 protected:
72     // Protected data
74         //- Reference to the solid chemistry model
75         autoPtr<solidChemistryModel> solidChemistry_;
77         //- Reference to solid thermo
78         basicSolidThermo& solidThermo_;
81         // Reference to solid thermo properties
83             //- Absorption coefficient [1/m]
84             const volScalarField& kappa_;
86             //- Thermal conductivity [W/m/K]
87             const volScalarField& K_;
89             //- Density [kg/m3]
90             volScalarField& rho_;
92             //- List of solid components
93             PtrList<volScalarField>& Ys_;
95             // Non-const access to temperature
96             volScalarField& T_;
99         //- Name of the radiative flux in the primary region
100         word primaryRadFluxName_;
103         // Solution parameters
105             //- Number of non-orthogonal correctors
106             label nNonOrthCorr_;
108             //- Maximum diffussivity
109             scalar maxDiff_;
111             //- Minimum delta for combustion
112             scalar minimumDelta_;
115         // Fields
117             //- Total gas mass flux to the primary region [kg/m2/s]
118             surfaceScalarField phiGas_;
120             //- Sensible enthalpy gas flux [J/m2/s]
121             volScalarField phiHsGas_;
123             //- Heat release [J/s/m3]
124             volScalarField chemistrySh_;
127         // Source term fields
129             //- Coupled region radiative heat flux [W/m2]
130             //  Requires user to input mapping info for coupled patches
131             volScalarField QrCoupled_;
133             //- In depth radiative heat flux [W/m2]
134             volScalarField Qr_;
137         // Checks
139             //- Cumulative lost mass of the condensed phase [kg]
140             dimensionedScalar lostSolidMass_;
142             //- Cumulative mass generation of the gas phase [kg]
143             dimensionedScalar addedGasMass_;
145             //- Total mass gas flux at the pyrolysing walls [kg/s]
146             scalar totalGasMassFlux_;
148             //- Total heat release rate [J/s]
149             dimensionedScalar totalHeatRR_;
152     // Protected member functions
154         //- Read control parameters from dictionary
155         bool read();
157         //- Update submodels
158         void updateFields();
160         //- Update/move mesh based on change in mass
161         void updateMesh(const scalarField& mass0);
163         //- Update radiative flux in pyrolysis region
164         void updateQr();
166         //- Update enthalpy flux for pyrolysis gases
167         void updatePhiGas();
169         //- Mass check
170         void calculateMassTransfer();
173         // Equations
175             //- Solve continuity equation
176             void solveContinuity();
178             //- Solve energy
179             void solveEnergy();
181             //- Solve solid species mass conservation
182             void solveSpeciesMass();
185 public:
187     //- Runtime type information
188     TypeName("reactingOneDim");
191     // Constructors
193         //- Construct from type name and mesh
194         reactingOneDim(const word& modelType, const fvMesh& mesh);
197     //- Destructor
198     virtual ~reactingOneDim();
201     // Member Functions
203         // Access
205             //- Fields
207                 //- Return density [kg/m3]
208                 virtual const volScalarField& rho() const;
210                 //- Return const temperature [K]
211                 virtual const volScalarField& T() const;
213                 //- Return specific heat capacity [J/kg/K]
214                 virtual const tmp<volScalarField> Cp() const;
216                 //- Return the region absorptivity [1/m]
217                 virtual const volScalarField& kappa() const;
219                 //- Return the region thermal conductivity [W/m/k]
220                 virtual const volScalarField& K() const;
222                 //- Return the total gas mass flux to primary region [kg/m2/s]
223                 virtual const surfaceScalarField& phiGas() const;
226         // Solution parameters
228             //- Return the number of non-orthogonal correctors
229             inline label nNonOrthCorr() const;
231             //- Return max diffusivity allowed in the solid
232             virtual scalar maxDiff() const;
235         // Helper functions
237             //- External hook to add mass to the primary region
238             virtual scalar addMassSources
239             (
240                 const label patchI,            // patchI on primary region
241                 const label faceI              // faceI of patchI
242             );
244             //- Mean diffusion number of the solid region
245             virtual scalar solidRegionDiffNo() const;
248         // Source fields (read/write access)
250             //- In depth radiative heat flux
251             inline const volScalarField& Qr() const;
254        // Evolution
256             //- Pre-evolve region
257             virtual void preEvolveRegion();
259             //- Evolve the pyrolysis equations
260             virtual void evolveRegion();
263        // I-O
265             //- Provide some feedback
266             virtual void info() const;
270 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
272 } // End namespace pyrolysisModels
273 } // End namespace regionModels
274 } // End namespace Foam
276 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
278 #include "reactingOneDimI.H"
280 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
282 #endif
284 // ************************************************************************* //