curvatureSeparation.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-2023 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::filmEjectionModels::curvatureSeparation
26 
27 Description
28  Curvature induced separation film to cloud ejection transfer model
29 
30  Assesses film curvature via the mesh geometry and calculates a force
31  balance of the form:
32 
33  F_sum = F_inertial + F_body + F_surface_tension
34 
35  If F_sum < 0, the film separates and is transferred to the cloud
36  if F_sum >= 0 the film remains attached.
37 
38  Reference:
39  \verbatim
40  Owen, I., & Ryley, D. J. (1985).
41  The flow of thin liquid films around corners.
42  International journal of multiphase flow, 11(1), 51-62.
43  \endverbatim
44 
45 Usage
46  Example usage:
47  \verbatim
48  filmCloudTransfer
49  {
50  type filmCloudTransfer;
51 
52  ejection
53  {
54  model curvatureSeparation;
55 
56  deltaStable 5e-4;
57  }
58  }
59  \endverbatim
60 
61 SourceFiles
62  curvatureSeparation.C
63 
64 \*---------------------------------------------------------------------------*/
65 
66 #ifndef curvatureSeparation_H
67 #define curvatureSeparation_H
68 
69 #include "ejectionModel.H"
70 
71 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72 
73 namespace Foam
74 {
75 namespace filmEjectionModels
76 {
77 
78 /*---------------------------------------------------------------------------*\
79  Class curvatureSeparation Declaration
80 \*---------------------------------------------------------------------------*/
81 
83 :
84  public ejectionModel
85 {
86  // Private Member Data
87 
88  //- Gradient of film wall normals
89  tensorField gradNHat_;
90 
91  //- Minimum gravity driven film thickness (non-dimensionalised delta/R1)
92  scalar deltaByR1Min_;
93 
94  //- Stable film thickness - drips only formed if thickness
95  // exceeds this threshold value
96  scalar deltaStable_;
97 
98  //- List of radii for patches
99  // if patch not listed the radius is calculated from the face normals
100  List<Tuple2<label, scalar>> patchRadii_;
101 
102 
103  // Protected Member Functions
104 
105  //- Calculate local (inverse) radius of curvature
106  tmp<scalarField> calcInvR1(const volVectorField& U) const;
107 
108  //- Calculate the cosine of the angle between gravity vector and
109  // cell out flow direction
110  tmp<scalarField> calcCosAngle(const surfaceScalarField& phi) const;
111 
112 
113 public:
114 
115  //- Runtime type information
116  TypeName("curvatureSeparation");
117 
118 
119  // Constructors
120 
121  //- Construct from dictionary and film model
123  (
124  const dictionary& dict,
125  const solvers::isothermalFilm& film
126  );
127 
128  //- Disallow default bitwise copy construction
129  curvatureSeparation(const curvatureSeparation&) = delete;
130 
131 
132  //- Destructor
133  virtual ~curvatureSeparation();
134 
135 
136  // Member Functions
137 
138  //- Correct
139  virtual void correct();
140 
141 
142  // Mesh changes
143 
144  //- Update topology using the given map
145  virtual void topoChange(const polyTopoChangeMap&);
146 
147  //- Update from another mesh using the given map
148  virtual void mapMesh(const polyMeshMap&);
149 
150  //- Redistribute or update using the given distribution map
151  virtual void distribute(const polyDistributionMap&);
152 
153  //- Update for mesh motion
154  virtual bool movePoints();
155 
156 
157  // Member Operators
158 
159  //- Disallow default bitwise assignment
160  void operator=(const curvatureSeparation&) = delete;
161 };
162 
163 
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165 
166 } // End namespace filmEjectionModels
167 } // End namespace Foam
168 
169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 
171 #endif
172 
173 // ************************************************************************* //
Generic GeometricField class.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: List.H:91
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:160
Curvature induced separation film to cloud ejection transfer model.
virtual bool movePoints()
Update for mesh motion.
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
curvatureSeparation(const dictionary &dict, const solvers::isothermalFilm &film)
Construct from dictionary and film model.
void operator=(const curvatureSeparation &)=delete
Disallow default bitwise assignment.
TypeName("curvatureSeparation")
Runtime type information.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
Class containing mesh-to-mesh mapping information.
Definition: polyMeshMap.H:51
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Solver module for flow of compressible isothermal liquid films.
A class for managing temporary objects.
Definition: tmp.H:55
U
Definition: pEqn.H:72
Namespace for OpenFOAM.
dictionary dict