contactAngleForce.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) 2020-2022 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
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 
26 Class
27  Foam::regionModels::areaSurfaceFilmModels::contactAngleForce
28 
29 Description
30  Base-class for film contact angle force models.
31 
32  The effect of the contact angle force can be ignored over a specified
33  distance from patches.
34 
35  The contact-angle force is implemented as follows:
36  \f[
37  \vec{f}_\theta =
38  \beta \frac{\sigma (1 - cos(\theta))}{\Delta_{cl}} \vec{n}_{cl}
39  \frac{1}{\rho_f|\vec{S}_f|}
40  - \vec{f}_{cl}
41  \f]
42 
43  with if \f$ h > h_{crit} \f$:
44 
45  \f[
46  \vec{f}_{cl} = \nu_f \frac{\vec{U}_f}{h_{crit}}
47  \f]
48 
49  where
50  \vartable
51  \vec{f}_\theta | Contact-angle force [N/m^2/rho]
52  \beta | Empirical constant [-]
53  \sigma | Liquid-air interfacial surface tension [kg/s^2]
54  \theta | Contact angle [rad]
55  \Delta_{cl} | Inverse width in direction normal to contact line [1/m]
56  \vec{n}_{cl} | Direction normal to contact line [-]
57  \rho_f | Film density [kg/m^3]
58  \vec{S}_f | Face-area vector [m^2]
59  \vec{f}_{cl} | Contact-line movement force [N/m^2/rho]
60  \nu_f | Film kinematic viscosity [m^2/s]
61  \vec{U}_f | Film velocity [m/s]
62  h_{crit} | Critical film height [m]
63  \endvartable
64 
65  Reference:
66  \verbatim
67  Governing equations (tag:MHDX):
68  Meredith, K. V., Heather, A., De Vries, J., & Xin, Y. (2011).
69  A numerical model for partially-wetted flow of thin liquid films.
70  Computational Methods in Multiphase Flow VI, 70, 239.
71 
72  Contact line movement (tag:NDPC):
73  Novák, M., Devaradja, R., Papper, J., & Černý, M. (2020).
74  Efficient CFD methods for assessment of water management.
75  In 20. Internationales Stuttgarter Symposium (pp. 151-170).
76  Springer Vieweg, Wiesbaden.
77  \endverbatim
78 
79 Usage
80  Minimal example:
81  \verbatim
82  {
83  // Mandatory entries
84  Ccf <scalar>;
85 
86  // Optional entries
87  hCrit <scalar>;
88 
89  // Inherited entries
90  ...
91  }
92  \endverbatim
93 
94  where the entries mean:
95  \table
96  Property | Description | Type | Reqd | Deflt
97  Ccf | Empirical coefficient | scalar | yes | -
98  hCrit | Critical film height [m] | scalar | no | GREAT
99  \endtable
100 
101  The inherited entries are elaborated in:
102  - \link force.H \endlink
103 
104 SourceFiles
105  contactAngleForce.C
106 
107 \*---------------------------------------------------------------------------*/
108 
109 #ifndef areaSurfaceFilmModels_contactAngleForce_H
110 #define areaSurfaceFilmModels_contactAngleForce_H
111 
112 #include "force.H"
113 
114 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
115 
116 namespace Foam
117 {
118 namespace regionModels
119 {
120 namespace areaSurfaceFilmModels
121 {
122 
123 /*---------------------------------------------------------------------------*\
124  Class contactAngleForce Declaration
125 \*---------------------------------------------------------------------------*/
126 
127 class contactAngleForce
128 :
129  public force
130 {
131  // Private Data
132 
133  //- Coefficient applied to the contact angle force
134  scalar Ccf_;
135 
136  //- Critical film thickness [m]
137  scalar hCrit_;
138 
139 
140  // Private Member Functions
141 
142  //- No copy construct
143  contactAngleForce(const contactAngleForce&) = delete;
144 
145  //- No copy assignment
146  void operator=(const contactAngleForce&) = delete;
147 
148 
149 protected:
150 
151  //- Return the contact angle field
152  virtual tmp<areaScalarField> theta() const = 0;
153 
154 
155 public:
156 
157  //- Runtime type information
158  TypeName("contactAngle");
159 
160 
161  // Constructors
162 
163  //- Construct from surface film model
164  contactAngleForce
165  (
166  const word& typeName,
167  liquidFilmBase& film,
168  const dictionary& dict
169  );
170 
171 
172  //- Destructor
173  virtual ~contactAngleForce() = default;
174 
175 
176  // Member Functions
177 
178  //- Correct
179  virtual tmp<faVectorMatrix> correct(areaVectorField& U);
180 };
181 
182 
183 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 
185 } // End namespace areaSurfaceFilmModels
186 } // End namespace regionModels
187 } // End namespace Foam
189 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
190 
191 #endif
192 
193 // ************************************************************************* //
virtual tmp< areaScalarField > theta() const =0
Return the contact angle field.
TypeName("contactAngle")
Runtime type information.
const dictionary & dict() const
Return const access to the cloud dictionary.
Definition: subModelBase.C:104
virtual tmp< faVectorMatrix > correct(areaVectorField &U)
Correct.
U
Definition: pEqn.H:72
GeometricField< vector, faPatchField, areaMesh > areaVectorField
Definition: areaFieldsFwd.H:81
Namespace for OpenFOAM.
const liquidFilmBase & film() const
Return const access to the film surface film model.