FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

SCOPELaminarFlameSpeed.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Class
00025     Foam::laminarFlameSpeedModels::SCOPE
00026 
00027 Description
00028     Laminar flame speed obtained from the SCOPE correlation.
00029 
00030     Seven parameters are specified in terms of polynomial functions of
00031     stoichiometry. Two polynomials are fitted, covering different parts of the
00032     flammable range. If the mixture is outside the fitted range, linear
00033     interpolation is used between the extreme of the polynomio and the upper or
00034     lower flammable limit with the Markstein number constant.
00035 
00036     Variations of pressure and temperature from the reference values are taken
00037     into account through \f$ pexp \f$ and \f$ texp \f$
00038 
00039     The laminar burning velocity fitting polynomial is:
00040 
00041     \f$ Su = a_{0}(1+a_{1}x+K+..a_{i}x^{i}..+a_{6}x^{6}) (p/p_{ref})^{pexp}
00042     (T/T_{ref})^{texp} \f$
00043 
00044     where:
00045 
00046         \f$ a_{i} \f$ are the polinomial coefficients.
00047 
00048         \f$ pexp \f$ and \f$ texp \f$ are the pressure and temperature factors
00049         respectively.
00050 
00051         \f$ x \f$ is the equivalence ratio.
00052 
00053         \f$ T_{ref} \f$ and \f$ p_{ref} \f$ are the temperature and pressure
00054         references for the laminar burning velocity.
00055 
00056 
00057 SourceFiles
00058     SCOPELaminarFlameSpeed.C
00059 
00060 \*---------------------------------------------------------------------------*/
00061 
00062 #ifndef SCOPE_H
00063 #define SCOPE_H
00064 
00065 #include <laminarFlameSpeedModels/laminarFlameSpeed.H>
00066 
00067 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00068 
00069 namespace Foam
00070 {
00071 namespace laminarFlameSpeedModels
00072 {
00073 
00074 /*---------------------------------------------------------------------------*\
00075                            Class SCOPE Declaration
00076 \*---------------------------------------------------------------------------*/
00077 
00078 class SCOPE
00079 :
00080     public laminarFlameSpeed
00081 {
00082     // Private Data
00083 
00084         class polynomial
00085         :
00086             public FixedList<scalar, 7>
00087         {
00088         public:
00089 
00090             //- Lower limit
00091             scalar ll;
00092 
00093             //- Upper polynomial limit
00094             scalar ul;
00095 
00096             //- Value at lower limit
00097             scalar llv;
00098 
00099             //- Value at upper limit
00100             scalar ulv;
00101 
00102             //- Changeover point from lower to upper polynomial
00103             scalar lu;
00104 
00105             //- Construct from dictionary
00106             polynomial(const dictionary& polyDict);
00107         };
00108 
00109 
00110         dictionary coeffsDict_;
00111 
00112         //- Lower flamability limit
00113         scalar LFL_;
00114 
00115         //- Upper flamability limit
00116         scalar UFL_;
00117 
00118         //- Lower Su polynomial
00119         polynomial SuPolyL_;
00120 
00121         //- Upper Su polynomial
00122         polynomial SuPolyU_;
00123 
00124         //- Temperature correction exponent
00125         scalar Texp_;
00126 
00127         //- Pressure correction exponent
00128         scalar pexp_;
00129 
00130         //- Lower Ma polynomial
00131         polynomial MaPolyL_;
00132 
00133         //- Upper Ma polynomial
00134         polynomial MaPolyU_;
00135 
00136 
00137     // Private member functions
00138 
00139         //- Polynomial evaluated from the given equivalence ratio
00140         //  and polynomial coefficients
00141         static inline scalar polyPhi(scalar phi, const polynomial& a);
00142 
00143         //- Laminar flame speed evaluated from the given equivalence ratio
00144         //  at the reference temperature and pressure
00145         inline scalar SuRef(scalar phi) const;
00146 
00147         //- Markstein evaluated from the given equivalence ratio
00148         inline scalar Ma(scalar phi) const;
00149 
00150         //- Laminar flame speed evaluated from the given equivalence ratio
00151         //  corrected for temperature and pressure dependence
00152         inline scalar Su0pTphi(scalar p, scalar Tu, scalar phi) const;
00153 
00154         //- Laminar flame speed evaluated from the given uniform
00155         //  equivalence ratio corrected for temperature and pressure dependence
00156         tmp<volScalarField> Su0pTphi
00157         (
00158             const volScalarField& p,
00159             const volScalarField& Tu,
00160             scalar phi
00161         ) const;
00162 
00163         //- Laminar flame speed evaluated from the given equivalence ratio
00164         //  distribution corrected for temperature and pressure dependence
00165         tmp<volScalarField> Su0pTphi
00166         (
00167             const volScalarField& p,
00168             const volScalarField& Tu,
00169             const volScalarField& phi
00170         ) const;
00171 
00172         //- Return the Markstein number
00173         //  evaluated from the given equivalence ratio
00174         tmp<volScalarField> Ma(const volScalarField& phi) const;
00175 
00176         //- Construct as copy (not implemented)
00177         SCOPE(const SCOPE&);
00178 
00179         void operator=(const SCOPE&);
00180 
00181 
00182 public:
00183 
00184     //- Runtime type information
00185     TypeName("SCOPE");
00186 
00187     // Constructors
00188 
00189         //- Construct from dictionary and hhuCombustionThermo
00190         SCOPE
00191         (
00192             const dictionary&,
00193             const hhuCombustionThermo&
00194         );
00195 
00196 
00197     // Destructor
00198     ~SCOPE();
00199 
00200 
00201     // Member functions
00202 
00203         //- Return the Markstein number
00204         tmp<volScalarField> Ma() const;
00205 
00206         //- Return the laminar flame speed [m/s]
00207         tmp<volScalarField> operator()() const;
00208 };
00209 
00210 
00211 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00212 
00213 } // End laminarFlameSpeedModels
00214 } // End namespace Foam
00215 
00216 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00217 
00218 #endif
00219 
00220 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines