59static const std::array<std::string,
63 "deformation_gradient",
65 "effective_pore_pressure",
67 "enthalpy_of_evaporation",
68 "equivalent_plastic_strain",
69 "grain_compressibility",
70 "liquid_phase_pressure",
74 "molar_mass_derivative",
78 "solid_grain_pressure",
85 "volumetric_strain"}};
91 Eigen::Vector<double, 4>,
92 Eigen::Vector<double, 5>,
93 Eigen::Vector<double, 6>,
94 Eigen::Vector<double, 9>>;
101 Eigen::Vector<double, 4>,
102 Eigen::Vector<double, 6>>;
106 Eigen::Vector<double, 5>,
107 Eigen::Vector<double, 9>>;
110 variant<Scalar const*, KelvinVector const*, DeformationGradient const*>;
115 std::variant<Scalar*, KelvinVector*, DeformationGradient*>;
117 template <
typename Visitor>
122 std::forward<Visitor>(visitor),
125 static_assert(!std::is_same_v<T, T>,
126 "Non-exhaustive visitor! The variable type "
127 "must be one of the VariableArray::{Scalar, "
128 "KelvinVector, DeformationGradient}.");
133 template <
typename Visitor>
138 std::forward<Visitor>(visitor),
139 []<
typename T>(T
const*)
141 static_assert(!std::is_same_v<T, T>,
142 "Non-exhaustive visitor! The variable type "
143 "must be one of the VariableArray::{Scalar, "
144 "KelvinVector, DeformationGradient}.");
153 auto identity = [](
auto const& arg) ->
VariableType {
return arg; };
159 {
return std::visit(identity, *ptr); },
161 {
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
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)