OGS
Linear.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
8
10{
11using StringOrVariable = std::variant<std::string, Variable>;
13{
15 VariableType reference_condition; // scalar or vector
16 VariableType slope; // scalar or matrix
17 std::optional<double> min;
18 std::optional<double> max;
19
20 double valueClamped(VariableArray const& variable_array,
22 double const t) const;
23
24 double valueUnclamped(VariableArray const& variable_array,
26 double const t) const;
27};
28
32class Linear final : public Property
33{
34public:
38 Linear(std::string name,
39 PropertyDataType const& property_reference_value,
40 std::vector<IndependentVariable> const& vs);
41
44 PropertyDataType value(VariableArray const& variable_array,
45 ParameterLib::SpatialPosition const& /*pos*/,
46 double const /*t*/,
47 double const /*dt*/) const override;
48
51 PropertyDataType dValue(VariableArray const& variable_array,
52 Variable const variable,
53 ParameterLib::SpatialPosition const& /*pos*/,
54 double const /*t*/,
55 double const /*dt*/) const override;
56
59 PropertyDataType d2Value(VariableArray const& variable_array,
60 Variable const pv1, Variable const pv2,
61 ParameterLib::SpatialPosition const& /*pos*/,
62 double const /*t*/,
63 double const /*dt*/) const override;
64
65private:
66 std::vector<IndependentVariable> const independent_variables_;
67};
68} // namespace MaterialPropertyLib
std::vector< IndependentVariable > const independent_variables_
Definition Linear.h:66
PropertyDataType d2Value(VariableArray const &variable_array, Variable const pv1, Variable const pv2, ParameterLib::SpatialPosition const &, double const, double const) const override
Definition Linear.cpp:134
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &, double const, double const) const override
Definition Linear.cpp:95
Linear(std::string name, PropertyDataType const &property_reference_value, std::vector< IndependentVariable > const &vs)
Definition Linear.cpp:62
virtual PropertyDataType value() const
std::variant< std::monostate, double, Eigen::Vector< double, 4 >, Eigen::Vector< double, 5 >, Eigen::Vector< double, 6 >, Eigen::Vector< double, 9 > > VariableType
std::variant< std::string, Variable > StringOrVariable
Definition Curve.h:12
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
double valueClamped(VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t) const
Definition Linear.cpp:10
std::optional< double > max
Definition Linear.h:18
std::optional< double > min
Definition Linear.h:17
double valueUnclamped(VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t) const
Definition Linear.cpp:29