7#pragma GCC diagnostic push
8#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
10#include <boost/math/differentiation/autodiff.hpp>
12#pragma GCC diagnostic pop
48 if (!std::holds_alternative<Medium*>(
scale_))
51 "The property 'SaturationLuMcCartney' is implemented on the "
52 "'media' scale only.");
61 double const )
const override;
66 double const )
const override;
71 double const )
const override;
74 template <
typename PressureType,
typename TemperatureType>
75 boost::math::differentiation::promote<PressureType, TemperatureType>
78 template <
typename PressureType,
typename TemperatureType>
79 boost::math::differentiation::promote<PressureType, TemperatureType>
82 template <
typename PressureType,
typename TemperatureType>
83 boost::math::differentiation::promote<PressureType, TemperatureType>
86 template <
typename TemperatureType>
87 boost::math::differentiation::promote<TemperatureType>
theta_a_max(
88 TemperatureType T,
VariableArray const& variable_array)
const;
89 template <
typename TemperatureType>
90 boost::math::differentiation::promote<TemperatureType>
psi_max(
91 TemperatureType T)
const;
92 template <
typename TemperatureType>
93 boost::math::differentiation::promote<TemperatureType>
c(
94 TemperatureType T)
const;
95 template <
typename TemperatureType>
96 boost::math::differentiation::promote<TemperatureType>
CEC(
97 TemperatureType T)
const;
98 template <
typename TemperatureType>
99 boost::math::differentiation::promote<TemperatureType>
psi_c(
100 TemperatureType T,
VariableArray const& variable_array)
const;
101 template <
typename TemperatureType>
102 boost::math::differentiation::promote<TemperatureType>
A_H(
103 TemperatureType T)
const;
104 template <
typename TemperatureType>
105 boost::math::differentiation::promote<TemperatureType>
chi(
106 TemperatureType T)
const;
107 template <
typename TemperatureType>
108 boost::math::differentiation::promote<TemperatureType>
delta_h(
109 TemperatureType T)
const;
110 template <
typename TemperatureType>
111 boost::math::differentiation::promote<TemperatureType>
alpha(
112 TemperatureType T)
const;
113 template <
typename TemperatureType>
114 boost::math::differentiation::promote<TemperatureType>
epsilon_w(
115 TemperatureType T)
const;
116 template <
typename TemperatureType>
117 boost::math::differentiation::promote<TemperatureType>
zeta_s(
118 TemperatureType T)
const;
119 template <
typename TemperatureType>
120 boost::math::differentiation::promote<TemperatureType>
rho_w(
121 TemperatureType T)
const;
129 static constexpr double ref_p_ = 1.653e7;
133 double const A = 0.92;
134 double const B = 0.9;
135 double const T1 = 373.15;
140 double const Tr = 293.15;
141 double const C1 = -0.00151;
This class defines components (substances).
virtual PropertyDataType value() const
std::variant< Medium *, Phase *, Component * > scale_
boost::math::differentiation::promote< TemperatureType > delta_h(TemperatureType T) const
boost::math::differentiation::promote< TemperatureType > CEC(TemperatureType T) const
double const B
fitting parameter for cation exchange capacity
boost::math::differentiation::promote< TemperatureType > c(TemperatureType T) const
double const T2
parameter for temperature effect of CEC in K
double N
exponent for capillary water content
double const nu_w
<-— Lu and McCartney 2024 parameters ---->
double const A
fitting parameter for cation exchange capacity
SaturationLuMcCartney(std::string name, std::string const &material)
double SSA
material parameters for capillary water content
double n_s
refractive index of soil particles
boost::math::differentiation::promote< TemperatureType > A_H(TemperatureType T) const
double const n_w
diffraction index
boost::math::differentiation::promote< TemperatureType > theta_a_max(TemperatureType T, VariableArray const &variable_array) const
double epsilon_s
dielectic constant of soil particles
const MaterialLib::Fluid::DimensionLessGibbsFreeEnergyRegion1 gibbs_free_energy_
boost::math::differentiation::promote< PressureType, TemperatureType > capillary_water_content(PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const
double const C1
parameter for temperature correction
double eta_alpha
soil related coefficient
std::string const material_
boost::math::differentiation::promote< PressureType, TemperatureType > water_content(PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const
double const Tr
reference temperature in K
boost::math::differentiation::promote< PressureType, TemperatureType > adsorptive_water_content(PressureType p_cap, TemperatureType T, VariableArray const &variable_array) const
boost::math::differentiation::promote< TemperatureType > chi(TemperatureType T) const
static constexpr double ref_T_
reference temperature in K.
static constexpr double ref_p_
double alpha_0_inv
air entry suction at reference temperature Tr in Pa
double const T1
parameter for temperature effect of CEC in K
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &, double const, double const) const override
void checkScale() const override
double M
exponent for adsorptive water content
double const nu_e
main absorption frequency of UV light in Hz
boost::math::differentiation::promote< TemperatureType > rho_w(TemperatureType T) const
boost::math::differentiation::promote< TemperatureType > psi_c(TemperatureType T, VariableArray const &variable_array) const
boost::math::differentiation::promote< TemperatureType > psi_max(TemperatureType T) const
double CEC_max
maximum cation exchange capacity in meq/g
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.
boost::math::differentiation::promote< TemperatureType > epsilon_w(TemperatureType T) const
double E1_minus_EL
material parameters for adsorptive water content
boost::math::differentiation::promote< TemperatureType > alpha(TemperatureType T) const
boost::math::differentiation::promote< TemperatureType > zeta_s(TemperatureType T) 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