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-2018 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 polynomio 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 polinomial 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 flamability limit
113  scalar LFL_;
114 
115  //- Upper flamability 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  //- Construct as copy (not implemented)
177  SCOPE(const SCOPE&);
178 
179  void operator=(const SCOPE&);
180 
181 
182 public:
183 
184  //- Runtime type information
185  TypeName("SCOPE");
186 
187  // Constructors
188 
189  //- Construct from dictionary and psiuReactionThermo
190  SCOPE
191  (
192  const dictionary&,
193  const psiuReactionThermo&
194  );
195 
196 
197  //- Destructor
198  ~SCOPE();
199 
200 
201  // Member functions
202 
203  //- Return the Markstein number
204  tmp<volScalarField> Ma() const;
205 
206  //- Return the laminar flame speed [m/s]
208 };
209 
210 
211 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
212 
213 } // End laminarFlameSpeedModels
214 } // End namespace Foam
215 
216 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
217 
218 #endif
219 
220 // ************************************************************************* //
surfaceScalarField & phi
A 1D vector of objects of type <T> with a fixed size <Size>.
Definition: FixedList.H:54
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:137
tmp< volScalarField > operator()() const
Return the laminar flame speed [m/s].
Laminar flame speed obtained from the SCOPE correlation.
Foam::psiuReactionThermo.
TypeName("SCOPE")
Runtime type information.
Abstract class for laminar flame speed.
volScalarField & p
A class for managing temporary objects.
Definition: PtrList.H:53
tmp< volScalarField > Ma() const
Return the Markstein number.
Namespace for OpenFOAM.