version 3.10-dev
n2.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// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
12#ifndef DUMUX_N2_HH
13#define DUMUX_N2_HH
14
16
17#include <cmath>
18
22
23namespace Dumux {
24namespace Components {
25
32template <class Scalar>
33class N2
34: public Components::Base<Scalar, N2<Scalar> >
35, public Components::Gas<Scalar, N2<Scalar> >
36{
39
40public:
45 static std::string name()
46 { return "N2"; }
47
51 static constexpr Scalar molarMass()
52 { return 28.0134e-3;}
53
58 { return 126.192; /* [K] */ }
59
64 { return 3.39858e6; /* [N/m^2] */ }
65
70 { return 63.151; /* [K] */ }
71
76 { return 12.523e3; /* [N/m^2] */ }
77
89 {
90 if (T > criticalTemperature())
91 return criticalPressure();
92 if (T < tripleTemperature())
93 return 0; // N2 is solid: We don't take sublimation into
94 // account
95
96 // note: this is the ancillary equation given on page 1368
97 using std::sqrt;
98 Scalar sigma = Scalar(1.0) - T/criticalTemperature();
99 Scalar sqrtSigma = sqrt(sigma);
100 const Scalar N1 = -6.12445284;
101 const Scalar N2 = 1.26327220;
102 const Scalar N3 = -0.765910082;
103 const Scalar N4 = -1.77570564;
104
105 using std::exp;
106 return
108 exp(criticalTemperature()/T*
109 (sigma*(N1 +
110 sqrtSigma*N2 +
111 sigma*(sqrtSigma*N3 +
112 sigma*sigma*sigma*N4))));
113 }
114
122 {
123 // Assume an ideal gas
125 }
126
136
140 static constexpr bool gasIsCompressible()
141 { return true; }
142
146 static constexpr bool gasIsIdeal()
147 { return true; }
148
156 {
157 // Assume an ideal gas
159 }
160
170 {
171 const auto h = shomateMethod.enthalpy(temperature); // KJ/mol
172 return h * 1e3 / molarMass(); // J/kg
173 }
174
190 {
191 return
193 1/molarMass()* // conversion from [J/(mol K)] to [J/(kg K)]
194 IdealGas::R*temperature; // = pressure * spec. volume for an ideal gas
195 }
196
203 {
204 const auto cp = shomateMethod.heatCapacity(T); // J/(mol K)
205 return cp / molarMass(); // J/(kg K)
206 }
207
222 {
223 const Scalar Tc = criticalTemperature();
224 const Scalar Vc = 90.1; // critical specific volume [cm^3/mol]
225 const Scalar omega = 0.037; // accentric factor
226 const Scalar M = molarMass() * 1e3; // molar mas [g/mol]
227 const Scalar dipole = 0.0; // dipole moment [debye]
228
229 using std::sqrt;
230 Scalar mu_r4 = 131.3 * dipole / sqrt(Vc * Tc);
231 mu_r4 *= mu_r4;
232 mu_r4 *= mu_r4;
233
234 using std::pow;
235 using std::exp;
236 Scalar Fc = 1 - 0.2756*omega + 0.059035*mu_r4;
237 Scalar Tstar = 1.2593 * temperature/Tc;
238 Scalar Omega_v =
239 1.16145*pow(Tstar, -0.14874) +
240 0.52487*exp(- 0.77320*Tstar) +
241 2.16178*exp(- 2.43787*Tstar);
242 Scalar mu = 40.785*Fc*sqrt(M*temperature)/(pow(Vc, 2./3)*Omega_v);
243
244 // conversion from micro poise to Pa s
245 return mu/1e6 / 10;
246 }
247
260 {
261 return 6.525e-5 * (temperature - 273.15) + 0.024031;
262 }
263};
264
270template <class Scalar>
271const typename N2<Scalar>::ShomateMethod N2<Scalar>::shomateMethod{
272 /*temperature*/{100.0,500.0,2000.0,6000.0},
274 {28.98641, 1.853978, -9.647459, 16.63537, 0.000117, -8.671914, 226.4168, 0.0},
275 {19.50583, 19.88705, -8.598535, 1.369784, 0.527601, -4.935202, 212.39, 0.0},
276 {35.51872, 1.128728, -0.196103, 0.014662, -4.55376, -18.97091, 224.981, 0.0}
277 }}
278};
279
280} // end namespace Components
281} // end namespace Dumux
282
283#endif
Base class for all components Components provide the thermodynamic relations for the liquid,...
Definition: components/base.hh:47
Scalar Scalar
export the scalar type used by the component
Definition: components/base.hh:51
Interface for components that have a gas state.
Definition: gas.hh:29
Properties of pure molecular nitrogen .
Definition: n2.hh:36
static Scalar criticalTemperature()
Returns the critical temperature of molecular nitrogen.
Definition: n2.hh:57
static const Scalar gasInternalEnergy(Scalar temperature, Scalar pressure)
Specific enthalpy of pure nitrogen gas.
Definition: n2.hh:188
static Scalar criticalPressure()
Returns the critical pressure of molecular nitrogen.
Definition: n2.hh:63
static Scalar gasViscosity(Scalar temperature, Scalar pressure)
The dynamic viscosity of at a given pressure and temperature.
Definition: n2.hh:221
static Scalar gasMolarDensity(Scalar temperature, Scalar pressure)
The molar density of gas in at a given pressure and temperature.
Definition: n2.hh:134
static std::string name()
A human readable name for nitrogen.
Definition: n2.hh:45
static Scalar gasDensity(Scalar temperature, Scalar pressure)
The density of gas at a given pressure and temperature.
Definition: n2.hh:121
static constexpr Scalar molarMass()
The molar mass in of molecular nitrogen.
Definition: n2.hh:51
static Scalar vaporPressure(Scalar T)
The vapor pressure in of pure molecular nitrogen at a given temperature.
Definition: n2.hh:88
static Scalar gasThermalConductivity(Scalar temperature, Scalar pressure)
Thermal conductivity of nitrogen.
Definition: n2.hh:259
static const ShomateMethod shomateMethod
Shomate parameters for nitrogen published by NIST https://webbook.nist.gov/cgi/cbook....
Definition: n2.hh:41
static constexpr bool gasIsIdeal()
Returns true if the gas phase is assumed to be ideal.
Definition: n2.hh:146
static constexpr bool gasIsCompressible()
Returns true if the gas phase is assumed to be compressible.
Definition: n2.hh:140
static const Scalar gasEnthalpy(Scalar temperature, Scalar pressure)
Specific enthalpy of pure nitrogen gas. Shomate Equation is used for a temperature range of 100K to ...
Definition: n2.hh:168
static const Scalar gasHeatCapacity(Scalar T, Scalar pressure)
Specific isobaric heat capacity of pure nitrogen gas. Shomate Equation is used for a temperature ran...
Definition: n2.hh:201
static Scalar tripleTemperature()
Returns the temperature at molecular nitrogen's triple point.
Definition: n2.hh:69
static Scalar gasPressure(Scalar temperature, Scalar density)
The pressure of gaseous in at a given density and temperature.
Definition: n2.hh:155
static Scalar triplePressure()
Returns the pressure at molecular nitrogen's triple point.
Definition: n2.hh:75
Relations valid for an ideal gas.
Definition: idealgas.hh:25
static constexpr Scalar pressure(Scalar temperature, Scalar rhoMolar)
The pressure of the gas in , depending on the molar density and temperature.
Definition: idealgas.hh:48
static constexpr Scalar R
The ideal gas constant .
Definition: idealgas.hh:28
static constexpr Scalar density(Scalar avgMolarMass, Scalar temperature, Scalar pressure)
The density of the gas in , depending on pressure, temperature and average molar mass of the gas.
Definition: idealgas.hh:37
static constexpr Scalar molarDensity(Scalar temperature, Scalar pressure)
The molar density of the gas , depending on pressure and temperature.
Definition: idealgas.hh:58
The Shomate method to compute enthalpy and heat capacity.
Definition: shomate.hh:50
Scalar heatCapacity(const Scalar temperature) const
Return heat capacity in J/(mol*K)
Definition: shomate.hh:88
std::conditional_t< intervals==-1, std::vector< CoefficientSet >, std::array< CoefficientSet, std::size_t(intervals)> > Coefficients
Definition: shomate.hh:56
Scalar enthalpy(const Scalar temperature) const
Return enthalpy in kJ/mol.
Definition: shomate.hh:75
Base class for all components Components provide the thermodynamic relations for the liquid,...
Interface for components that have a gas state.
Relations valid for an ideal gas.
std::string temperature() noexcept
I/O name of temperature for equilibrium models.
Definition: name.hh:39
std::string pressure(int phaseIdx) noexcept
I/O name of pressure for multiphase systems.
Definition: name.hh:22
std::string density(int phaseIdx) noexcept
I/O name of density for multiphase systems.
Definition: name.hh:53
Definition: adapt.hh:17
Shomate equations for enthalpy and heat capacity.