OGS
ParameterLib::ParameterBase Struct Referenceabstract

Detailed Description

Base class for all parameters, not an interface class. This avoids using of void* when storing parameters and convenient destruction. Its property name helps addressing the right parameter.

Definition at line 40 of file ParameterLib/Parameter.h.

#include <Parameter.h>

Inheritance diagram for ParameterLib::ParameterBase:
[legend]
Collaboration diagram for ParameterLib::ParameterBase:
[legend]

Public Member Functions

 ParameterBase (std::string name_, MeshLib::Mesh const *mesh=nullptr)
virtual ~ParameterBase ()=default
virtual bool isTimeDependent () const =0
void setCoordinateSystem (CoordinateSystem const &coordinate_system)
virtual void initialize (std::vector< std::unique_ptr< ParameterBase > > const &)
MeshLib::Mesh const * mesh () const

Public Attributes

std::string const name

Protected Member Functions

std::vector< double > rotateWithCoordinateSystem (std::vector< double > const &values, SpatialPosition const &pos) const

Protected Attributes

std::optional< CoordinateSystem_coordinate_system
MeshLib::Mesh const * _mesh

Constructor & Destructor Documentation

◆ ParameterBase()

ParameterLib::ParameterBase::ParameterBase ( std::string name_,
MeshLib::Mesh const * mesh = nullptr )
inlineexplicit

Definition at line 42 of file ParameterLib/Parameter.h.

44 : name(std::move(name_)), _mesh(mesh)
45 {
46 }
MeshLib::Mesh const * mesh() const

References _mesh, mesh(), and name.

◆ ~ParameterBase()

virtual ParameterLib::ParameterBase::~ParameterBase ( )
virtualdefault

Member Function Documentation

◆ initialize()

virtual void ParameterLib::ParameterBase::initialize ( std::vector< std::unique_ptr< ParameterBase > > const & )
inlinevirtual

Parameters might depend on each other; this method allows to set up the dependencies between parameters after they have been constructed.

Reimplemented in ParameterLib::CurveScaledParameter< T >, and ParameterLib::TimeDependentHeterogeneousParameter.

Definition at line 59 of file ParameterLib/Parameter.h.

61 {
62 }

◆ isTimeDependent()

◆ mesh()

◆ rotateWithCoordinateSystem()

std::vector< double > ParameterLib::ParameterBase::rotateWithCoordinateSystem ( std::vector< double > const & values,
SpatialPosition const & pos ) const
inlineprotected

Definition at line 69 of file ParameterLib/Parameter.h.

71 {
72 assert(!!_coordinate_system); // It is checked before calling this
73 // function.
74
75 // Don't rotate isotropic/scalar values.
76 if (values.size() == 1)
77 {
78 return {values[0]};
79 }
80 if (values.size() == 2)
81 {
82 auto const result =
83 _coordinate_system->rotateDiagonalTensor<2>(values, pos);
84 return {result(0, 0), result(0, 1), result(1, 0), result(1, 1)};
85 }
86 if (values.size() == 3)
87 {
88 auto const result =
89 _coordinate_system->rotateDiagonalTensor<3>(values, pos);
90 return {
91 result(0, 0), result(0, 1), result(0, 2),
92 result(1, 0), result(1, 1), result(1, 2),
93 result(2, 0), result(2, 1), result(2, 2),
94 };
95 }
96 if (values.size() == 4)
97 {
98 auto const result =
99 _coordinate_system->rotateTensor<2>(values, pos);
100 return {result(0, 0), result(0, 1), result(1, 0), result(1, 1)};
101 }
102 if (values.size() == 9)
103 {
104 auto const result =
105 _coordinate_system->rotateTensor<3>(values, pos);
106 return {
107 result(0, 0), result(0, 1), result(0, 2),
108 result(1, 0), result(1, 1), result(1, 2),
109 result(2, 0), result(2, 1), result(2, 2),
110 };
111 }
112 OGS_FATAL(
113 "Coordinate transformation for a {:d}-component parameter is not "
114 "implemented.",
115 values.size());
116 }
#define OGS_FATAL(...)
Definition Error.h:19
std::optional< CoordinateSystem > _coordinate_system

References _coordinate_system, and OGS_FATAL.

Referenced by ParameterLib::ConstantParameter< T >::operator()(), ParameterLib::FunctionParameter< T >::operator()(), ParameterLib::GroupBasedParameter< T, MeshItemType >::operator()(), ParameterLib::MeshElementParameter< T >::operator()(), ParameterLib::MeshNodeParameter< T >::operator()(), and ParameterLib::RandomFieldMeshElementParameter< T >::operator()().

◆ setCoordinateSystem()

void ParameterLib::ParameterBase::setCoordinateSystem ( CoordinateSystem const & coordinate_system)
inline

Definition at line 52 of file ParameterLib/Parameter.h.

53 {
54 _coordinate_system = coordinate_system;
55 }

References _coordinate_system.

Member Data Documentation

◆ _coordinate_system

◆ _mesh

MeshLib::Mesh const* ParameterLib::ParameterBase::_mesh
protected

A mesh on which the parameter is defined. Some parameters might be mesh-independent.

Definition at line 123 of file ParameterLib/Parameter.h.

Referenced by ParameterBase(), ParameterLib::CurveScaledParameter< T >::initialize(), and mesh().

◆ name


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