XiFluid.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) 2022-2025 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::solvers::XiFluid
26 
27 Description
28  Solver module for compressible premixed/partially-premixed combustion with
29  turbulence modelling.
30 
31  Combusting RANS code using the Weller b-Xi two-equation combustion model.
32  Xi may be obtained by either the solution of the Xi transport equation or
33  from an algebraic expression.
34 
35  Reference:
36  \verbatim
37  Weller, H. G. (1993).
38  The development of a new flame area combustion model
39  using conditional averaging.
40  Thermo-fluids section report TF 9307.
41  \endverbatim
42 
43  Both approaches are based on Gulder's flame speed correlation which has been
44  shown to be appropriate by comparison with the results from the spectral
45  model.
46 
47  Reference:
48  \verbatim
49  Weller, H. G., Marooney, C. J., & Gosman, A. D. (1991, January).
50  A new spectral method for calculation of the time-varying area
51  of a laminar flame in homogeneous turbulence.
52  In Symposium (International) on Combustion
53  (Vol. 23, No. 1, pp. 629-636). Elsevier.
54  \endverbatim
55 
56  Strain effects are incorporated directly into the Xi equation
57  but not in the algebraic approximation. Further work need to be
58  done on this issue, particularly regarding the enhanced removal rate
59  caused by flame compression. Analysis using results of the spectral
60  model will be required.
61 
62  For cases involving very lean Propane flames or other flames which are
63  very strain-sensitive, a transport equation for the laminar flame
64  speed is present. This equation is derived using heuristic arguments
65  involving the strain time scale and the strain-rate at extinction.
66  the transport velocity is the same as that for the Xi equation.
67 
68  Reference:
69  \verbatim
70  Weller, H. G., Tabor, G., Gosman, A. D., & Fureby, C. (1998, January).
71  Application of a flame-wrinkling LES combustion model
72  to a turbulent mixing layer.
73  In Symposium (International) on combustion
74  (Vol. 27, No. 1, pp. 899-907). Elsevier.
75  \endverbatim
76 
77  For inhomogeneous mixtures, in addition to the regress variable \c b, it is
78  necessary to solve for the mixture-fraction \c ft provided by the \c
79  leanInhomogeneousMixture and also the fuel mass-fraction \c fu if there are
80  rich regions in the mixture, provided by the \c inhomogeneousMixture.
81  Details of the extension of the Weller b-Xi combustion model to non-premixed
82  combustion can be found in the Technical Report TR/HGW/03.
83 
84  Reference:
85  \verbatim
86  Weller, H. G. (2002, August).
87  The Application of the Weller Combustion Models to
88  Non-Premixed Combustion.
89  (Technical Report TR/HGW/03)
90  \endverbatim
91 
92  For inhomogeneous mixtures with exhaust gas re-circulation it is necessary
93  to additionally solve for the recirculated exhaust gas mass-fraction \c
94  egr which is provided by the \c inhomogeneousEGRMixture mixture.
95 
96  Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
97  pseudo-transient and steady simulations.
98 
99  Reference:
100  \verbatim
101  Greenshields, C. J., & Weller, H. G. (2022).
102  Notes on Computational Fluid Dynamics: General Principles.
103  CFD Direct Ltd.: Reading, UK.
104  \endverbatim
105 
106  Optional fvModels and fvConstraints are provided to enhance the simulation
107  in many ways including adding various sources, chemical reactions,
108  combustion, Lagrangian particles, radiation, surface film etc. and
109  constraining or limiting the solution.
110 
111 SourceFiles
112  XiFluid.C
113 
114 See also
115  Foam::solvers::fluidSolver
116  Foam::solvers::isothermalFluid
117 
118 \*---------------------------------------------------------------------------*/
119 
120 #ifndef XiFluid_H
121 #define XiFluid_H
122 
123 #include "isothermalFluid.H"
127 #include "SuModel.H"
128 #include "XiModel.H"
129 
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131 
132 namespace Foam
133 {
134 namespace solvers
135 {
136 
137 /*---------------------------------------------------------------------------*\
138  Class XiFluid Declaration
139 \*---------------------------------------------------------------------------*/
140 
141 class XiFluid
142 :
143  public isothermalFluid
144 {
145 
146 protected:
147 
148  // Thermophysical properties
149 
151 
152 
153  // Composition
154 
155  //- Reference to the combustion regress variable
157 
158  //- Set of fields used for the multivariate convection scheme
160 
161 
162  // Thermophysical transport
163 
165  <
167  <
169  <
172  >
173  >
175 
176 
177  // Reactions
178 
179  //- Dictionary of combustion model coefficients
181 
182  //- Strained laminar flame-speed model
184 
185  //- Flame wrinkling model
187 
188 
189  // Protected member functions
190 
191  //- Solve the ft equation for partially-premixed mixtures
192  void ftSolve
193  (
195  const volScalarField& Db
196  );
197 
198  //- Solve the fu equation for partially- and non- premixed mixtures
199  void fuSolve
200  (
202  const volScalarField& Db,
203  const volScalarField& bSource
204  );
205 
206  //- Solve the egr mass-fraction equation
207  // for mixtures with exhaust gas recirculation
208  void egrSolve
209  (
211  const volScalarField& Db
212  );
213 
214  //- Apply the early kernel growth correction to the flame-wrinkling Xi
215  // to compensate for the inaccurate flame surface area estimate
216  // when the kernel is not fully-developed,
217  // i.e. does not have a completely burnt side
219  (
220  const volScalarField& Xi,
221  const surfaceScalarField& nf,
222  const dimensionedScalar& dMgb
223  ) const;
224 
225  //- Solve the Xi and regress variable equations
226  void bSolve
227  (
229  const volScalarField& Db
230  );
231 
232  //- Solve the unburnt energy equation
233  void EauSolve
234  (
236  const volScalarField& Db
237  );
238 
239  //- Solve the energy equation
240  void EaSolve
241  (
243  const volScalarField& Db
244  );
245 
246 
247 public:
248 
249  //- Reference to the fluid thermophysical properties
251 
252  //- Reference to the combustion regress variable
253  // obtained from the combustion mixture
254  const volScalarField& b;
255 
256  //- Laminar flame speed
257  const volScalarField& Su;
258 
259  //- Flame wrinkling
260  const volScalarField& Xi;
261 
262 
263  //- Runtime type information
264  TypeName("XiFluid");
265 
266 
267  // Constructors
268 
269  //- Construct from region mesh
270  XiFluid(fvMesh& mesh);
271 
272  //- Disallow default bitwise copy construction
273  XiFluid(const XiFluid&) = delete;
274 
275 
276  //- Destructor
277  virtual ~XiFluid();
278 
279 
280  // Member Functions
281 
282  //- Predict thermophysical transport
283  virtual void thermophysicalTransportPredictor();
284 
285  //- Construct and solve the energy equation,
286  // convert to temperature
287  // and update thermophysical and transport properties
288  virtual void thermophysicalPredictor();
289 
290  //- Correct the thermophysical transport
291  virtual void thermophysicalTransportCorrector();
292 
293  //- Reset b-Xi and thermodynamics to the unburnt state
294  // for multi-cycle simulations
295  virtual void reset();
296 
297 
298  // Member Operators
299 
300  //- Disallow default bitwise assignment
301  void operator=(const XiFluid&) = delete;
302 };
303 
304 
305 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
306 
307 } // End namespace solvers
308 } // End namespace Foam
309 
310 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
311 
312 #endif
313 
314 // ************************************************************************* //
volScalarField Db("Db", rho *turbulence->nuEff())
tmp< fv::convectionScheme< scalar > > mvConvection(fv::convectionScheme< scalar >::New(mesh, fields, phi, mesh.schemes().div("div(phi,ft_b_ha_hau)")))
Generic GeometricField class.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Definition: IOdictionary.H:57
Templated abstract base class for RAS thermophysical transport models.
Templated abstract base class for thermophysical transport models.
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 turbulence models.
Base-class for fluid thermodynamic properties.
Definition: fluidThermo.H:56
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:96
Abstract base class for convection schemes.
Abstract base class for multi-variate surface interpolation schemes.
Base-class for combustion fluid thermodynamic properties based on compressibility.
const fvMesh & mesh
Region mesh.
Definition: solver.H:101
Solver module for compressible premixed/partially-premixed combustion with turbulence modelling.
Definition: XiFluid.H:143
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
const volScalarField & Su
Laminar flame speed.
Definition: XiFluid.H:256
const volScalarField & b
Reference to the combustion regress variable.
Definition: XiFluid.H:253
IOdictionary combustionProperties
Dictionary of combustion model coefficients.
Definition: XiFluid.H:179
XiFluid(fvMesh &mesh)
Construct from region mesh.
Definition: XiFluid.C:44
turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity< RASThermophysicalTransportModel< ThermophysicalTransportModel< compressibleMomentumTransportModel, fluidThermo > > > thermophysicalTransport
Definition: XiFluid.H:173
autoPtr< SuModel > SuModel_
Strained laminar flame-speed model.
Definition: XiFluid.H:182
psiuMulticomponentThermo & thermo_
Definition: XiFluid.H:149
void EaSolve(const fv::convectionScheme< scalar > &mvConvection, const volScalarField &Db)
Solve the energy equation.
const volScalarField & Xi
Flame wrinkling.
Definition: XiFluid.H:259
void EauSolve(const fv::convectionScheme< scalar > &mvConvection, const volScalarField &Db)
Solve the unburnt energy equation.
tmp< volScalarField > XiCorr(const volScalarField &Xi, const surfaceScalarField &nf, const dimensionedScalar &dMgb) const
Apply the early kernel growth correction to the flame-wrinkling Xi.
autoPtr< XiModel > XiModel_
Flame wrinkling model.
Definition: XiFluid.H:185
virtual ~XiFluid()
Destructor.
Definition: XiFluid.C:126
virtual void thermophysicalTransportCorrector()
Correct the thermophysical transport.
Definition: XiFluid.C:138
const psiuMulticomponentThermo & thermo
Reference to the fluid thermophysical properties.
Definition: XiFluid.H:249
void operator=(const XiFluid &)=delete
Disallow default bitwise assignment.
void egrSolve(const fv::convectionScheme< scalar > &mvConvection, const volScalarField &Db)
Solve the egr mass-fraction equation.
TypeName("XiFluid")
Runtime type information.
volScalarField & b_
Reference to the combustion regress variable.
Definition: XiFluid.H:155
void fuSolve(const fv::convectionScheme< scalar > &mvConvection, const volScalarField &Db, const volScalarField &bSource)
Solve the fu equation for partially- and non- premixed mixtures.
virtual void reset()
Reset b-Xi and thermodynamics to the unburnt state.
Definition: XiFluid.C:144
multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
Set of fields used for the multivariate convection scheme.
Definition: XiFluid.H:158
void ftSolve(const fv::convectionScheme< scalar > &mvConvection, const volScalarField &Db)
Solve the ft equation for partially-premixed mixtures.
virtual void thermophysicalTransportPredictor()
Predict thermophysical transport.
Definition: XiFluid.C:132
void bSolve(const fv::convectionScheme< scalar > &mvConvection, const volScalarField &Db)
Solve the Xi and regress variable equations.
Solver module for steady or transient turbulent flow of compressible isothermal fluids with optional ...
A class for managing temporary objects.
Definition: tmp.H:55
Eddy-diffusivity based energy gradient heat flux model for RAS or LES of turbulent flow....
Namespace for OpenFOAM.