All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SCOPELaminarFlameSpeed.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 Class
25  Foam::laminarFlameSpeedModels::SCOPE
26 
27 Description
28  Laminar flame speed obtained from the SCOPE correlation.
29 
30  Seven parameters are specified in terms of polynomial functions of
31  stoichiometry. Two polynomials are fitted, covering different parts of the
32  flammable range. If the mixture is outside the fitted range, linear
33  interpolation is used between the extreme of the polynomial and the upper or
34  lower flammable limit with the Markstein number constant.
35 
36  Variations of pressure and temperature from the reference values are taken
37  into account through \f$ pexp \f$ and \f$ texp \f$
38 
39  The laminar burning velocity fitting polynomial is:
40 
41  \f$ Su = a_{0}(1+a_{1}x+K+..a_{i}x^{i}..+a_{6}x^{6}) (p/p_{ref})^{pexp}
42  (T/T_{ref})^{texp} \f$
43 
44  where:
45 
46  \f$ a_{i} \f$ are the polynomial coefficients.
47 
48  \f$ pexp \f$ and \f$ texp \f$ are the pressure and temperature factors
49  respectively.
50 
51  \f$ x \f$ is the equivalence ratio.
52 
53  \f$ T_{ref} \f$ and \f$ p_{ref} \f$ are the temperature and pressure
54  references for the laminar burning velocity.
55 
56 
57 SourceFiles
58  SCOPELaminarFlameSpeed.C
59 
60 \*---------------------------------------------------------------------------*/
61 
62 #ifndef SCOPELaminarFlameSpeed_H
63 #define SCOPELaminarFlameSpeed_H
64 
65 #include "laminarFlameSpeed.H"
66 
67 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
68 
69 namespace Foam
70 {
71 namespace laminarFlameSpeedModels
72 {
73 
74 /*---------------------------------------------------------------------------*\
75  Class SCOPE Declaration
76 \*---------------------------------------------------------------------------*/
77 
78 class SCOPE
79 :
80  public laminarFlameSpeed
81 {
82  // Private Data
83 
84  class polynomial
85  :
86  public FixedList<scalar, 7>
87  {
88  public:
89 
90  //- Lower limit
91  scalar ll;
92 
93  //- Upper polynomial limit
94  scalar ul;
95 
96  //- Value at lower limit
97  scalar llv;
98 
99  //- Value at upper limit
100  scalar ulv;
101 
102  //- Changeover point from lower to upper polynomial
103  scalar lu;
104 
105  //- Construct from dictionary
106  polynomial(const dictionary& polyDict);
107  };
108 
109 
110  dictionary coeffsDict_;
111 
112  //- Lower flammability limit
113  scalar LFL_;
114 
115  //- Upper flammability limit
116  scalar UFL_;
117 
118  //- Lower Su polynomial
119  polynomial SuPolyL_;
120 
121  //- Upper Su polynomial
122  polynomial SuPolyU_;
123 
124  //- Temperature correction exponent
125  scalar Texp_;
126 
127  //- Pressure correction exponent
128  scalar pexp_;
129 
130  //- Lower Ma polynomial
131  polynomial MaPolyL_;
132 
133  //- Upper Ma polynomial
134  polynomial MaPolyU_;
135 
136 
137  // Private Member Functions
138 
139  //- Polynomial evaluated from the given equivalence ratio
140  // and polynomial coefficients
141  static inline scalar polyPhi(scalar phi, const polynomial& a);
142 
143  //- Laminar flame speed evaluated from the given equivalence ratio
144  // at the reference temperature and pressure
145  inline scalar SuRef(scalar phi) const;
146 
147  //- Markstein evaluated from the given equivalence ratio
148  inline scalar Ma(scalar phi) const;
149 
150  //- Laminar flame speed evaluated from the given equivalence ratio
151  // corrected for temperature and pressure dependence
152  inline scalar Su0pTphi(scalar p, scalar Tu, scalar phi) const;
153 
154  //- Laminar flame speed evaluated from the given uniform
155  // equivalence ratio corrected for temperature and pressure dependence
156  tmp<volScalarField> Su0pTphi
157  (
158  const volScalarField& p,
159  const volScalarField& Tu,
160  scalar phi
161  ) const;
162 
163  //- Laminar flame speed evaluated from the given equivalence ratio
164  // distribution corrected for temperature and pressure dependence
165  tmp<volScalarField> Su0pTphi
166  (
167  const volScalarField& p,
168  const volScalarField& Tu,
169  const volScalarField& phi
170  ) const;
171 
172  //- Return the Markstein number
173  // evaluated from the given equivalence ratio
174  tmp<volScalarField> Ma(const volScalarField& phi) const;
175 
176 
177 public:
178 
179  //- Runtime type information
180  TypeName("SCOPE");
181 
182  // Constructors
183 
184  //- Construct from dictionary and psiuMulticomponentThermo
185  SCOPE
186  (
187  const dictionary&,
189  );
190 
191  //- Disallow default bitwise copy construction
192  SCOPE(const SCOPE&) = delete;
193 
194 
195  //- Destructor
196  ~SCOPE();
197 
198 
199  // Member Functions
200 
201  //- Return the Markstein number
202  tmp<volScalarField> Ma() const;
203 
204 
205  // Member Operators
206 
207  //- Return the laminar flame speed [m/s]
209 
210  //- Disallow default bitwise assignment
211  void operator=(const SCOPE&) = delete;
212 };
213 
214 
215 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
216 
217 } // End laminarFlameSpeedModels
218 } // End namespace Foam
219 
220 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
221 
222 #endif
223 
224 // ************************************************************************* //
A 1D vector of objects of type <T> with a fixed size <Size>.
Definition: FixedList.H:78
Generic GeometricField class.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:162
Laminar flame speed obtained from the SCOPE correlation.
tmp< volScalarField > Ma() const
Return the Markstein number.
TypeName("SCOPE")
Runtime type information.
void operator=(const SCOPE &)=delete
Disallow default bitwise assignment.
tmp< volScalarField > operator()() const
Return the laminar flame speed [m/s].
SCOPE(const dictionary &, const psiuMulticomponentThermo &)
Construct from dictionary and psiuMulticomponentThermo.
Abstract class for laminar flame speed.
Base-class for combustion fluid thermodynamic properties based on compressibility.
A class for managing temporary objects.
Definition: tmp.H:55
Namespace for OpenFOAM.
volScalarField & p