Loading...
Searching...
No Matches
FriedrichModel.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2024 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::filmSeparationModels::FriedrichModel
28
29Description
30 Computes film-separation properties from sharp edges for full separation
31 (Friedrich et al., 2008) and partial separation (Zhang et al., 2018).
32
33 The governing equations for full separation (Friedrich et al., 2008):
34
35 \f[
36 F_{ratio} =
37 \frac{\rho \, |\vec{u}|^2 \, h \, sin(\theta)}
38 {\sigma (1 + sin(\theta)) + \rho \, \mathbf{g}\, h\,L_b cos(\theta)}
39 \f]
40
41 with:
42
43 \f[
44 L_b = 0.0388 h^{0.5} \mathrm{Re}^{0.6} \mathrm{We}^{-0.5}
45 \f]
46
47 \f[
48 \mathrm{Re} = \frac{h \, |\vec{u}| \, \rho}{\mu}
49 \f]
50
51 \f[
52 \mathrm{We} = \frac{h \, \rho_p (\vec{u}_p - \vec{u})^2}{2 \sigma}
53 \f]
54
55 where:
56
57 \vartable
58 F_{ratio} | Force ratio
59 h | Film thickness
60 \rho | Film density
61 \rho_p | Primary-phase (gas) density
62 \sigma | Film surface tension
63 \mu | Film dynamic viscosity
64 \mathbf{u} | Film velocity
65 \mathbf{g} | Gravitational acceleration
66 \theta | Sharp-corner angle
67 L_b | Characteristic breakup length
68 \endvartable
69
70 The onset of film separation is triggered and the film is assumed
71 fully separated when \f$F_{ratio}>1\f$; otherwise, it remains attached.
72
73
74 The governing equations for partial separation (Zhang et al., 2018):
75
76 \f[
77 m_{ratio} = C_0 + C_1 \, exp\left(-\frac{F_{ratio}}{C_2}\right)
78 \f]
79
80 where:
81
82 \vartable
83 m_{ratio} | Mass fraction of separated film mass
84 C_0 | Empirical constant (0.882)
85 C_1 | Empirical constant (-1.908)
86 C_2 | Empirical constant (1.264)
87 \endvartable
88
89 With the above model modification, the film separation begins when
90 \f$F_{ratio}>1\f$; however, only the portion with \f$m_{ratio}\f$
91 separates while the rest stays attached.
92
93
94 Reference:
95 \verbatim
96 Governing equations for the full film-separation model (tag:FLW):
97 Friedrich, M. A., Lan, H., Wegener, J. L.,
98 Drallmeier, J. A., & Armaly, B. F. (2008).
99 A separation criterion with experimental
100 validation for shear-driven films in separated flows.
101 J. Fluids Eng. May 2008, 130(5): 051301.
102 DOI:10.1115/1.2907405
103
104 Governing equations for the partial film-separation model (tag:ZJD):
105 Zhang, Y., Jia, M., Duan, H., Wang, P.,
106 Wang, J., Liu, H., & Xie, M. (2018).
107 Numerical and experimental study of spray impingement and liquid
108 film separation during the spray/wall interaction at expanding corners.
109 International Journal of Multiphase Flow, 107, 67-81.
110 DOI:10.1016/j.ijmultiphaseflow.2018.05.016
111 \endverbatim
112
113Usage
114 Minimal example in boundary-condition files:
115 \verbatim
116 filmSeparationCoeffs
117 {
118 // Mandatory entries
119 model Friedrich;
120 rhop <scalar>;
121
122 // Optional entries
123 separationType <word>;
124 }
125 \endverbatim
126
127 where the entries mean:
128 \table
129 Property | Description | Type | Reqd | Deflt
130 model | Model name: Friedrich | word | yes | -
131 rhop | Primary-phase density | scalar | yes | -
132 separationType | Film separation type | word | no | full
133 \endtable
134
135 Options for the \c separationType entry:
136 \verbatim
137 full | Full film separation (Friedrich et al., 2008)
138 partial | Partial film separation (Zhang et al., 2018)
139 \endverbatim
140
141SourceFiles
142 FriedrichModel.C
143
144\*---------------------------------------------------------------------------*/
145
146#ifndef Foam_filmSeparationModels_FriedrichModel_H
147#define Foam_filmSeparationModels_FriedrichModel_H
148
149#include "filmSeparationModel.H"
150
151// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152
153namespace Foam
154{
155namespace filmSeparationModels
156{
157
158/*---------------------------------------------------------------------------*\
159 Class FriedrichModel Declaration
160\*---------------------------------------------------------------------------*/
161
162class FriedrichModel
163:
164 public filmSeparationModel
165{
166 // Private Enumerations
167
168 //- Options for the film separation type
169 enum separationType : char
170 {
171 FULL = 0,
172 PARTIAL
173 };
174
175 //- Names for separationType
176 static const Enum<separationType> separationTypeNames;
177
178
179 // Private Data
180
181 //- Film separation type
182 enum separationType separation_;
183
184 //- Approximate uniform mass density of primary phase
185 scalar rhop_;
186
187 //- Magnitude of the gravitational acceleration
188 scalar magG_;
189
190 //- Empirical constant for the partial separation model
191 scalar C0_;
192
193 //- Empirical constant for the partial separation model
194 scalar C1_;
195
196 //- Empirical constant for the partial separation model
197 scalar C2_;
198
199 //- List of flags identifying sharp-corner edges where separation
200 //- may occur
201 bitSet cornerEdges_;
202
203 //- Corner angles of sharp-corner edges where separation may occur
204 scalarList cornerAngles_;
205
206
207 // Private Member Functions
208
209 //- Return Boolean list of identified sharp-corner edges
210 bitSet calcCornerEdges() const;
211
212 //- Return true if the given edge is identified as sharp
213 bool isCornerEdgeSharp
214 (
215 const vector& faceCentreO,
216 const vector& faceCentreN,
217 const vector& faceNormalO,
218 const vector& faceNormalN
219 ) const;
220
221 //- Return the list of sharp-corner angles for each edge
222 scalarList calcCornerAngles() const;
223
224 //- Return the sharp-corner angle for a given edge
225 scalar calcCornerAngle
226 (
227 const vector& faceNormalO,
228 const vector& faceNormalN
229 ) const;
230
231 //- Return Boolean list of identified separation faces
232 bitSet calcSeparationFaces() const;
233
234 //- Return true if the given face is identified as a separation face
235 void isSeparationFace
236 (
237 bitSet& separationFaces,
238 const scalar phiEdge,
239 const label faceO,
240 const label faceN = -1
241 ) const;
242
243 //- Return the list of sharp-corner angles for each face
244 scalarList calcSeparationAngles(const bitSet& separationFaces) const;
245
246 //- Return the film-separation force ratio per face
247 tmp<scalarField> Fratio() const;
248
249
250public:
251
252 //- Runtime type information
253 TypeName("Friedrich");
254
255
256 // Constructors
257
258 //- Construct from the base film model and dictionary
260 (
262 const dictionary& dict
263 );
264
265
266 // Destructor
267 virtual ~FriedrichModel() = default;
268
269
270 // Member Functions
271
272 // Evaluation
273
274 //- Calculate the mass ratio of film separation
275 virtual tmp<scalarField> separatedMassRatio() const;
276};
277
278
279// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
280
281} // End namespace filmSeparationModels
282} // End namespace Foam
283
284// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
285
286#endif
287
288// ************************************************************************* //
Enum is a wrapper around a list of names/values that represent particular enumeration (or int) values...
Definition Enum.H:57
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
Definition bitSet.H:61
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
const regionModels::areaSurfaceFilmModels::liquidFilmBase & film() const
Return const access to the film properties.
filmSeparationModel(const filmSeparationModel &)=delete
No copy construct.
Computes film-separation properties from sharp edges for full separation (Friedrich et al....
virtual tmp< scalarField > separatedMassRatio() const
Calculate the mass ratio of film separation.
FriedrichModel(const regionModels::areaSurfaceFilmModels::liquidFilmBase &film, const dictionary &dict)
Construct from the base film model and dictionary.
TypeName("Friedrich")
Runtime type information.
A class for managing temporary objects.
Definition tmp.H:75
A namespace for various filmSeparation model implementations.
Namespace for OpenFOAM.
Vector< scalar > vector
Definition vector.H:57
List< scalar > scalarList
List of scalar.
Definition scalarList.H:32
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68