OGS
WaterVapourDensity.cpp
Go to the documentation of this file.
1
12#include "WaterVapourDensity.h"
13
14#include <cmath>
15
16#include "BaseLib/Error.h"
19
20namespace MaterialPropertyLib
21{
23static double saturatedVaporDensity(double const T)
24{
25 return 1.0e-3 * std::exp(19.819 - 4975.9 / T);
26}
27
29static double dsaturatedVaporDensitydT(double const T)
30{
31 return 4.9759 * std::exp(19.819 - 4975.9 / T) / (T * T);
32}
33
34static double humidity(double const T, double const p,
35 double const water_density)
36{
37 return std::exp(
39 T * water_density));
40}
41
43 VariableArray const& variable_array,
44 ParameterLib::SpatialPosition const& /*pos*/, double const /*t*/,
45 double const /*dt*/) const
46{
47 double const p = variable_array.liquid_phase_pressure;
48 double const T = variable_array.temperature;
49 double const water_density = variable_array.density;
50
51 return humidity(T, p, water_density) * saturatedVaporDensity(T);
52}
53
55 VariableArray const& variable_array, Variable const variable,
56 ParameterLib::SpatialPosition const& /*pos*/, double const /*t*/,
57 double const /*dt*/) const
58{
59 double const p = variable_array.liquid_phase_pressure;
60 double const T = variable_array.temperature;
61 double const water_density = variable_array.density;
62
63 if (variable == Variable::temperature)
64 {
65 double const h = humidity(T, p, water_density);
66 double const rho_v = h * saturatedVaporDensity(T);
67 double const drho_vS_dT = dsaturatedVaporDensitydT(T);
68
69 return h * drho_vS_dT - rho_v * p /
70 (water_density * T * T *
73 }
74
75 if (variable == Variable::liquid_phase_pressure)
76 {
77 double const factor =
78 1.0 /
80 T * water_density);
81 double const dhumiditydp = factor * std::exp(factor * p);
82
83 return dhumiditydp * saturatedVaporDensity(T);
84 }
85
87 "WaterVapourDensity::dValue is implemented for derivatives with "
88 "respect to temperature or liquid_phase_pressure only.");
89}
90
91} // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition Error.h:26
virtual PropertyDataType value() const
Definition Property.cpp:76
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
constexpr double WaterVapour
Specific gas constant for water vapour.
static double humidity(double const T, double const p, double const water_density)
static double saturatedVaporDensity(double const T)
static double dsaturatedVaporDensitydT(double const T)
std::variant< double, Eigen::Matrix< double, 2, 1 >, Eigen::Matrix< double, 3, 1 >, Eigen::Matrix< double, 2, 2 >, Eigen::Matrix< double, 3, 3 >, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 >, Eigen::MatrixXd > PropertyDataType
Definition Property.h:31