SCOPELaminarFlameSpeed.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2012 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::laminarFlameSpeedModels::SCOPE
28 
29 Description
30  Laminar flame speed obtained from the SCOPE correlation.
31 
32  Seven parameters are specified in terms of polynomial functions of
33  stoichiometry. Two polynomials are fitted, covering different parts of the
34  flammable range. If the mixture is outside the fitted range, linear
35  interpolation is used between the extreme of the polynomio and the upper or
36  lower flammable limit with the Markstein number constant.
37 
38  Variations of pressure and temperature from the reference values are taken
39  into account through \f$ pexp \f$ and \f$ texp \f$
40 
41  The laminar burning velocity fitting polynomial is:
42 
43  \f$ Su = a_{0}(1+a_{1}x+K+..a_{i}x^{i}..+a_{6}x^{6}) (p/p_{ref})^{pexp}
44  (T/T_{ref})^{texp} \f$
45 
46  where:
47 
48  \f$ a_{i} \f$ are the polinomial coefficients.
49 
50  \f$ pexp \f$ and \f$ texp \f$ are the pressure and temperature factors
51  respectively.
52 
53  \f$ x \f$ is the equivalence ratio.
54 
55  \f$ T_{ref} \f$ and \f$ p_{ref} \f$ are the temperature and pressure
56  references for the laminar burning velocity.
57 
58 
59 SourceFiles
60  SCOPELaminarFlameSpeed.C
61 
62 \*---------------------------------------------------------------------------*/
63 
64 #ifndef SCOPE_H
65 #define SCOPE_H
66 
67 #include "laminarFlameSpeed.H"
68 
69 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
70 
71 namespace Foam
72 {
73 namespace laminarFlameSpeedModels
74 {
75 
76 /*---------------------------------------------------------------------------*\
77  Class SCOPE Declaration
78 \*---------------------------------------------------------------------------*/
79 
80 class SCOPE
81 :
82  public laminarFlameSpeed
83 {
84  // Private Data
85 
86  class polynomial
87  :
88  public FixedList<scalar, 7>
89  {
90  public:
91 
92  //- Lower limit
93  scalar ll;
94 
95  //- Upper polynomial limit
96  scalar ul;
97 
98  //- Value at lower limit
99  scalar llv;
100 
101  //- Value at upper limit
102  scalar ulv;
103 
104  //- Changeover point from lower to upper polynomial
105  scalar lu;
106 
107  //- Construct from dictionary
108  polynomial(const dictionary& polyDict);
109  };
110 
111 
112  dictionary coeffsDict_;
113 
114  //- Lower flammability limit
115  scalar LFL_;
116 
117  //- Upper flammability limit
118  scalar UFL_;
119 
120  //- Lower Su polynomial
121  polynomial SuPolyL_;
122 
123  //- Upper Su polynomial
124  polynomial SuPolyU_;
125 
126  //- Temperature correction exponent
127  scalar Texp_;
128 
129  //- Pressure correction exponent
130  scalar pexp_;
131 
132  //- Lower Ma polynomial
133  polynomial MaPolyL_;
134 
135  //- Upper Ma polynomial
136  polynomial MaPolyU_;
137 
138 
139  // Private member functions
140 
141  //- Polynomial evaluated from the given equivalence ratio
142  // and polynomial coefficients
143  static inline scalar polyPhi(scalar phi, const polynomial& a);
144 
145  //- Laminar flame speed evaluated from the given equivalence ratio
146  // at the reference temperature and pressure
147  inline scalar SuRef(scalar phi) const;
148 
149  //- Markstein evaluated from the given equivalence ratio
150  inline scalar Ma(scalar phi) const;
151 
152  //- Laminar flame speed evaluated from the given equivalence ratio
153  // corrected for temperature and pressure dependence
154  inline scalar Su0pTphi(scalar p, scalar Tu, scalar phi) const;
155 
156  //- Laminar flame speed evaluated from the given uniform
157  // equivalence ratio corrected for temperature and pressure dependence
158  tmp<volScalarField> Su0pTphi
159  (
160  const volScalarField& p,
161  const volScalarField& Tu,
162  scalar phi
163  ) const;
164 
165  //- Laminar flame speed evaluated from the given equivalence ratio
166  // distribution corrected for temperature and pressure dependence
167  tmp<volScalarField> Su0pTphi
168  (
169  const volScalarField& p,
170  const volScalarField& Tu,
171  const volScalarField& phi
172  ) const;
173 
174  //- Return the Markstein number
175  // evaluated from the given equivalence ratio
177 
178  //- Construct as copy (not implemented)
179  SCOPE(const SCOPE&);
180 
181  void operator=(const SCOPE&);
182 
183 
184 public:
185 
186  //- Runtime type information
187  TypeName("SCOPE");
188 
189  // Constructors
190 
191  //- Construct from dictionary and psiuReactionThermo
192  SCOPE
193  (
194  const dictionary&,
195  const psiuReactionThermo&
196  );
197 
198 
199  //- Destructor
200  ~SCOPE();
201 
202 
203  // Member functions
204 
205  //- Return the Markstein number
206  tmp<volScalarField> Ma() const;
207 
208  //- Return the laminar flame speed [m/s]
210 };
211 
212 
213 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
214 
215 } // End laminarFlameSpeedModels
216 } // End namespace Foam
217 
218 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
219 
220 #endif
221 
222 // ************************************************************************* //
p
volScalarField & p
Definition: createFieldRefs.H:8
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::psiuReactionThermo
Foam::psiuReactionThermo.
Definition: psiuReactionThermo.H:55
Foam::laminarFlameSpeedModels::SCOPE::operator()
tmp< volScalarField > operator()() const
Return the laminar flame speed [m/s].
laminarFlameSpeed.H
Foam::laminarFlameSpeedModels::SCOPE
Laminar flame speed obtained from the SCOPE correlation.
Definition: SCOPELaminarFlameSpeed.H:79
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::laminarFlameSpeedModels::SCOPE::TypeName
TypeName("SCOPE")
Runtime type information.
Foam::laminarFlameSpeedModels::SCOPE::~SCOPE
~SCOPE()
Destructor.
Foam::laminarFlameSpeed
Abstract class for laminar flame speed.
Definition: laminarFlameSpeed.H:60
Foam::FixedList
A 1D vector of objects of type <T> with a fixed length <N>.
Definition: HashTable.H:104
Foam::laminarFlameSpeedModels::SCOPE::Ma
tmp< volScalarField > Ma() const
Return the Markstein number.
Foam::GeometricField< scalar, fvPatchField, volMesh >