OwenRyleyModel.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) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2021-2024 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::filmSeparationModels::OwenRyleyModel
29 
30 Description
31  Computes film-separation properties from round edges for full separation
32  (Owen & Ryley, 1983). The model assesses the film curvature based on the
33  mesh geometry and flow field, and then calculates a force balance of the
34  following form:
35 
36  \f[
37  F_{net} = F_{inertial} + F_{body} + F_{surface}
38  \f]
39 
40  with:
41 
42  \f[
43  F_{inertial} = -\frac{4}{3} \frac{h \, \rho \, |\mathbf{u}|^2}{R_1}
44  \f]
45 
46  \f[
47  F_{body} =
48  -\frac{\rho |\mathbf{g}| (R_1^2 - R_2^2) cos(\theta)}{2 \, R_1}
49  \f]
50 
51  \f[
52  F_{surface} = \frac{\sigma}{R_2}
53  \f]
54 
55  where:
56 
57  \vartable
58  F_{net} | Magnitude of net force on the film
59  F_{inertial} | Magnitude of inertial forces on the film
60  F_{body} | Magnitude of body forces on the film
61  F_{surface} | Magnitude of surface forces on the film
62  h | Film thickness
63  \rho | Film density
64  \sigma | Film surface tension
65  \mathbf{u} | Film velocity
66  \mathbf{g} | Gravitational accelaration
67  \theta | Approximate angle between gravity vector and outflow direction
68  R_1 | Radius of curvature
69  R_2 | Sum of the radius of curvature and film thickness
70  \endvartable
71 
72  The film is considered separated when \f$F_{net}<0\f$; otherwise, it
73  remains attached.
74 
75  Reference:
76  \verbatim
77  Governing equations (tag:OR):
78  Owen, I., & Ryley, D. J. (1983).
79  The flow of thin liquid films around corners.
80  International journal of multiphase flow, 11(1), 51-62.
81  DOI:10.1016/0301-9322(85)90005-9
82  \endverbatim
83 
84 Usage
85  Minimal example in boundary-condition files:
86  \verbatim
87  filmSeparationCoeffs
88  {
89  // Mandatory entries
90  model OwenRyley;
91 
92  // Optional entries
93  fThreshold <scalar>;
94  definedPatchRadii <scalar>;
95  deltaByR1Min <scalar>;
96  minInvR1 <scalar>;
97  }
98  \endverbatim
99 
100  where the entries mean:
101  \table
102  Property | Description | Type | Reqd | Deflt
103  model | Model name: OwenRyley | word | yes | -
104  fThreshold | Threshold force for separation | scalar | no | 1e-8
105  definedPatchRadii | Patch radius | scalar | no | 0
106  deltaByR1Min | Minimum gravity driven film thickness | scalar | no | 0
107  minInvR1 | Minimum inv R1 for separation | scalar | no | 5
108  \endtable
109 
110 Note
111  - The assumptions underlying the derivation of the model indicate that
112  the model is better suited for round corners than for sharp corners.
113 
114 SourceFiles
115  OwenRyleyModel.C
116 
117 \*---------------------------------------------------------------------------*/
118 
119 #ifndef Foam_filmSeparationModels_OwenRyleyModel_H
120 #define Foam_filmSeparationModels_OwenRyleyModel_H
121 
122 #include "filmSeparationModel.H"
123 
124 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
125 
126 namespace Foam
127 {
128 namespace filmSeparationModels
129 {
130 
131 /*---------------------------------------------------------------------------*\
132  Class OwenRyleyModel Declaration
133 \*---------------------------------------------------------------------------*/
134 
135 class OwenRyleyModel
136 :
137  public filmSeparationModel
138 {
139  // Private Data
140 
141  //- Threshold force for separation
142  scalar fThreshold_;
143 
144  //- Patch radius
145  scalar definedPatchRadii_;
146 
147  //- Minimum gravity driven film thickness (non-dimensionalised h/R1)
148  scalar minHbyR1_;
149 
150  //- Minimum inv R1 of film velocity for film separation
151  scalar minInvR1_;
152 
153  //- Gradient of surface normals
154  areaTensorField gradNHat_;
155 
156 
157  // Private Member Functions
158 
159  //- Calculate inverse of (local) radius of curvature of film velocity
160  tmp<areaScalarField> calcInvR1(const areaVectorField& U) const;
161 
162  //- Calculate the cosine of the angle between gravity vector and
163  //- cell-out flow direction
164  tmp<scalarField> calcCosAngle
165  (
166  const edgeScalarField& phi,
167  const scalarField& invR1
168  ) const;
169 
170  //- Calculate the magnitude of net force on the film
171  tmp<scalarField> netForce() const;
172 
173 
174 public:
175 
176  //- Runtime type information
177  TypeName("OwenRyley");
178 
179 
180  // Constructors
181 
182  //- Construct from the base film model and dictionary
184  (
186  const dictionary& dict
187  );
188 
189 
190  // Destructor
191  virtual ~OwenRyleyModel() = default;
192 
193 
194  // Member Functions
195 
196  // Access
197 
198  // Return access to minimum dimensionless gravity driven film thickness
199  scalar minHbyR1() const noexcept { return minHbyR1_; }
200 
201  // Return access to minimum inv R1 for film separation
202  scalar minInvR1() const noexcept { return minInvR1_; }
203 
204 
205  // Evaluation
206 
207  //- Calculate the mass ratio of film separation
208  virtual tmp<scalarField> separatedMassRatio() const;
209 };
210 
211 
212 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 
214 } // End namespace filmSeparationModels
215 } // End namespace Foam
216 
217 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
218 
219 #endif
220 
221 // ************************************************************************* //
dictionary dict
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
TypeName("OwenRyley")
Runtime type information.
OwenRyleyModel(const regionModels::areaSurfaceFilmModels::liquidFilmBase &film, const dictionary &dict)
Construct from the base film model and dictionary.
const direction noexcept
Definition: scalarImpl.H:255
A base class for filmSeparation models.
virtual tmp< scalarField > separatedMassRatio() const
Calculate the mass ratio of film separation.
U
Definition: pEqn.H:72
const regionModels::areaSurfaceFilmModels::liquidFilmBase & film() const
Return const access to the film properties.
A class for managing temporary objects.
Definition: HashPtrTable.H:50
Namespace for OpenFOAM.