Go to the documentation of this file.
11 #include "Conversion.h"
12 #include "MathUtils.h"
13 #include "libmesh/utility.h"
22 params.addClassDescription(
"Fluid properties for Nitrogen (N2)");
29 _p_critical(3.3958e6),
31 _rho_molar_critical(11.1839),
86 const Real logTstar = std::log(
temperature / 98.94);
90 for (std::size_t i = 0; i <
_bmu.size(); ++i)
94 0.0266958 * std::sqrt(1000.0 *
_Mn2 *
temperature) / (0.3656 * 0.3656 * std::exp(logOmega));
98 for (std::size_t i = 0; i <
_Nmu.size(); ++i)
103 return (mu0 + mur) * 1.0e-6;
117 const Real logTstar = std::log(
temperature / 98.94);
120 Real logOmega = 0.0, dlogOmega_dT = 0.0;
121 for (std::size_t i = 0; i <
_bmu.size(); ++i)
128 0.0266958 * std::sqrt(1000.0 *
_Mn2 *
temperature) / (0.3656 * 0.3656 * std::exp(logOmega));
129 const Real dmu0_dT = 26.6958 *
_Mn2 * (1.0 - 2.0 *
temperature * dlogOmega_dT) *
130 std::exp(-logOmega) /
134 Real mur = 0.0, dmur_drho = 0.0, dmur_dT = 0.0;
136 for (std::size_t i = 0; i <
_Nmu.size(); ++i)
147 mu = (mu0 + mur) * 1.0e-6;
148 dmu_drho = dmur_drho * 1.0e-6;
149 dmu_dT = (dmu0_dT + dmur_dT) * 1.0e-6 + dmu_drho * ddensity_dT;
164 Real
rho, drho_dp, drho_dT;
169 dmu_dp = dmu_drho * drho_dp;
195 dmu_dp = dmu_drho * drho_dp;
211 for (std::size_t i = 0; i <
_Nk.size(); ++i)
216 return (lambda0 + lambdar) * 1.0e-3;
233 const Real eps = 1.0e-6;
244 return {-9.67578, 4.72162, 11.70585};
250 if (temperature < _T_triple || temperature >
_T_critical)
251 throw MooseException(
"Temperature is out of range in " +
name() +
": vaporPressure()");
254 const Real theta = 1.0 - Tr;
256 const Real logpressure =
257 (-6.12445284 * theta + 1.2632722 *
std::pow(theta, 1.5) - 0.765910082 *
std::pow(theta, 2.5) -
258 1.77570564 * Utility::pow<5>(theta)) /
267 mooseError(
name(),
": vaporPressure() is not implemented");
273 if (temperature < _T_triple || temperature >
_T_critical)
274 throw MooseException(
"Temperature is out of range in " +
name() +
": vaporPressure()");
277 const Real theta = 1.0 - Tr;
279 const Real logpressure =
280 1.48654237 *
std::pow(theta, 0.3294) - 0.280476066 *
std::pow(theta, 2.0 / 3.0) +
281 0.0894143085 *
std::pow(theta, 8.0 / 3.0) - 0.119879866 *
std::pow(theta, 35.0 / 6.0);
289 if (temperature < _T_triple || temperature >
_T_critical)
290 throw MooseException(
"Temperature is out of range in " +
name() +
": vaporPressure()");
293 const Real theta = 1.0 - Tr;
295 const Real logpressure =
296 (-1.70127164 *
std::pow(theta, 0.34) - 3.70402649 *
std::pow(theta, 5.0 / 6.0) +
297 1.29859383 *
std::pow(theta, 7.0 / 6.0) - 0.561424977 *
std::pow(theta, 13.0 / 6.0) -
298 2.68505381 *
std::pow(theta, 14.0 / 3.0)) /
308 const Real alpha0 = std::log(delta) +
_a[0] * std::log(tau) +
_a[1] +
_a[2] * tau +
_a[3] / tau +
309 _a[4] / Utility::pow<2>(tau) +
_a[5] / Utility::pow<3>(tau) +
310 _a[6] * std::log(1.0 - std::exp(-
_a[7] * tau));
315 for (std::size_t i = 0; i <
_N1.size(); ++i)
318 for (std::size_t i = 0; i <
_N2.size(); ++i)
322 for (std::size_t i = 0; i <
_N3.size(); ++i)
324 std::exp(-
_phi3[i] * Utility::pow<2>(delta - 1.0) -
328 return alpha0 + alphar;
335 const Real dalpha0 = 1.0 / delta;
340 for (std::size_t i = 0; i <
_N1.size(); ++i)
343 for (std::size_t i = 0; i <
_N2.size(); ++i)
348 for (std::size_t i = 0; i <
_N3.size(); ++i)
350 std::exp(-
_phi3[i] * Utility::pow<2>(delta - 1.0) -
352 (
_i3[i] - 2.0 * delta *
_phi3[i] * (delta - 1.0));
355 return dalpha0 + dalphar / delta;
362 const Real dalpha0 =
_a[0] +
_a[2] * tau -
_a[3] / tau - 2.0 *
_a[4] / Utility::pow<2>(tau) -
363 3.0 *
_a[5] / Utility::pow<3>(tau) +
364 _a[6] *
_a[7] * tau / (std::exp(
_a[7] * tau) - 1.0);
369 for (std::size_t i = 0; i <
_N1.size(); ++i)
372 for (std::size_t i = 0; i <
_N2.size(); ++i)
376 for (std::size_t i = 0; i <
_N3.size(); ++i)
378 std::exp(-
_phi3[i] * Utility::pow<2>(delta - 1.0) -
383 return (dalpha0 + dalphar) / tau;
390 const Real dalpha0 = -1.0 / delta / delta;
395 for (std::size_t i = 0; i <
_N1.size(); ++i)
399 for (std::size_t i = 0; i <
_N2.size(); ++i)
406 for (std::size_t i = 0; i <
_N3.size(); ++i)
408 std::exp(-
_phi3[i] * Utility::pow<2>(delta - 1.0) -
410 (Utility::pow<2>(
_i3[i] - 2.0 * delta *
_phi3[i] * (delta - 1.0)) -
_i3[i] -
411 2.0 * delta * delta *
_phi3[i]);
414 return dalpha0 + dalphar / delta / delta;
421 const Real dalpha0 = -
_a[0] + 2.0 *
_a[3] / tau + 6.0 *
_a[4] / Utility::pow<2>(tau) +
422 12.0 *
_a[5] / Utility::pow<3>(tau) -
423 _a[6] *
_a[7] *
_a[7] * tau * tau * std::exp(
_a[7] * tau) /
424 Utility::pow<2>(std::exp(
_a[7] * tau) - 1.0);
429 for (std::size_t i = 0; i <
_N1.size(); ++i)
433 for (std::size_t i = 0; i <
_N2.size(); ++i)
437 for (std::size_t i = 0; i <
_N3.size(); ++i)
439 std::exp(-
_phi3[i] * Utility::pow<2>(delta - 1.0) -
442 2.0 * tau * tau *
_beta3[i]);
445 return (dalpha0 + dalphar) / tau / tau;
455 for (std::size_t i = 0; i <
_N1.size(); ++i)
458 for (std::size_t i = 0; i <
_N2.size(); ++i)
463 for (std::size_t i = 0; i <
_N3.size(); ++i)
465 std::exp(-
_phi3[i] * Utility::pow<2>(delta - 1.0) -
467 (
_i3[i] - 2.0 * delta *
_phi3[i] * (delta - 1.0)) *
471 return dalphar / delta / tau;
const std::array< Real, 4 > _gamma3
registerMooseObject("FluidPropertiesApp", NitrogenFluidProperties)
virtual Real rho_from_p_T(Real pressure, Real temperature) const override
const std::array< Real, 26 > _N2
virtual Real mu_from_p_T(Real pressure, Real temperature) const override
virtual std::vector< Real > henryCoefficients() const override
Henry's law coefficients for dissolution in water.
virtual Real d2alpha_ddelta2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta.
InputParameters validParams< NitrogenFluidProperties >()
const std::array< Real, 6 > _j1
const std::array< Real, 5 > _dmu
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const std::array< Real, 5 > _lmu
virtual Real molarMass() const override
Fluid name.
virtual Real criticalDensity() const override
Critical density.
InputParameters validParams< HelmholtzFluidProperties >()
virtual Real dalpha_dtau(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt tau.
virtual Real criticalTemperature() const override
Critical temperature.
virtual Real criticalPressure() const override
Critical pressure.
Real saturatedLiquidDensity(Real temperature) const
Saturated liquid density of N2 Valid for temperatures between the triple point temperature and critic...
const std::array< Real, 6 > _N1
Coefficients for residual component of the Helmholtz free energy.
const std::array< unsigned int, 6 > _i1
virtual Real d2alpha_dtau2(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt tau.
const Real _T_triple
Triple point temperature (K)
const Real _p_triple
Triple point pressure (Pa)
virtual Real vaporPressure(Real temperature) const override
Vapor pressure.
const std::array< Real, 5 > _Nmu
const std::array< Real, 4 > _beta3
const std::array< Real, 5 > _bmu
Coefficients for viscosity.
virtual Real d2alpha_ddeltatau(Real delta, Real tau) const override
Second derivative of Helmholtz free energy wrt delta and tau.
const std::string density
const std::array< Real, 6 > _Nk
Coefficients for thermal conductivity.
virtual Real k_from_p_T(Real pressure, Real temperature) const override
Nitrogen (N2) fluid properties as a function of pressure (Pa) and temperature (K).
const std::array< unsigned int, 6 > _lk
const std::array< Real, 4 > _phi3
const Real _rho_molar_critical
Critical molar density (mol/l)
const std::array< Real, 6 > _tk
const Real _rho_critical
Critical density (kg/m^3)
const Real _p_critical
Critical pressure (Pa)
virtual Real triplePointTemperature() const override
Triple point temperature.
Base class equation of state for fluids that use a Helmholtz free energy alpha(delta,...
virtual Real mu_from_rho_T(Real density, Real temperature) const override
const std::array< unsigned int, 6 > _dk
virtual Real triplePointPressure() const override
Triple point pressure.
const std::array< Real, 8 > _a
Coefficients for ideal gas component of the Helmholtz free energy.
virtual Real alpha(Real delta, Real tau) const override
Helmholtz free energy.
NitrogenFluidProperties(const InputParameters ¶meters)
const std::string temperature
virtual Real dalpha_ddelta(Real delta, Real tau) const override
Derivative of Helmholtz free energy wrt delta.
const std::array< Real, 5 > _tmu
const Real _Mn2
Nitrogen molar mass (kg/mol)
const std::array< Real, 5 > _gammamu
const std::array< Real, 26 > _j2
const std::array< unsigned int, 26 > _i2
const std::array< Real, 4 > _N3
virtual Real k_from_rho_T(Real density, Real temperature) const override
virtual void rho_mu_from_p_T(Real pressure, Real temperature, Real &rho, Real &mu) const override
Combined methods.
const std::array< unsigned int, 4 > _j3
virtual std::string fluidName() const override
const std::array< Real, 6 > _gammak
const std::array< unsigned int, 4 > _i3
const std::array< unsigned int, 26 > _l2
Real saturatedVaporDensity(Real temperature) const
Saturated vapor density of N2 Valid for temperatures between the triple point temperature and critica...
const std::string pressure
const Real _T_critical
Critical temperature (K)