XiProfile.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) 2024-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::XiProfile
26 
27 Description
28  Base class for flame wrinkling profiles
29 
30  Flame wrinkling profiles are functions of \c b only for simplicity and
31  numerical stability. The profiles are usually formulated so that the flame
32  wrinkling \c Xi is equal to the equilibrium value in the middle of the
33  flame, i.e. where \c b = 0.5, but this does not guarantee that the flame
34  propagates at the correct speed with heat release due to the slight
35  asymmetry in \c b distribution caused by the heat release dilatation.
36 
37  In principle a better distribution function for \c Xi would be based
38  directly on the \c laplacian(b) such that \c Xi equals the equilibrium
39  value at the point in the flame where the Laplacian of \c b is 0, e.g.
40  \verbatim
41  Xi = max(XiEq + 0.1*XiEqrho*fvc::laplacian(Db, b)/(rhou*Db*sqr(mgb)), 1)
42  \endverbatim
43  While this does provide the correct speed for a well resolved 1D flame it is
44  prone to cause serious numerical instability and is not applicable to real
45  flame simulations.
46 
47  A more practical approach to correct the flame speed for the dilatation
48  effect would be to introduce a small amount of off-centring to the \c Xi
49  distribution as a function of \c b which would need to be a function of at
50  least the density ratio and possibly the equilibrium \c Xi also -- this is
51  the subject of current research.
52 
53 SourceFiles
54  XiProfile.C
55 
56 \*---------------------------------------------------------------------------*/
57 
58 #ifndef XiProfile_H
59 #define XiProfile_H
60 
61 #include "volFields.H"
62 #include "runTimeSelectionTables.H"
63 
64 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
65 
66 namespace Foam
67 {
68 
69 /*---------------------------------------------------------------------------*\
70  Class XiProfile Declaration
71 \*---------------------------------------------------------------------------*/
72 
73 class XiProfile
74 {
75 
76 protected:
77 
78  // Protected data
79 
80  const volScalarField& b_;
81 
82 
83  // Protected Member Functions
84 
85  //- Update coefficients from given dictionary
86  virtual bool readCoeffs(const dictionary& dict) = 0;
87 
88 
89 public:
90 
91  //- Runtime type information
92  TypeName("XiProfile");
93 
94 
95  // Declare run-time constructor selection table
96 
98  (
99  autoPtr,
100  XiProfile,
101  dictionary,
102  (
103  const dictionary& dict,
104  const volScalarField& b
105  ),
106  (
107  dict,
108  b
109  )
110  );
111 
112 
113  // Constructors
114 
115  //- Construct from components
116  XiProfile(const volScalarField& b);
117 
118  //- Disallow default bitwise copy construction
119  XiProfile(const XiProfile&) = delete;
120 
121 
122  // Selectors
123 
124  //- Return a reference to the selected XiEq model
125  static autoPtr<XiProfile> New
126  (
127  const dictionary& XiProperties,
128  const volScalarField& b
129  );
130 
131 
132  //- Destructor
133  virtual ~XiProfile();
134 
135 
136  // Member Functions
137 
138  //- Return the flame-wrinkling profile
139  virtual tmp<volScalarField> profile() const = 0;
140 
141  //- Update properties from the given XiProperties dictionary
142  bool read(const dictionary& XiProperties);
143 
144 
145  // Member Operators
146 
147  //- Disallow default bitwise assignment
148  void operator=(const XiProfile&) = delete;
149 };
150 
151 
152 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153 
154 } // End namespace Foam
155 
156 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157 
158 #endif
159 
160 // ************************************************************************* //
Generic GeometricField class.
Base class for flame wrinkling profiles.
Definition: XiProfile.H:73
const volScalarField & b_
Definition: XiProfile.H:79
virtual tmp< volScalarField > profile() const =0
Return the flame-wrinkling profile.
TypeName("XiProfile")
Runtime type information.
virtual ~XiProfile()
Destructor.
Definition: XiProfile.C:55
void operator=(const XiProfile &)=delete
Disallow default bitwise assignment.
static autoPtr< XiProfile > New(const dictionary &XiProperties, const volScalarField &b)
Return a reference to the selected XiEq model.
Definition: XiProfileNew.C:31
XiProfile(const volScalarField &b)
Construct from components.
Definition: XiProfile.C:47
bool read(const dictionary &XiProperties)
Update properties from the given XiProperties dictionary.
Definition: XiProfile.C:61
declareRunTimeSelectionTable(autoPtr, XiProfile, dictionary,(const dictionary &dict, const volScalarField &b),(dict, b))
virtual bool readCoeffs(const dictionary &dict)=0
Update coefficients from given dictionary.
Definition: XiProfile.C:39
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Definition: dictionary.H:162
A class for managing temporary objects.
Definition: tmp.H:55
volScalarField & b
Definition: createFields.H:27
Namespace for OpenFOAM.
Macros to ease declaration of run-time selection tables.
dictionary dict