OGS
Function.h
Go to the documentation of this file.
1
9#pragma once
10
11#include <utility>
12#include <vector>
13
16
17namespace MaterialPropertyLib
18{
26class Function final : public Property
27{
28public:
30 std::string name,
31 std::vector<std::string> const& value_string_expressions,
32 std::vector<std::pair<std::string, std::vector<std::string>>> const&
33 dvalue_string_expressions);
34
35 PropertyDataType value(VariableArray const& variable_array,
37 double const t,
38 double const dt) const override;
39
40 PropertyDataType dValue(VariableArray const& variable_array,
41 Variable const variable,
43 double const t,
44 double const dt) const override;
45
47
48private:
49 template <int D>
51
52 std::unique_ptr<Implementation<2>> impl2_;
53 std::unique_ptr<Implementation<3>> impl3_;
54
55 std::variant<Function::Implementation<2>*, Function::Implementation<3>*>
57 VariableArray const& variable_array) const;
58
60 std::vector<Variable> variables_;
61
62 mutable std::mutex mutex_;
63};
64} // namespace MaterialPropertyLib
std::unique_ptr< Implementation< 3 > > impl3_
Definition Function.h:53
std::vector< Variable > variables_
Variables used in the exprtk expressions.
Definition Function.h:60
std::variant< Function::Implementation< 2 > *, Function::Implementation< 3 > * > getImplementationForDimensionOfVariableArray(VariableArray const &variable_array) const
Definition Function.cpp:404
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)
Definition Function.cpp:375
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Definition Function.cpp:436
std::unique_ptr< Implementation< 2 > > impl2_
Definition Function.h:52
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