XiModel.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-2026 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::XiModel
26 
27 Description
28  Base-class for all Xi models used by the b-Xi combustion model
29 
30  References:
31  \verbatim
32  Weller, H. G. (1993).
33  The development of a new flame area combustion model
34  using conditional averaging.
35  Thermo-fluids section report TF 9307.
36 
37  Weller, H. G., Tabor, G., Gosman, A. D., & Fureby, C. (1998, January).
38  Application of a flame-wrinkling LES combustion model
39  to a turbulent mixing layer.
40  In Symposium (International) on combustion
41  (Vol. 27, No. 1, pp. 899-907). Elsevier.
42  \endverbatim
43 
44  Xi is given through an algebraic expression (Foam::XiModels::algebraic), by
45  solving a transport equation (Foam::XiModels::transport.H) or a fixed value
46  (Foam::XiModels::fixed).
47 
48  In the algebraic and transport methods \f$\Xi_{eq}\f$ is calculated in
49  similar way. In the algebraic approach, \f$\Xi_{eq}\f$ is the value used in
50  the \f$ b \f$ transport equation.
51 
52  \f$\Xi_{eq}\f$ is calculated as follows:
53 
54  \f$\Xi_{eq} = 1 + (1 + 2\Xi_{coeff}(0.5 - \dwea{b}))(\Xi^* - 1)\f$
55 
56  where:
57 
58  \f$ \dwea{b} \f$ is the regress variable.
59 
60  \f$ \Xi_{coeff} \f$ is a model constant.
61 
62  \f$ \Xi^* \f$ is the total equilibrium wrinkling combining the effects
63  of the flame instability and turbulence interaction and is given by
64 
65  \f[
66  \Xi^* = \frac {R}{R - G_\eta - G_{in}}
67  \f]
68 
69  where:
70 
71  \f$ G_\eta \f$ is the generation rate of wrinkling due to turbulence
72  interaction.
73 
74  \f$ G_{in} = \kappa \rho_{u}/\rho_{b} \f$ is the generation
75  rate due to the flame instability.
76 
77  By adding the removal rates of the two effects:
78 
79  \f[
80  R = G_\eta \frac{\Xi_{\eta_{eq}}}{\Xi_{\eta_{eq}} - 1}
81  + G_{in} \frac{\Xi_{{in}_{eq}}}{\Xi_{{in}_{eq}} - 1}
82  \f]
83 
84  where:
85 
86  \f$ R \f$ is the total removal.
87 
88  \f$ G_\eta \f$ is a model constant.
89 
90  \f$ \Xi_{\eta_{eq}} \f$ is the flame wrinkling due to turbulence.
91 
92  \f$ \Xi_{{in}_{eq}} \f$ is the equilibrium level of the flame wrinkling
93  generated by instability. It is a constant (default 2.5).
94 
95 
96 SourceFiles
97  XiModel.C
98 
99 \*---------------------------------------------------------------------------*/
100 
101 #ifndef XiModel_H
102 #define XiModel_H
103 
104 #include "ubRhoThermo.H"
106 #include "runTimeSelectionTables.H"
107 
108 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 
110 namespace Foam
111 {
112 
113 /*---------------------------------------------------------------------------*\
114  Class XiModel Declaration
115 \*---------------------------------------------------------------------------*/
116 
117 class XiModel
118 {
119 
120 protected:
121 
122  // Protected data
123 
124  //- Thermo
125  const ubRhoThermo& thermo_;
126 
127  //- Turbulence
129 
130  const volScalarField& Su_;
131 
132  const volScalarField& rho_;
133 
134  const volScalarField& b_;
135 
136  //- Flame wrinkling field
138 
139 
140  // Protected Member Functions
141 
142  //- Update coefficients from given dictionary
143  virtual bool readCoeffs(const dictionary& dict) = 0;
144 
145 
146 public:
147 
148  //- Runtime type information
149  TypeName("XiModel");
150 
151 
152  // Declare run-time constructor selection table
153 
155  (
156  autoPtr,
157  XiModel,
158  dictionary,
159  (
160  const dictionary& dict,
161  const ubRhoThermo& thermo,
163  const volScalarField& Su
164  ),
165  (
166  dict,
167  thermo,
168  turbulence,
169  Su
170  )
171  );
172 
173 
174  // Constructors
175 
176  //- Construct from components
177  XiModel
178  (
179  const ubRhoThermo& thermo,
181  const volScalarField& Su
182  );
183 
184  //- Disallow default bitwise copy construction
185  XiModel(const XiModel&) = delete;
186 
187 
188  // Selectors
189 
190  //- Return a reference to the selected Xi model
191  static autoPtr<XiModel> New
192  (
193  const dictionary& combustionProperties,
194  const ubRhoThermo& thermo,
195  const compressibleMomentumTransportModel& momentumTransport,
196  const volScalarField& Su
197  );
198 
199 
200  //- Destructor
201  virtual ~XiModel();
202 
203 
204  // Member Functions
205 
206  //- Return the flame-wrinkling Xi
207  virtual const volScalarField& Xi() const
208  {
209  return Xi_;
210  }
211 
212  //- Return the flame diffusivity
213  virtual tmp<volScalarField> Db() const = 0;
214 
215  //- Add Xi to the multivariateSurfaceInterpolationScheme table
216  // if required
217  virtual void addXi
218  (
220  )
221  {}
222 
223  //- Reset Xi to the unburnt state (1)
224  virtual void reset();
225 
226  //- Correct the flame-wrinkling Xi
227  virtual void correct() = 0;
228 
229  //- Update properties from the given combustionProperties dictionary
230  bool read(const dictionary& combustionProperties);
231 
232 
233  // Member Operators
234 
235  //- Disallow default bitwise assignment
236  void operator=(const XiModel&) = delete;
237 };
238 
239 
240 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
241 
242 } // End namespace Foam
243 
244 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
245 
246 #endif
247 
248 // ************************************************************************* //
Generic GeometricField class.
Base-class for all Xi models used by the b-Xi combustion model.
Definition: XiModel.H:117
const compressibleMomentumTransportModel & momentumTransport_
Turbulence.
Definition: XiModel.H:127
virtual ~XiModel()
Destructor.
Definition: XiModel.C:77
const volScalarField & rho_
Definition: XiModel.H:131
const volScalarField & Su_
Definition: XiModel.H:129
void operator=(const XiModel &)=delete
Disallow default bitwise assignment.
bool read(const dictionary &combustionProperties)
Update properties from the given combustionProperties dictionary.
Definition: XiModel.C:83
XiModel(const ubRhoThermo &thermo, const compressibleMomentumTransportModel &turbulence, const volScalarField &Su)
Construct from components.
Definition: XiModel.C:48
static autoPtr< XiModel > New(const dictionary &combustionProperties, const ubRhoThermo &thermo, const compressibleMomentumTransportModel &momentumTransport, const volScalarField &Su)
Return a reference to the selected Xi model.
Definition: XiModelNew.C:31
virtual void correct()=0
Correct the flame-wrinkling Xi.
const volScalarField & b_
Definition: XiModel.H:133
virtual const volScalarField & Xi() const
Return the flame-wrinkling Xi.
Definition: XiModel.H:206
volScalarField Xi_
Flame wrinkling field.
Definition: XiModel.H:136
TypeName("XiModel")
Runtime type information.
virtual void addXi(multivariateSurfaceInterpolationScheme< scalar >::fieldTable &)
Add Xi to the multivariateSurfaceInterpolationScheme table.
Definition: XiModel.H:217
virtual void reset()
Reset Xi to the unburnt state (1)
Definition: XiModel.C:92
virtual bool readCoeffs(const dictionary &dict)=0
Update coefficients from given dictionary.
Definition: XiModel.C:39
virtual tmp< volScalarField > Db() const =0
Return the flame diffusivity.
declareRunTimeSelectionTable(autoPtr, XiModel, dictionary,(const dictionary &dict, const ubRhoThermo &thermo, const compressibleMomentumTransportModel &turbulence, const volScalarField &Su),(dict, thermo, turbulence, Su))
const ubRhoThermo & thermo_
Thermo.
Definition: XiModel.H:124
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
Base class for single-phase compressible momentum transport models.
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Definition: dictionary.H:162
Abstract base class for multi-variate surface interpolation schemes.
A class for managing temporary objects.
Definition: tmp.H:55
tmp< VolField< Type > > Su(const VolField< Type > &su, const VolField< Type > &vf)
Definition: fvcSup.C:44
Namespace for OpenFOAM.
Macros to ease declaration of run-time selection tables.
dictionary dict
autoPtr< incompressible::momentumTransportModel > turbulence(incompressible::momentumTransportModel::New(U, phi, viscosity))
fluidMulticomponentThermo & thermo
Definition: createFields.H:15