60static const std::array<std::string,
64 "deformation_gradient",
66 "effective_pore_pressure",
68 "enthalpy_of_evaporation",
69 "equivalent_plastic_strain",
71 "grain_compressibility",
72 "liquid_phase_pressure",
76 "molar_mass_derivative",
80 "solid_grain_pressure",
87 "volumetric_strain"}};
93 Eigen::Vector<double, 4>,
94 Eigen::Vector<double, 5>,
95 Eigen::Vector<double, 6>,
96 Eigen::Vector<double, 9>>;
103 Eigen::Vector<double, 4>,
104 Eigen::Vector<double, 6>>;
108 Eigen::Vector<double, 5>,
109 Eigen::Vector<double, 9>>;
112 variant<Scalar const*, KelvinVector const*, DeformationGradient const*>;
117 std::variant<Scalar*, KelvinVector*, DeformationGradient*>;
119 template <
typename Visitor>
124 std::forward<Visitor>(visitor),
127 static_assert(!std::is_same_v<T, T>,
128 "Non-exhaustive visitor! The variable type "
129 "must be one of the VariableArray::{Scalar, "
130 "KelvinVector, DeformationGradient}.");
135 template <
typename Visitor>
140 std::forward<Visitor>(visitor),
141 []<
typename T>(T
const*)
143 static_assert(!std::is_same_v<T, T>,
144 "Non-exhaustive visitor! The variable type "
145 "must be one of the VariableArray::{Scalar, "
146 "KelvinVector, DeformationGradient}.");
155 auto identity = [](
auto const& arg) ->
VariableType {
return arg; };
161 {
return std::visit(identity, *ptr); },
163 {
return std::visit(identity, *ptr); }},
202 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
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
@ 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)