OGS
Function.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <map>
7#include <utility>
8#include <vector>
9
13
14namespace MaterialPropertyLib
15{
24class Function final : public Property
25{
26public:
28 std::string name,
29 std::vector<std::string> const& value_string_expressions,
30 std::vector<std::pair<std::string, std::vector<std::string>>> const&
31 dvalue_string_expressions,
32 std::map<std::string,
33 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
34 curves);
35
36 PropertyDataType value(VariableArray const& variable_array,
38 double const t,
39 double const dt) const override;
40
41 PropertyDataType dValue(VariableArray const& variable_array,
42 Variable const variable,
44 double const t,
45 double const dt) const override;
46
48
49private:
50 template <int D>
51 class Implementation;
52
53 std::unique_ptr<Implementation<2>> impl2_;
54 std::unique_ptr<Implementation<3>> impl3_;
55
56 std::variant<Function::Implementation<2>*, Function::Implementation<3>*>
58 VariableArray const& variable_array) const;
59
61 std::vector<Variable> variables_;
62};
63} // namespace MaterialPropertyLib
std::unique_ptr< Implementation< 3 > > impl3_
Definition Function.h:54
std::vector< Variable > variables_
Variables used in the exprtk expressions.
Definition Function.h:61
std::variant< Function::Implementation< 2 > *, Function::Implementation< 3 > * > getImplementationForDimensionOfVariableArray(VariableArray const &variable_array) const
Definition Function.cpp:503
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:452
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Definition Function.cpp:549
std::unique_ptr< Implementation< 2 > > impl2_
Definition Function.h:53
virtual PropertyDataType value() const
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