16 switch (values.size())
24 return Eigen::Vector2d{values[0], values[1]};
28 return Eigen::Vector3d{values[0], values[1], values[2]};
32 using M = Eigen::Matrix2d;
34 using MRM = Eigen::Matrix<double, 2, 2, Eigen::RowMajor>;
35 return M{Eigen::Map<MRM const>{values.data(), 2, 2}};
40 using M = Eigen::Matrix<double, 6, 1>;
41 return M{Eigen::Map<M const>{values.data(), 6}};
45 using M = Eigen::Matrix3d;
47 using MRM = Eigen::Matrix<double, 3, 3, Eigen::RowMajor>;
48 return M{Eigen::Map<MRM const>{values.data(), 3, 3}};
53 "Conversion of a {:d}-vector to PropertyDataType is not "
64 std::numeric_limits<double>::quiet_NaN());
78 double const ,
double const )
const
88 double const t,
double const dt)
const
100 double const ,
double const )
const
113 double const t,
double const dt)
const
137 std::vector<std::unique_ptr<Phase>>
const& )
144 return "property '" +
name_ +
"' defined for " +
146 [](
auto&& scale) -> std::string
148 if (scale ==
nullptr)
150 return "unknown scale";
152 return scale->description();
virtual void setProperties(std::vector< std::unique_ptr< Phase > > const &phases)
Default implementation:
virtual PropertyDataType d2Value(VariableArray const &variable_array, Variable const variable1, Variable const variable2, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
Default implementation: 2nd derivative of any constant property is zero.
std::string description() const
PropertyDataType value_
The single value of a property.
virtual PropertyDataType value() const
std::variant< Medium *, Phase *, Component * > scale_
virtual PropertyDataType initialValue(ParameterLib::SpatialPosition const &pos, double const t) const
virtual PropertyDataType dValue(VariableArray const &variable_array, VariableArray const &variable_array_prev, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
PropertyDataType fromVector(std::vector< double > const &values)
static const VariableArray EmptyVariableArray
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