My Project
Air.hpp
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  This file is part of the Open Porous Media project (OPM).
5 
6  OPM 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 2 of the License, or
9  (at your option) any later version.
10 
11  OPM 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 OPM. If not, see <http://www.gnu.org/licenses/>.
18 
19  Consult the COPYING file in the top-level source directory of this
20  module for the precise wording of the license and the list of
21  copyright holders.
22 */
27 #ifndef OPM_AIR_HPP
28 #define OPM_AIR_HPP
29 
33 
35 
36 namespace Opm {
37 
45 template <class Scalar>
46 class Air : public Component<Scalar, Air<Scalar> >
47 {
48  typedef ::Opm::IdealGas<Scalar> IdealGas;
49 
50 public:
54  static bool liquidIsCompressible()
55  { throw std::runtime_error("Not implemented: Component::liquidIsCompressible()"); }
56 
60  static const char* name()
61  { return "Air"; }
62 
66  static bool gasIsCompressible()
67  { return true; }
68 
72  static bool gasIsIdeal()
73  { return true; }
74 
80  static Scalar molarMass()
81  { return 0.02896; /* [kg/mol] */ }
82 
86  static Scalar criticalTemperature()
87  { return 132.531 ; /* [K] */ }
88 
92  static Scalar criticalPressure()
93  { return 37.86e5; /* [Pa] */ }
94 
101  template <class Evaluation>
102  static Evaluation gasDensity(const Evaluation& temperature, const Evaluation& pressure)
103  { return IdealGas::density(Evaluation(molarMass()), temperature, pressure); }
104 
111  template <class Evaluation>
112  static Evaluation gasPressure(const Evaluation& temperature, Scalar density)
113  { return IdealGas::pressure(temperature, density/molarMass()); }
114 
136  template <class Evaluation>
137  static Evaluation gasViscosity(const Evaluation& temperature, const Evaluation& /*pressure*/)
138  {
139  Scalar Tc = criticalTemperature();
140  Scalar Vc = 84.525138; // critical specific volume [cm^3/mol]
141  Scalar omega = 0.078; // accentric factor
142  Scalar M = molarMass() * 1e3; // molar mas [g/mol]
143  Scalar dipole = 0.0; // dipole moment [debye]
144 
145  Scalar mu_r4 = 131.3 * dipole / std::sqrt(Vc * Tc);
146  mu_r4 *= mu_r4;
147  mu_r4 *= mu_r4;
148 
149  Scalar Fc = 1 - 0.2756*omega + 0.059035*mu_r4;
150  Evaluation Tstar = 1.2593 * temperature/Tc;
151  Evaluation Omega_v =
152  1.16145*pow(Tstar, -0.14874) +
153  0.52487*exp(- 0.77320*Tstar) +
154  2.16178*exp(- 2.43787*Tstar);
155  return 40.7851e-7*Fc*sqrt(M*temperature)/(std::pow(Vc, 2./3)*Omega_v);
156  }
157 
158  // simpler method, from old constrelAir.hh
159  template <class Evaluation>
160  static Evaluation simpleGasViscosity(const Evaluation& temperature, const Evaluation& /*pressure*/)
161  {
162  if(temperature < 273.15 || temperature > 660.) {
163  throw NumericalIssue("Air: Temperature "+std::to_string(scalarValue(temperature))+"K out of range");
164  }
165  return 1.496e-6*pow(temperature, 1.5)/(temperature + 120);
166  }
167 
179  template <class Evaluation>
180  static Evaluation gasEnthalpy(const Evaluation& temperature, const Evaluation& /*pressure*/)
181  {
182  return 1005.0*temperature;
183  }
184 
196  template <class Evaluation>
197  static Evaluation gasInternalEnergy(const Evaluation& temperature,
198  const Evaluation& pressure)
199  {
200  return
201  gasEnthalpy(temperature, pressure)
202  - (IdealGas::R*temperature/molarMass()); // <- pressure times specific volume of an ideal gas
203  }
204 
216  template <class Evaluation>
217  static Evaluation gasThermalConductivity(const Evaluation& /*temperature*/,
218  const Evaluation& /*pressure*/)
219  {
220  // Isobaric Properties for Nitrogen in: NIST Standard
221  // see http://webbook.nist.gov/chemistry/fluid/
222  // evaluated at p=.1 MPa, T=20°C
223  // Nitrogen: 0.025398
224  // Oxygen: 0.026105
225  // lambda_air is approximately 0.78*lambda_N2+0.22*lambda_O2
226  return 0.0255535;
227  }
228 
245  template <class Evaluation>
246  static Evaluation gasHeatCapacity(const Evaluation&,
247  const Evaluation&)
248  {
249  return 1005.0;
250  }
251 };
252 
253 } // namespace Opm
254 
255 #endif
Abstract base class of a pure chemical species.
Provides the opm-material specific exception classes.
Relations valid for an ideal gas.
A traits class which provides basic mathematical functions for arbitrary scalar floating point values...
A simple class implementing the fluid properties of air.
Definition: Air.hpp:47
static Evaluation gasThermalConductivity(const Evaluation &, const Evaluation &)
Specific heat conductivity of steam .
Definition: Air.hpp:217
static Evaluation gasHeatCapacity(const Evaluation &, const Evaluation &)
Specific isobaric heat capacity of pure air.
Definition: Air.hpp:246
static Scalar criticalPressure()
Returns the critical pressure of .
Definition: Air.hpp:92
static Evaluation gasDensity(const Evaluation &temperature, const Evaluation &pressure)
The density of at a given pressure and temperature [kg/m^3].
Definition: Air.hpp:102
static Evaluation gasPressure(const Evaluation &temperature, Scalar density)
The pressure of gaseous at a given density and temperature .
Definition: Air.hpp:112
static Scalar molarMass()
The molar mass in of .
Definition: Air.hpp:80
static Evaluation gasInternalEnergy(const Evaluation &temperature, const Evaluation &pressure)
Specific internal energy of .
Definition: Air.hpp:197
static bool gasIsCompressible()
Returns true iff the gas phase is assumed to be compressible.
Definition: Air.hpp:66
static bool gasIsIdeal()
Returns true iff the gas phase is assumed to be ideal.
Definition: Air.hpp:72
static bool liquidIsCompressible()
Returns true iff the liquid phase is assumed to be compressible.
Definition: Air.hpp:54
static const char * name()
A human readable name for the .
Definition: Air.hpp:60
static Evaluation gasEnthalpy(const Evaluation &temperature, const Evaluation &)
Specific enthalpy of liquid water with 273.15 K as basis.
Definition: Air.hpp:180
static Scalar criticalTemperature()
Returns the critical temperature of .
Definition: Air.hpp:86
static Evaluation gasViscosity(const Evaluation &temperature, const Evaluation &)
The dynamic viscosity of at a given pressure and temperature.
Definition: Air.hpp:137
Abstract base class of a pure chemical species.
Definition: Component.hpp:42
Relations valid for an ideal gas.
Definition: IdealGas.hpp:38
static const Scalar R
The ideal gas constant .
Definition: IdealGas.hpp:41
static Evaluation pressure(const Evaluation &temperature, const Evaluation &rhoMolar)
The pressure of the gas in , depending on the molar density and temperature.
Definition: IdealGas.hpp:58
static Evaluation density(const Evaluation &avgMolarMass, const Evaluation &temperature, const Evaluation &pressure)
The density of the gas in , depending on pressure, temperature and average molar mass of the gas.
Definition: IdealGas.hpp:48
Definition: Exceptions.hpp:46