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  (
201  label modelVariable,
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 // ************************************************************************* //
Foam::phasePair
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Definition: phasePair.H:53
Foam::InterfaceCompositionModel
Base class for interface composition models, templated on the two thermodynamic models either side of...
Definition: InterfaceCompositionModel.H:58
Foam::meltingEvaporationModels::kineticGasEvaporation::KSu
virtual tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
Definition: kineticGasEvaporation.C:297
Foam::meltingEvaporationModels::kineticGasEvaporation
Considering the Hertz Knudsen formula, which gives the evaporation-condensation flux based on the kin...
Definition: kineticGasEvaporation.H:205
Foam::meltingEvaporationModels::kineticGasEvaporation::Tactivate
virtual const dimensionedScalar & Tactivate() const noexcept
Return Tactivate.
Definition: kineticGasEvaporation.H:282
Foam::meltingEvaporationModels::kineticGasEvaporation::TypeName
TypeName("kineticGasEvaporation")
Runtime type information.
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::meltingEvaporationModels::kineticGasEvaporation::kineticGasEvaporation
kineticGasEvaporation(const dictionary &dict, const phasePair &pair)
Construct from components.
Definition: kineticGasEvaporation.C:116
Foam::interfaceCompositionModel::pair
const phasePair & pair() const
The phase pair.
Definition: interfaceCompositionModel.C:122
Foam::meltingEvaporationModels::kineticGasEvaporation::includeDivU
virtual bool includeDivU() const noexcept
Definition: kineticGasEvaporation.H:289
Foam::meltingEvaporationModels::kineticGasEvaporation::~kineticGasEvaporation
virtual ~kineticGasEvaporation()=default
Destructor.
kineticGasEvaporation.C
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:42
field
rDeltaTY field()
Foam::volScalarField
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:57
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam::dimensioned< scalar >
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::meltingEvaporationModels::kineticGasEvaporation::KSp
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
Definition: kineticGasEvaporation.C:269
Foam::interfaceCompositionModel::modelVariable
modelVariable
Enumeration for variable based mass transfer models.
Definition: interfaceCompositionModel.H:66
Foam::interfaceCompositionModel::T
Definition: interfaceCompositionModel.H:68
Foam::meltingEvaporationModels::kineticGasEvaporation::Kexp
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
Definition: kineticGasEvaporation.C:193
Foam::GeometricField< scalar, fvPatchField, volMesh >