OGS
MaterialPropertyLib::IndependentVariable Struct Reference

Detailed Description

Definition at line 18 of file Linear.h.

#include <Linear.h>

Public Member Functions

double valueClamped (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t) const
double valueUnclamped (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t) const

Public Attributes

StringOrVariable type
VariableType reference_condition
VariableType slope
std::optional< double > min
std::optional< double > max

Member Function Documentation

◆ valueClamped()

double MaterialPropertyLib::IndependentVariable::valueClamped ( VariableArray const & variable_array,
ParameterLib::SpatialPosition const & pos,
double const t ) const

Definition at line 17 of file Linear.cpp.

21{
22 double x = valueUnclamped(variable_array, pos, t);
23
24 if (min)
25 {
26 x = std::max(x, *min);
27 }
28 if (max)
29 {
30 x = std::min(x, *max);
31 }
32
33 return x;
34}
std::optional< double > max
Definition Linear.h:24
std::optional< double > min
Definition Linear.h:23
double valueUnclamped(VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t) const
Definition Linear.cpp:36

References max, min, and valueUnclamped().

◆ valueUnclamped()

double MaterialPropertyLib::IndependentVariable::valueUnclamped ( VariableArray const & variable_array,
ParameterLib::SpatialPosition const & pos,
double const t ) const

Definition at line 36 of file Linear.cpp.

40{
41 if (auto* var_ptr = std::get_if<Variable>(&type))
42 {
43 return std::get<double>(variable_array[*var_ptr]);
44 }
45
46 if (auto* str_ptr = std::get_if<std::string>(&type))
47 {
48 if (*str_ptr == "t")
49 return t;
50
51 if (*str_ptr == "x")
52 return pos.getCoordinates().value()[0];
53
54 if (*str_ptr == "y")
55 return pos.getCoordinates().value()[1];
56
57 if (*str_ptr == "z")
58 return pos.getCoordinates().value()[2];
59
60 OGS_FATAL("Unknown independent variable {:s} for a linear property.",
61 *str_ptr)
62 }
63
65 "Could not convert independent_variable neither to a Variable nor "
66 "to a std::string.");
67}
#define OGS_FATAL(...)
Definition Error.h:26

References ParameterLib::SpatialPosition::getCoordinates(), OGS_FATAL, and type.

Referenced by valueClamped().

Member Data Documentation

◆ max

std::optional<double> MaterialPropertyLib::IndependentVariable::max

Definition at line 24 of file Linear.h.

Referenced by valueClamped().

◆ min

std::optional<double> MaterialPropertyLib::IndependentVariable::min

Definition at line 23 of file Linear.h.

Referenced by valueClamped().

◆ reference_condition

VariableType MaterialPropertyLib::IndependentVariable::reference_condition

Definition at line 21 of file Linear.h.

◆ slope

VariableType MaterialPropertyLib::IndependentVariable::slope

Definition at line 22 of file Linear.h.

◆ type

StringOrVariable MaterialPropertyLib::IndependentVariable::type

Definition at line 20 of file Linear.h.

Referenced by valueUnclamped().


The documentation for this struct was generated from the following files: