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 "Random.H"
90 
91 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
92 
93 namespace Foam
94 {
95 
96 // Forward Declarations
97 template<class Type> class Function1;
98 class distributionModel;
99 
100 namespace regionModels
101 {
102 namespace areaSurfaceFilmModels
103 {
104 
105 /*---------------------------------------------------------------------------*\
106  Class dynamicContactAngleForce Declaration
107 \*---------------------------------------------------------------------------*/
108 
109 class dynamicContactAngleForce
110 :
111  public contactAngleForce
112 {
113  // Private Data
114 
115  //- Contact angle as a function of film speed
116  autoPtr<Function1<scalar>> U_vs_thetaPtr_;
117 
118  //- Contact angle as a function of film temperature
119  autoPtr<Function1<scalar>> T_vs_thetaPtr_;
120 
121  //- Random number generator
122  Random rndGen_;
123 
124  //- Parcel size PDF model
125  const autoPtr<distributionModel> distribution_;
126 
127 
128  // Private Member Functions
129 
130  //- No copy construct
131  dynamicContactAngleForce(const dynamicContactAngleForce&) = delete;
132 
133  //- No copy assignment
134  void operator=(const dynamicContactAngleForce&) = delete;
135 
136 
137 protected:
139  //- Return the contact angle field
140  virtual tmp<areaScalarField> theta() const;
141 
142 
143 public:
144 
145  //- Runtime type information
146  TypeName("dynamicContactAngle");
147 
148 
149  // Constructors
150 
151  //- Construct from surface film model
153  (
155  const dictionary& dict
156  );
157 
158 
159  //- Destructor
160  virtual ~dynamicContactAngleForce() = default;
161 };
162 
163 
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165 
166 } // End namespace areaSurfaceFilmModels
167 } // End namespace regionModels
168 } // End namespace Foam
169 
170 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171 
172 #endif
173 
174 // ************************************************************************* //
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.