28 double const t,
double const )
const
30 auto calculate_linearized_ratio =
31 [&variable_array, pos, t](
double const initial_linearized_ratio,
35 if (
auto* var_ptr = std::get_if<Variable>(&iv.type))
37 x = std::get<double>(variable_array[*var_ptr]);
39 else if (
auto* str_ptr = std::get_if<std::string>(&iv.type))
43 else if (*str_ptr ==
"x")
45 else if (*str_ptr ==
"y")
47 else if (*str_ptr ==
"z")
51 "Unknown independent_variable {:s} for curve property.",
57 "Could not convert independent_variable neither to a Variable "
58 "nor to a std::string.");
61 return initial_linearized_ratio +
62 std::get<double>(iv.slope) *
63 (x - std::get<double>(iv.reference_condition));
66 double const linearized_ratio_to_reference_value =
70 calculate_linearized_ratio);
72 return std::get<double>(
value_) * linearized_ratio_to_reference_value;
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