Loading...
Searching...
No Matches
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-------------------------------------------------------------------------------
10License
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
26Class
27 Foam::regionModels::areaSurfaceFilmModels::contactAngleForce
28
29Description
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
79Usage
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
104SourceFiles
105 contactAngleForce.C
106
107\*---------------------------------------------------------------------------*/
108
109#ifndef areaSurfaceFilmModels_contactAngleForce_H
110#define areaSurfaceFilmModels_contactAngleForce_H
111
112#include "force.H"
113
114// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
115
116namespace Foam
117{
118namespace regionModels
119{
120namespace areaSurfaceFilmModels
121{
122
123/*---------------------------------------------------------------------------*\
124 Class contactAngleForce Declaration
125\*---------------------------------------------------------------------------*/
126
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
149protected:
150
151 //- Return the contact angle field
152 virtual tmp<areaScalarField> theta() const = 0;
153
154
155public:
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// ************************************************************************* //
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Base-class for film contact angle force models.
TypeName("contactAngle")
Runtime type information.
virtual tmp< areaScalarField > theta() const =0
Return the contact angle field.
const liquidFilmBase & film() const
Return const access to the film surface film model.
Base class for film (stress-based) force models.
Definition force.H:55
const dictionary & dict() const
Return const access to the cloud dictionary.
A class for managing temporary objects.
Definition tmp.H:75
A class for handling words, derived from Foam::string.
Definition word.H:66
U
Definition pEqn.H:72
thermo correct()
Namespace for OpenFOAM.
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
GeometricField< vector, faPatchField, areaMesh > areaVectorField
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68