curvatureSeparation.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 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::regionModels::areaSurfaceFilmModels::curvatureSeparation
29 
30 Description
31  Curvature film separation model
32 
33  Assesses film curvature via the mesh geometry and calculates a force
34  balance of the form:
35 
36  F_sum = F_inertial + F_body + F_surface
37 
38  If F_sum < 0, the film separates. Similarly, if F_sum > 0 the film will
39  remain attached.
40 
41  Based on description given by
42  Owen and D. J. Ryley. The flow of thin liquid films around corners.
43  International Journal of Multiphase Flow, 11(1):51-62, 1985.
44 
45 SourceFiles
46  curvatureSeparation.C
47 
48 \*---------------------------------------------------------------------------*/
49 
50 #ifndef curvatureSeparation_H
51 #define curvatureSeparation_H
52 
53 #include "injectionModel.H"
54 #include "faCFD.H"
55 
56 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
57 
58 namespace Foam
59 {
60 namespace regionModels
61 {
62 namespace areaSurfaceFilmModels
63 {
64 
65 /*---------------------------------------------------------------------------*\
66  Class curvatureSeparation Declaration
67 \*---------------------------------------------------------------------------*/
68 
70 :
71  public injectionModel
72 {
73  // Private Member Functions
74 
75  //- No copy construct
77 
78  //- No copy assignment
79  void operator=(const curvatureSeparation&) = delete;
80 
81 
82 protected:
83 
84  // Protected Data
85 
86  //- Gradient of surface normals
88 
89  //- Minimum gravity driven film thickness (non-dimensionalised delta/R1)
90  scalar deltaByR1Min_;
91 
92  //- List of radii for patches - if patch not defined, radius
93  //- calculated based on mesh geometry
94  scalar definedPatchRadii_;
95 
96  //- Magnitude of gravity vector
97  scalar magG_;
98 
99  //- Direction of gravity vector
100  vector gHat_;
101 
102  //- Threshold force for separation
103  scalar fThreshold_;
105  //- Minimum inv R1 for separation
106  scalar minInvR1_;
107 
108 
109  // Protected Member Functions
110 
111  //- Calculate local (inverse) radius of curvature
113  (
116  ) const;
117 
118  //- Calculate the cosine of the angle between gravity vector and
119  //- cell out flow direction
121 
122 
123 public:
124 
125  //- Runtime type information
126  TypeName("curvatureSeparation");
127 
128 
129  // Constructors
130 
131  //- Construct from surface film model
133  (
135  const dictionary& dict
136  );
137 
138 
139  //- Destructor
140  virtual ~curvatureSeparation() = default;
141 
142 
143  // Member Functions
144 
145  // Evolution
146 
147  //- Correct
148  virtual void correct
149  (
150  scalarField& availableMass,
151  scalarField& massToInject,
152  scalarField& diameterToInject
153  );
154 };
155 
156 
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158 
159 } // End namespace areaSurfaceFilmModels
160 } // End namespace regionModels
161 } // End namespace Foam
162 
163 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
164 
165 #endif
166 
167 // ************************************************************************* //
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
scalar deltaByR1Min_
Minimum gravity driven film thickness (non-dimensionalised delta/R1)
scalar definedPatchRadii_
List of radii for patches - if patch not defined, radius calculated based on mesh geometry...
const dictionary & dict() const
Return const access to the cloud dictionary.
Definition: subModelBase.C:104
Base class for film injection models, handling mass transfer from the film.
areaTensorField gradNHat_
Gradient of surface normals.
tmp< scalarField > calcCosAngle(const edgeScalarField &phi) const
Calculate the cosine of the angle between gravity vector and cell out flow direction.
tmp< areaScalarField > calcInvR1(const areaVectorField &U, const scalarField &calcCosAngle) const
Calculate local (inverse) radius of curvature.
TypeName("curvatureSeparation")
Runtime type information.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
U
Definition: pEqn.H:72
A class for managing temporary objects.
Definition: HashPtrTable.H:50
Namespace for OpenFOAM.
const liquidFilmBase & film() const
Return const access to the film surface film model.