OGS
Function.h
Go to the documentation of this file.
1
9#pragma once
10
11#include <map>
12#include <utility>
13#include <vector>
14
18
19namespace MaterialPropertyLib
20{
29class Function final : public Property
30{
31public:
33 std::string name,
34 std::vector<std::string> const& value_string_expressions,
35 std::vector<std::pair<std::string, std::vector<std::string>>> const&
36 dvalue_string_expressions,
37 std::map<std::string,
38 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
39 curves);
40
41 PropertyDataType value(VariableArray const& variable_array,
43 double const t,
44 double const dt) const override;
45
46 PropertyDataType dValue(VariableArray const& variable_array,
47 Variable const variable,
49 double const t,
50 double const dt) const override;
51
53
54private:
55 template <int D>
56 class Implementation;
57
58 std::unique_ptr<Implementation<2>> impl2_;
59 std::unique_ptr<Implementation<3>> impl3_;
60
61 std::variant<Function::Implementation<2>*, Function::Implementation<3>*>
63 VariableArray const& variable_array) const;
64
66 std::vector<Variable> variables_;
67};
68} // namespace MaterialPropertyLib
Definition of the PiecewiseLinearInterpolation class.
std::unique_ptr< Implementation< 3 > > impl3_
Definition Function.h:59
std::vector< Variable > variables_
Variables used in the exprtk expressions.
Definition Function.h:66
std::variant< Function::Implementation< 2 > *, Function::Implementation< 3 > * > getImplementationForDimensionOfVariableArray(VariableArray const &variable_array) const
Definition Function.cpp:509
Function(std::string name, std::vector< std::string > const &value_string_expressions, std::vector< std::pair< std::string, std::vector< std::string > > > const &dvalue_string_expressions, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
Definition Function.cpp:458
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Definition Function.cpp:555
std::unique_ptr< Implementation< 2 > > impl2_
Definition Function.h:58
virtual PropertyDataType value() const
Definition Property.cpp:76
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
Definition Property.h:31