61static const std::array<std::string,
65 "deformation_gradient",
67 "effective_pore_pressure",
69 "enthalpy_of_evaporation",
70 "equivalent_plastic_strain",
72 "grain_compressibility",
73 "liquid_phase_pressure",
77 "molar_mass_derivative",
81 "solid_grain_pressure",
88 "volumetric_mechanical_strain",
89 "volumetric_strain"}};
95 Eigen::Vector<double, 4>,
96 Eigen::Vector<double, 5>,
97 Eigen::Vector<double, 6>,
98 Eigen::Vector<double, 9>>;
105 Eigen::Vector<double, 4>,
106 Eigen::Vector<double, 6>>;
110 Eigen::Vector<double, 5>,
111 Eigen::Vector<double, 9>>;
114 variant<Scalar const*, KelvinVector const*, DeformationGradient const*>;
119 std::variant<Scalar*, KelvinVector*, DeformationGradient*>;
121 template <
typename Visitor>
126 std::forward<Visitor>(visitor),
129 static_assert(!std::is_same_v<T, T>,
130 "Non-exhaustive visitor! The variable type "
131 "must be one of the VariableArray::{Scalar, "
132 "KelvinVector, DeformationGradient}.");
137 template <
typename Visitor>
142 std::forward<Visitor>(visitor),
143 []<
typename T>(T
const*)
145 static_assert(!std::is_same_v<T, T>,
146 "Non-exhaustive visitor! The variable type "
147 "must be one of the VariableArray::{Scalar, "
148 "KelvinVector, DeformationGradient}.");
157 auto identity = [](
auto const& arg) ->
VariableType {
return arg; };
163 {
return std::visit(identity, *ptr); },
165 {
return std::visit(identity, *ptr); }},
205 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
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)