dynamicContactAngleForce.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::dynamicContactAngleForce
28 
29 Description
30  Film-speed or film-temperature dependent
31  contact-angle force with a stochastic perturbation.
32 
33  The contact angle in degrees is specified as a \c Foam::Function1 type,
34  to enable the use of, e.g. \c constant, \c polynomial, \c table values
35  and the stochastic perturbation obtained from a
36  \c Foam::distributionModels::distributionModel.
37 
38 Usage
39  Minimal example:
40  \verbatim
41  forces
42  (
43  dynamicContactAngle
44  );
45 
46  dynamicContactAngleForceCoeffs
47  {
48  // Mandatory entries
49  distribution <subDict>;
50 
51  // Conditional entries
52 
53  // Option-1
54  Utheta <Function1<scalar>>;
55 
56  // Option-2
57  Ttheta <Function1<scalar>>;
58 
59  // Inherited entries
60  ...
61  }
62  \endverbatim
63 
64  where the entries mean:
65  \table
66  Property | Description | Type | Reqd | Deflt
67  dynamicContactAngle | Type name | word | yes | -
68  Utheta | Contact angle as a function of film speed <!--
69  --> | <Function1<scalar> | choice | -
70  Ttheta | Contact angle as a function of film temperature <!--
71  --> | <Function1<scalar> | choice | -
72  distribution | Probability distribution model | subDict | yes | -
73  \endtable
74 
75  The inherited entries are elaborated in:
76  - \link contactAngleForce.H \endlink
77  - \link Function1.H \endlink
78  - \link distributionModel.H \endlink
79 
80 SourceFiles
81  dynamicContactAngleForce.C
82 
83 \*---------------------------------------------------------------------------*/
84 
85 #ifndef areaSurfaceFilmModels_dynamicContactAngleForce_H
86 #define areaSurfaceFilmModels_dynamicContactAngleForce_H
87 
88 #include "contactAngleForce.H"
89 #include "Function1.H"
90 #include "distributionModel.H"
91 #include "Random.H"
92 
93 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
94 
95 namespace Foam
96 {
97 namespace regionModels
98 {
99 namespace areaSurfaceFilmModels
100 {
101 
102 /*---------------------------------------------------------------------------*\
103  Class dynamicContactAngleForce Declaration
104 \*---------------------------------------------------------------------------*/
105 
106 class dynamicContactAngleForce
107 :
108  public contactAngleForce
109 {
110  // Private Data
111 
112  //- Contact angle as a function of film speed
113  autoPtr<Function1<scalar>> U_vs_thetaPtr_;
114 
115  //- Contact angle as a function of film temperature
116  autoPtr<Function1<scalar>> T_vs_thetaPtr_;
117 
118  //- Random number generator
119  Random rndGen_;
120 
121  //- Parcel size PDF model
122  const autoPtr<distributionModel> distribution_;
123 
124 
125  // Private Member Functions
126 
127  //- No copy construct
128  dynamicContactAngleForce(const dynamicContactAngleForce&) = delete;
129 
130  //- No copy assignment
131  void operator=(const dynamicContactAngleForce&) = delete;
132 
133 
134 protected:
136  //- Return the contact angle field
137  virtual tmp<areaScalarField> theta() const;
138 
139 
140 public:
141 
142  //- Runtime type information
143  TypeName("dynamicContactAngle");
144 
145 
146  // Constructors
147 
148  //- Construct from surface film model
150  (
152  const dictionary& dict
153  );
154 
155 
156  //- Destructor
157  virtual ~dynamicContactAngleForce() = default;
158 };
159 
160 
161 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
162 
163 } // End namespace areaSurfaceFilmModels
164 } // End namespace regionModels
165 } // End namespace Foam
166 
167 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
168 
169 #endif
170 
171 // ************************************************************************* //
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
const dictionary & dict() const
Return const access to the cloud dictionary.
Definition: subModelBase.C:104
TypeName("dynamicContactAngle")
Runtime type information.
Film-speed or film-temperature dependent contact-angle force with a stochastic perturbation.
virtual tmp< areaScalarField > theta() const
Return the contact angle field.
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.