OGS
IdealGasLawBinaryMixture.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
5
7
9{
14
16 VariableArray const& variable_array,
17 ParameterLib::SpatialPosition const& /*pos*/, double const /*t*/,
18 double const /*dt*/) const
19{
21 const double pGR = variable_array.gas_phase_pressure;
22 const double T = variable_array.temperature;
23 const double MG = variable_array.molar_mass;
24
25 return pGR * MG / R / T;
26}
27
29 VariableArray const& variable_array, Variable const variable,
30 ParameterLib::SpatialPosition const& /*pos*/, double const /*t*/,
31 double const /*dt*/) const
32{
34 const double pGR = variable_array.gas_phase_pressure;
35 const double T = variable_array.temperature;
36 const double MG = variable_array.molar_mass;
37 const double dMG_dx = variable_array.molar_mass_derivative;
38
39 switch (variable)
40 {
42 return MG / R / T + pGR / R / T * dMG_dx;
44 return pGR / R / T * dMG_dx;
46 return pGR / R / T / T * (T * dMG_dx - MG);
47 default:
49 "IdealGasLawBinaryMixture::dValue is implemented only for "
50 "derivatives "
51 "w.r.t. gas_pressure, capillary_pressure, and temperature.");
52 break;
53 }
54 return 0.;
55}
56
58 VariableArray const& /*variable_array*/, Variable const /*variable1*/,
59 Variable const /*variable2*/, ParameterLib::SpatialPosition const& /*pos*/,
60 double const /*t*/, double const /*dt*/) const
61{
62 OGS_FATAL("IdealGasLawBinaryMixture::d2Value is not implemented.");
63
64 return 0.;
65}
66
67} // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition Error.h:19
PropertyDataType d2Value(VariableArray const &variable_array, Variable const variable1, Variable const variable2, ParameterLib::SpatialPosition const &, double const, double const) const override
Default implementation: 2nd derivative of any constant property is zero.
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &, double const, double const) const override
virtual PropertyDataType value() const
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