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{
30class Function final : public Property
31{
32public:
34 std::string name,
35 std::vector<std::string> const& value_string_expressions,
36 std::vector<std::pair<std::string, std::vector<std::string>>> const&
37 dvalue_string_expressions,
38 std::map<std::string,
39 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
40 curves);
41
42 PropertyDataType value(VariableArray const& variable_array,
44 double const t,
45 double const dt) const override;
46
47 PropertyDataType dValue(VariableArray const& variable_array,
48 Variable const variable,
50 double const t,
51 double const dt) const override;
52
54
55private:
56 template <int D>
58
59 std::unique_ptr<Implementation<2>> impl2_;
60 std::unique_ptr<Implementation<3>> impl3_;
61
62 std::variant<Function::Implementation<2>*, Function::Implementation<3>*>
64 VariableArray const& variable_array) const;
65
67 std::vector<Variable> variables_;
68
69 mutable std::mutex mutex_;
70};
71} // namespace MaterialPropertyLib
Definition of the PiecewiseLinearInterpolation class.
std::unique_ptr< Implementation< 3 > > impl3_
Definition Function.h:60
std::vector< Variable > variables_
Variables used in the exprtk expressions.
Definition Function.h:67
std::variant< Function::Implementation< 2 > *, Function::Implementation< 3 > * > getImplementationForDimensionOfVariableArray(VariableArray const &variable_array) const
Definition Function.cpp:454
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:417
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Definition Function.cpp:486
std::unique_ptr< Implementation< 2 > > impl2_
Definition Function.h:59
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