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 
36 
37 namespace Opm {
38 
46 template <class Scalar>
47 class Air : public Component<Scalar, Air<Scalar> >
48 {
49  typedef ::Opm::IdealGas<Scalar> IdealGas;
50 
51 public:
55  static bool liquidIsCompressible()
56  { throw std::runtime_error("Not implemented: Component::liquidIsCompressible()"); }
57 
61  static const char* name()
62  { return "Air"; }
63 
67  static bool gasIsCompressible()
68  { return true; }
69 
73  static bool gasIsIdeal()
74  { return true; }
75 
81  static Scalar molarMass()
82  { return 0.02896; /* [kg/mol] */ }
83 
87  static Scalar criticalTemperature()
88  { return 132.531 ; /* [K] */ }
89 
93  static Scalar criticalPressure()
94  { return 37.86e5; /* [Pa] */ }
95 
102  template <class Evaluation>
103  static Evaluation gasDensity(const Evaluation& temperature, const Evaluation& pressure)
104  { return IdealGas::density(Evaluation(molarMass()), temperature, pressure); }
105 
112  template <class Evaluation>
113  static Evaluation gasPressure(const Evaluation& temperature, Scalar density)
114  { return IdealGas::pressure(temperature, density/molarMass()); }
115 
137  template <class Evaluation>
138  static Evaluation gasViscosity(const Evaluation& temperature, const Evaluation& /*pressure*/)
139  {
140  Scalar Tc = criticalTemperature();
141  Scalar Vc = 84.525138; // critical specific volume [cm^3/mol]
142  Scalar omega = 0.078; // accentric factor
143  Scalar M = molarMass() * 1e3; // molar mas [g/mol]
144  Scalar dipole = 0.0; // dipole moment [debye]
145 
146  Scalar mu_r4 = 131.3 * dipole / std::sqrt(Vc * Tc);
147  mu_r4 *= mu_r4;
148  mu_r4 *= mu_r4;
149 
150  Scalar Fc = 1 - 0.2756*omega + 0.059035*mu_r4;
151  Evaluation Tstar = 1.2593 * temperature/Tc;
152  Evaluation Omega_v =
153  1.16145*pow(Tstar, -0.14874) +
154  0.52487*exp(- 0.77320*Tstar) +
155  2.16178*exp(- 2.43787*Tstar);
156  return 40.7851e-7*Fc*sqrt(M*temperature)/(std::pow(Vc, 2./3)*Omega_v);
157  }
158 
159  // simpler method, from old constrelAir.hh
160  template <class Evaluation>
161  static Evaluation simpleGasViscosity(const Evaluation& temperature, const Evaluation& /*pressure*/)
162  {
163  if(temperature < 273.15 || temperature > 660.) {
164  throw NumericalIssue("Air: Temperature "+std::to_string(scalarValue(temperature))+"K out of range");
165  }
166  return 1.496e-6*pow(temperature, 1.5)/(temperature + 120);
167  }
168 
180  template <class Evaluation>
181  static Evaluation gasEnthalpy(const Evaluation& temperature, const Evaluation& /*pressure*/)
182  {
183  return 1005.0*temperature;
184  }
185 
197  template <class Evaluation>
198  static Evaluation gasInternalEnergy(const Evaluation& temperature,
199  const Evaluation& pressure)
200  {
201  return
202  gasEnthalpy(temperature, pressure)
203  - (IdealGas::R*temperature/molarMass()); // <- pressure times specific volume of an ideal gas
204  }
205 
217  template <class Evaluation>
218  static Evaluation gasThermalConductivity(const Evaluation& /*temperature*/,
219  const Evaluation& /*pressure*/)
220  {
221  // Isobaric Properties for Nitrogen in: NIST Standard
222  // see http://webbook.nist.gov/chemistry/fluid/
223  // evaluated at p=.1 MPa, T=20°C
224  // Nitrogen: 0.025398
225  // Oxygen: 0.026105
226  // lambda_air is approximately 0.78*lambda_N2+0.22*lambda_O2
227  return 0.0255535;
228  }
229 
246  template <class Evaluation>
247  static Evaluation gasHeatCapacity(const Evaluation&,
248  const Evaluation&)
249  {
250  return 1005.0;
251  }
252 };
253 
254 } // namespace Opm
255 
256 #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...
Provides the OPM_UNUSED macro.
A simple class implementing the fluid properties of air.
Definition: Air.hpp:48
static Evaluation gasThermalConductivity(const Evaluation &, const Evaluation &)
Specific heat conductivity of steam .
Definition: Air.hpp:218
static Evaluation gasHeatCapacity(const Evaluation &, const Evaluation &)
Specific isobaric heat capacity of pure air.
Definition: Air.hpp:247
static Scalar criticalPressure()
Returns the critical pressure of .
Definition: Air.hpp:93
static Evaluation gasDensity(const Evaluation &temperature, const Evaluation &pressure)
The density of at a given pressure and temperature [kg/m^3].
Definition: Air.hpp:103
static Evaluation gasPressure(const Evaluation &temperature, Scalar density)
The pressure of gaseous at a given density and temperature .
Definition: Air.hpp:113
static Scalar molarMass()
The molar mass in of .
Definition: Air.hpp:81
static Evaluation gasInternalEnergy(const Evaluation &temperature, const Evaluation &pressure)
Specific internal energy of .
Definition: Air.hpp:198
static bool gasIsCompressible()
Returns true iff the gas phase is assumed to be compressible.
Definition: Air.hpp:67
static bool gasIsIdeal()
Returns true iff the gas phase is assumed to be ideal.
Definition: Air.hpp:73
static bool liquidIsCompressible()
Returns true iff the liquid phase is assumed to be compressible.
Definition: Air.hpp:55
static const char * name()
A human readable name for the .
Definition: Air.hpp:61
static Evaluation gasEnthalpy(const Evaluation &temperature, const Evaluation &)
Specific enthalpy of liquid water with 273.15 K as basis.
Definition: Air.hpp:181
static Scalar criticalTemperature()
Returns the critical temperature of .
Definition: Air.hpp:87
static Evaluation gasViscosity(const Evaluation &temperature, const Evaluation &)
The dynamic viscosity of at a given pressure and temperature.
Definition: Air.hpp:138
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