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-2024 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  //- Lower flammability limit
110  scalar LFL_;
111 
112  //- Upper flammability limit
113  scalar UFL_;
114 
115  //- Lower Su polynomial
116  polynomial SuPolyL_;
117 
118  //- Upper Su polynomial
119  polynomial SuPolyU_;
120 
121  //- Temperature correction exponent
122  scalar Texp_;
123 
124  //- Pressure correction exponent
125  scalar pexp_;
126 
127  //- Lower Ma polynomial
128  polynomial MaPolyL_;
129 
130  //- Upper Ma polynomial
131  polynomial MaPolyU_;
132 
133 
134  // Private Member Functions
135 
136  //- Polynomial evaluated from the given equivalence ratio
137  // and polynomial coefficients
138  static inline scalar polyPhi(scalar phi, const polynomial& a);
139 
140  //- Laminar flame speed evaluated from the given equivalence ratio
141  // at the reference temperature and pressure
142  inline scalar SuRef(scalar phi) const;
143 
144  //- Markstein evaluated from the given equivalence ratio
145  inline scalar Ma(scalar phi) const;
146 
147  //- Laminar flame speed evaluated from the given equivalence ratio
148  // corrected for temperature and pressure dependence
149  inline scalar Su0pTphi(scalar p, scalar Tu, scalar phi) const;
150 
151  //- Laminar flame speed evaluated from the given uniform
152  // equivalence ratio corrected for temperature and pressure dependence
153  tmp<volScalarField> Su0pTphi
154  (
155  const volScalarField& p,
156  const volScalarField& Tu,
157  scalar phi
158  ) const;
159 
160  //- Laminar flame speed evaluated from the given equivalence ratio
161  // distribution corrected for temperature and pressure dependence
162  tmp<volScalarField> Su0pTphi
163  (
164  const volScalarField& p,
165  const volScalarField& Tu,
166  const volScalarField& phi
167  ) const;
168 
169  //- Return the Markstein number
170  // evaluated from the given equivalence ratio
171  tmp<volScalarField> Ma(const volScalarField& phi) const;
172 
173 
174 public:
175 
176  //- Runtime type information
177  TypeName("SCOPE");
178 
179  // Constructors
180 
181  //- Construct from dictionary and psiuMulticomponentThermo
182  SCOPE
183  (
184  const dictionary& dict,
185  const dictionary& coeffDict,
187  );
188 
189  //- Disallow default bitwise copy construction
190  SCOPE(const SCOPE&) = delete;
191 
192 
193  //- Destructor
194  ~SCOPE();
195 
196 
197  // Member Functions
198 
199  //- Return the Markstein number
200  tmp<volScalarField> Ma() const;
201 
202 
203  // Member Operators
204 
205  //- Return the laminar flame speed [m/s]
207 
208  //- Disallow default bitwise assignment
209  void operator=(const SCOPE&) = delete;
210 };
211 
212 
213 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
214 
215 } // End laminarFlameSpeedModels
216 } // End namespace Foam
217 
218 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
219 
220 #endif
221 
222 // ************************************************************************* //
A 1D vector of objects of type <T> with a fixed size <Size>.
Definition: FixedList.H:78
Generic GeometricField class.
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
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.
SCOPE(const dictionary &dict, const dictionary &coeffDict, const psiuMulticomponentThermo &)
Construct from dictionary and psiuMulticomponentThermo.
void operator=(const SCOPE &)=delete
Disallow default bitwise assignment.
tmp< volScalarField > operator()() const
Return the laminar flame speed [m/s].
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.
dictionary dict
volScalarField & p