53static const std::array<std::string,
57 "deformation_gradient",
59 "effective_pore_pressure",
61 "enthalpy_of_evaporation",
62 "equivalent_plastic_strain",
64 "grain_compressibility",
65 "ice_volume_fraction",
66 "liquid_phase_pressure",
70 "molar_mass_derivative",
74 "solid_grain_pressure",
81 "volumetric_mechanical_strain",
82 "volumetric_strain"}};
88 Eigen::Vector<double, 4>,
89 Eigen::Vector<double, 5>,
90 Eigen::Vector<double, 6>,
91 Eigen::Vector<double, 9>>;
98 Eigen::Vector<double, 4>,
99 Eigen::Vector<double, 6>>;
103 Eigen::Vector<double, 5>,
104 Eigen::Vector<double, 9>>;
107 variant<Scalar const*, KelvinVector const*, DeformationGradient const*>;
112 std::variant<Scalar*, KelvinVector*, DeformationGradient*>;
114 template <
typename Visitor>
119 std::forward<Visitor>(visitor),
122 static_assert(!std::is_same_v<T, T>,
123 "Non-exhaustive visitor! The variable type "
124 "must be one of the VariableArray::{Scalar, "
125 "KelvinVector, DeformationGradient}.");
130 template <
typename Visitor>
135 std::forward<Visitor>(visitor),
136 []<
typename T>(T
const*)
138 static_assert(!std::is_same_v<T, T>,
139 "Non-exhaustive visitor! The variable type "
140 "must be one of the VariableArray::{Scalar, "
141 "KelvinVector, DeformationGradient}.");
150 auto identity = [](
auto const& arg) ->
VariableType {
return arg; };
156 {
return std::visit(identity, *ptr); },
158 {
return std::visit(identity, *ptr); }},
199 static constexpr auto nan_ = std::numeric_limits<double>::signaling_NaN();
KelvinVector mechanical_strain
DeformationGradient deformation_gradient
std::variant< Scalar *, KelvinVector *, DeformationGradient * > VariablePointer
VariableType operator[](Variable const variable) const
KelvinVector total_stress
double solid_grain_pressure
double volumetric_mechanical_strain
std::variant< std::monostate, Eigen::Vector< double, 5 >, Eigen::Vector< double, 9 > > DeformationGradient
double transport_porosity
double grain_compressibility
double molar_mass_derivative
KelvinVector total_strain
std:: variant< Scalar const *, KelvinVector const *, DeformationGradient const * > VariablePointerConst
double ice_volume_fraction
std::variant< std::monostate, Eigen::Vector< double, 4 >, Eigen::Vector< double, 6 > > KelvinVector
static constexpr auto nan_
double gas_phase_pressure
double effective_pore_pressure
double equivalent_plastic_strain
double capillary_pressure
VariablePointerConst address_of(Variable const v) const
double enthalpy_of_evaporation
auto visitVariable(Visitor &&visitor, Variable const variable) const
double liquid_phase_pressure
auto visitVariable(Visitor &&visitor, Variable const variable)
std::variant< std::monostate, double, Eigen::Vector< double, 4 >, Eigen::Vector< double, 5 >, Eigen::Vector< double, 6 >, Eigen::Vector< double, 9 > > VariableType
@ volumetric_mechanical_strain
@ enthalpy_of_evaporation
@ equivalent_plastic_strain
@ effective_pore_pressure
static const VariableArray EmptyVariableArray
static const std::array< std::string, static_cast< int >(Variable::number_of_variables)> variable_enum_to_string
@ concentration
used to specify decay rate of a substance.
Variable convertStringToVariable(std::string const &string)