3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
dimensionlessnumbers.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*****************************************************************************
4 * See the file COPYING for full copying permissions. *
5 * *
6 * This program is free software: you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation, either version 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
27#ifndef DUMUX_COMMON_DIMENSIONLESS_NUMBERS_HH
28#define DUMUX_COMMON_DIMENSIONLESS_NUMBERS_HH
29
30#include <cmath>
31#include <iostream>
32
33#include <dune/common/exceptions.hh>
34#include <dune/common/math.hh>
35
36namespace Dumux {
37
43{
45};
46
52{
54};
55
63template <class Scalar>
65{
66
67public:
88 static Scalar reynoldsNumber(const Scalar darcyMagVelocity,
89 const Scalar charcteristicLength,
90 const Scalar kinematicViscosity)
91 {
92 return darcyMagVelocity * charcteristicLength / kinematicViscosity ;
93 }
94
118 static Scalar prandtlNumber(const Scalar dynamicViscosity,
119 const Scalar heatCapacity,
120 const Scalar thermalConductivity)
121 {
122 return dynamicViscosity * heatCapacity / thermalConductivity;
123 }
124
151 static Scalar nusseltNumberForced(const Scalar reynoldsNumber,
152 const Scalar prandtlNumber,
153 const Scalar porosity,
154 NusseltFormulation formulation)
155 {
156 if (formulation == NusseltFormulation::dittusBoelter){
157 /* example: very common and simple case: flow straight circular pipe, only convection (no boiling),
158 * 10000<Re<120000, 0.7<Pr<120, far from pipe entrance, smooth surface of pipe ...
159 * Dittus, F.W and Boelter, L.M.K, Heat Transfer in Automobile Radiators of the Tubular Type,
160 * Publications in Engineering, Vol. 2, pages 443-461, 1930
161 */
162 using std::pow;
163 return 0.023 * pow(reynoldsNumber, 0.8) * pow(prandtlNumber,0.33);
164 }
165
166 else if (formulation == NusseltFormulation::WakaoKaguei){
167 /* example: flow through porous medium *single phase*, fit to many different data
168 * Wakao and Kaguei, Heat and mass Transfer in Packed Beds, Gordon and Breach Science Publishers, page 293
169 */
170 using std::pow;
171 return 2. + 1.1 * pow(prandtlNumber,(1./3.)) * pow(reynoldsNumber, 0.6);
172 }
173
174 else if (formulation == NusseltFormulation::VDI){
175 /* example: VDI Waermeatlas 10. Auflage 2006, flow in packed beds, page Gj1, see also other sources and limitations therein.
176 * valid for 0.1<Re<10000, 0.6<Pr/Sc<10000, packed beds of perfect spheres.
177 *
178 */
179 using std::sqrt;
180 using std::pow;
181 using Dune::power;
182 Scalar numerator = 0.037 * pow(reynoldsNumber,0.8) * prandtlNumber ;
183 Scalar reToMin01 = pow(reynoldsNumber,-0.1);
184 Scalar prTo23 = pow(prandtlNumber, (2./3. ) ) ; // MIND THE pts! :-( otherwise the integer exponent version is chosen
185 Scalar denominator = 1+ 2.443 * reToMin01 * (prTo23 -1.) ;
186
187 Scalar nusseltTurbular = numerator / denominator;
188 Scalar nusseltLaminar = 0.664 * sqrt(reynoldsNumber) * pow(prandtlNumber, (1./3.) );
189 Scalar nusseltSingleSphere = 2 + sqrt( power(nusseltLaminar,2) + power(nusseltTurbular,2));
190
191 Scalar funckyFactor = 1 + 1.5 * (1.-porosity); // for spheres of same size
192 Scalar nusseltNumber = funckyFactor * nusseltSingleSphere ;
193
194 return nusseltNumber;
195 }
196
197 else {
198 DUNE_THROW(Dune::NotImplemented, "wrong index");
199 }
200 }
201
202
224 static Scalar schmidtNumber(const Scalar dynamicViscosity,
225 const Scalar massDensity,
226 const Scalar diffusionCoefficient)
227 {
228 return dynamicViscosity / (massDensity * diffusionCoefficient);
229 }
230
260 static Scalar sherwoodNumber(const Scalar reynoldsNumber,
261 const Scalar schmidtNumber,
262 SherwoodFormulation formulation)
263 {
264 if (formulation == SherwoodFormulation::WakaoKaguei){
265 /* example: flow through porous medium *single phase*
266 * Wakao and Kaguei, Heat and mass Transfer in Packed Beds, Gordon and Breach Science Publishers, page 156
267 */
268 using std::cbrt;
269 using std::pow;
270 return 2. + 1.1 * cbrt(schmidtNumber) * pow(reynoldsNumber, 0.6);
271 }
272
273 else {
274 DUNE_THROW(Dune::NotImplemented, "wrong index");
275 }
276 }
277
278
294 static Scalar thermalDiffusivity(const Scalar & thermalConductivity ,
295 const Scalar & phaseDensity ,
296 const Scalar & heatCapacity)
297 {
298 return thermalConductivity / (phaseDensity * heatCapacity);
299 }
300
301};
302
303} // end namespace Dumux
304
305#endif
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition: adapt.hh:29
NusseltFormulation
A container for possible values of the property for selecting which Nusselt parametrization to choose...
Definition: dimensionlessnumbers.hh:43
SherwoodFormulation
A container for possible values of the property for selecting which Sherwood parametrization to choos...
Definition: dimensionlessnumbers.hh:52
std::string porosity() noexcept
I/O name of porosity.
Definition: name.hh:139
Collection of functions which calculate dimensionless numbers. Each number has it's own function....
Definition: dimensionlessnumbers.hh:65
static Scalar nusseltNumberForced(const Scalar reynoldsNumber, const Scalar prandtlNumber, const Scalar porosity, NusseltFormulation formulation)
Calculate the Nusselt Number [-] (Nu).
Definition: dimensionlessnumbers.hh:151
static Scalar reynoldsNumber(const Scalar darcyMagVelocity, const Scalar charcteristicLength, const Scalar kinematicViscosity)
Calculate the Reynolds Number [-] (Re).
Definition: dimensionlessnumbers.hh:88
static Scalar prandtlNumber(const Scalar dynamicViscosity, const Scalar heatCapacity, const Scalar thermalConductivity)
Calculate the Prandtl Number [-] (Pr).
Definition: dimensionlessnumbers.hh:118
static Scalar schmidtNumber(const Scalar dynamicViscosity, const Scalar massDensity, const Scalar diffusionCoefficient)
Calculate the Schmidt Number [-] (Sc).
Definition: dimensionlessnumbers.hh:224
static Scalar thermalDiffusivity(const Scalar &thermalConductivity, const Scalar &phaseDensity, const Scalar &heatCapacity)
Calculate the thermal diffusivity alpha [m^2/s].
Definition: dimensionlessnumbers.hh:294
static Scalar sherwoodNumber(const Scalar reynoldsNumber, const Scalar schmidtNumber, SherwoodFormulation formulation)
Calculate the Sherwood Number [-] (Sh).
Definition: dimensionlessnumbers.hh:260