kineticGasEvaporation.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) 2017-2021 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::meltingEvaporationModels::kineticGasEvaporation
28 
29 Description
30  Considering the Hertz Knudsen formula, which gives the
31  evaporation-condensation flux based on the kinetic theory for flat
32  interface:
33 
34  \f[
35  Flux = C \sqrt{\frac{M}{2 \pi R T_{activate}}}(p - p_{sat})
36  \f]
37 
38  where:
39  \vartable
40  Flux | mass flux rate [kg/s/m2]
41  M | molecular weight
42  T_{activate} | saturation temperature
43  C | accommodation coefficient
44  R | universal gas constant
45  p_{sat} | saturation pressure
46  p | vapor partial pressure
47  \endvartable
48 
49  The Clapeyron-Clausius equation relates the pressure to the temperature
50  for the saturation condition:
51 
52  \f[
53  \frac{dp}{dT} = - \frac{L}{T (\nu_v - \nu_l)}
54  \f]
55 
56  where:
57  \vartable
58  L | latent heat
59  \nu_v | inverse of the vapor density
60  \nu_l | inverse of the liquid density
61  \endvartable
62 
63 
64  Using the above relations:
65 
66  \f[
67  Flux =
68  2 \frac{C}{2 - C}
69  \sqrt{\frac{M}{2 \pi R {T_activate}^3}} L (\rho_{v})
70  (T - T_{activate})
71  \f]
72 
73  This assumes liquid and vapour are in equilibrium, then the accommodation
74  coefficient are equivalent for the interface. This relation is known as the
75  Hertz-Knudsen-Schrage.
76 
77  Based on the reference:
78  - Van P. Carey, Liquid-Vapor Phase Change Phenomena, ISBN 0-89116836,
79  1992, pp. 112-121.
80 
81 
82 Usage
83 
84  Example usage:
85  \verbatim
86  massTransferModel
87  (
88  (liquid to gas)
89  {
90  type kineticGasEvaporation;
91  species vapour.gas;
92  C 0.1;
93  isoAlpha 0.1;
94  Tactivate 373;
95  }
96  );
97  \endverbatim
98 
99  where:
100  \table
101  Property | Description | Required | Default value
102  C | Coefficient (C > 0 for evaporation, C < 0 for
103  condensation) | yes
104  includeVolChange | Volumen change | no | yes
105  isoAlpha | iso-alpha for interface | no | 0.5
106  Tactivate | Saturation temperature | yes
107  species | Specie name on the other phase | no | none
108  \endtable
109 
110 SourceFiles
111  kineticGasEvaporation.C
112 
113 \*---------------------------------------------------------------------------*/
114 
115 #ifndef meltingEvaporationModels_kineticGasEvaporation_H
116 #define meltingEvaporationModels_kineticGasEvaporation_H
117 
118 #include "InterfaceCompositionModel.H"
119 
120 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *//
121 
122 namespace Foam
123 {
124 
125 // Forward Declarations
126 class phasePair;
127 
128 namespace meltingEvaporationModels
129 {
130 
131 /*---------------------------------------------------------------------------*\
132  Class kineticGasEvaporation Declaration
133 \*---------------------------------------------------------------------------*/
134 
135 template<class Thermo, class OtherThermo>
136 class kineticGasEvaporation
137 :
138  public InterfaceCompositionModel<Thermo, OtherThermo>
139 {
140  // Private Data
141 
142  //- Evaporation coefficient
144 
145  //- Activation temperature
146  const dimensionedScalar Tactivate_;
147 
148  //- Molar weight of the vapour in the continuous phase
149  dimensionedScalar Mv_;
150 
151  //- Interface area
152  volScalarField interfaceArea_;
153 
154  //- Heat transfer coefficient
155  volScalarField htc_;
156 
157  //- Mass source
158  volScalarField mDotc_;
159 
160  //- Interface Iso-value
161  scalar isoAlpha_;
162 
163 
164  // Private Member Functions
165 
166  //- Update interface
167  void updateInterface(const volScalarField& T);
168 
169 
170 public:
171 
172  //- Runtime type information
173  TypeName("kineticGasEvaporation");
174 
175 
176  // Constructors
177 
178  //- Construct from components
180  (
181  const dictionary& dict,
182  const phasePair& pair
183  );
184 
185 
186  //- Destructor
187  virtual ~kineticGasEvaporation() = default;
188 
189 
190  // Member Functions
191 
192  //- Explicit total mass transfer coefficient
193  virtual tmp<volScalarField> Kexp
194  (
195  const volScalarField& field
196  );
197 
198  //- Implicit mass transfer coefficient
199  virtual tmp<volScalarField> KSp
200  (
202  const volScalarField& field
203  );
204 
205  //- Explicit mass transfer coefficient
206  virtual tmp<volScalarField> KSu
207  (
208  label modelVariable,
209  const volScalarField& field
210  );
211 
212  //- Return Tactivate
213  virtual const dimensionedScalar& Tactivate() const noexcept
214  {
215  return Tactivate_;
216  }
217 
218  //- Add/subtract alpha*div(U) as a source term
219  //- for alpha, substituting div(U) = mDot(1/rho1 - 1/rho2)
220  virtual bool includeDivU() const noexcept
221  {
222  return true;
223  }
224 };
225 
226 
227 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
228 
229 } // End namespace meltingEvaporationModels
230 } // End namespace Foam
231 
232 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
233 
234 #ifdef NoRepository
235 # include "kineticGasEvaporation.C"
236 #endif
237 
238 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
239 #endif
240 
241 // ************************************************************************* //
virtual const dimensionedScalar & Tactivate() const noexcept
Return Tactivate.
dictionary dict
rDeltaTY field()
modelVariable
Enumeration for variable based mass transfer models.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:81
virtual bool includeDivU() const noexcept
Add/subtract alpha*div(U) as a source term for alpha, substituting div(U) = mDot(1/rho1 - 1/rho2) ...
virtual tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
const direction noexcept
Definition: Scalar.H:258
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
const phasePair & pair() const
The phase pair.
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
virtual ~kineticGasEvaporation()=default
Destructor.
TypeName("kineticGasEvaporation")
Runtime type information.
A class for managing temporary objects.
Definition: HashPtrTable.H:50
kineticGasEvaporation(const dictionary &dict, const phasePair &pair)
Construct from components.
Namespace for OpenFOAM.