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_;
104 
105  //- Minimum inv R1 for separation
106  scalar minInvR1_;
107 
108 
109  // Protected Member Functions
110 
111  //- Calculate local (inverse) radius of curvature
113  (
114  const areaVectorField& U,
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 // ************************************************************************* //
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::definedPatchRadii_
scalar definedPatchRadii_
Definition: curvatureSeparation.H:89
Foam::regionModels::areaSurfaceFilmModels::liquidFilmBase
Definition: liquidFilmBase.H:56
Foam::regionModels::areaSurfaceFilmModels::injectionModel::correct
void correct()
Definition: injectionModel.C:74
faCFD.H
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:57
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation
Curvature film separation model.
Definition: curvatureSeparation.H:64
Foam::regionModels::areaSurfaceFilmModels::injectionModel
Base class for film injection models, handling mass transfer from the film.
Definition: injectionModel.H:54
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::gHat_
vector gHat_
Definition: curvatureSeparation.H:95
Foam::Field
Generic templated field type.
Definition: Field.H:59
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::minInvR1_
scalar minInvR1_
Definition: curvatureSeparation.H:101
Foam::subModelBase::dict
const dictionary & dict() const
Definition: subModelBase.C:106
Foam::regionModels::areaSurfaceFilmModels::filmSubModelBase::film
const liquidFilmBase & film() const
Definition: filmSubModelBaseI.H:32
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::TypeName
TypeName("curvatureSeparation")
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:119
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::magG_
scalar magG_
Definition: curvatureSeparation.H:92
Foam
Definition: atmBoundaryLayer.C:26
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::calcCosAngle
tmp< scalarField > calcCosAngle(const edgeScalarField &phi) const
Definition: curvatureSeparation.C:88
U
U
Definition: pEqn.H:72
Foam::Vector< scalar >
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::calcInvR1
tmp< areaScalarField > calcInvR1(const areaVectorField &U, const scalarField &calcCosAngle) const
Definition: curvatureSeparation.C:50
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::gradNHat_
areaTensorField gradNHat_
Definition: curvatureSeparation.H:82
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::~curvatureSeparation
virtual ~curvatureSeparation()=default
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::fThreshold_
scalar fThreshold_
Definition: curvatureSeparation.H:98
Foam::GeometricField
Generic GeometricField class.
Definition: areaFieldsFwd.H:49
Foam::regionModels::areaSurfaceFilmModels::curvatureSeparation::deltaByR1Min_
scalar deltaByR1Min_
Definition: curvatureSeparation.H:85