OGS
ParameterLib::MeshElementParameter< T > Struct Template Referencefinal

Detailed Description

template<typename T>
struct ParameterLib::MeshElementParameter< T >

A parameter represented by a mesh property vector.

Definition at line 18 of file MeshElementParameter.h.

#include <MeshElementParameter.h>

Inheritance diagram for ParameterLib::MeshElementParameter< T >:
[legend]
Collaboration diagram for ParameterLib::MeshElementParameter< T >:
[legend]

Public Member Functions

 MeshElementParameter (std::string const &name_, MeshLib::Mesh const &mesh, MeshLib::PropertyVector< T > const &property)
bool isTimeDependent () const override
int getNumberOfGlobalComponents () const override
std::vector< T > operator() (double const, SpatialPosition const &pos) const override
 Returns the parameter value at the given time and position.
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > getNodalValuesOnElement (MeshLib::Element const &element, double const t) const override
 Returns a matrix of values for all nodes of the given element.
Public Member Functions inherited from ParameterLib::Parameter< T >
 ~Parameter () override=default
 ParameterBase (std::string name_, MeshLib::Mesh const *mesh=nullptr)
Public Member Functions inherited from ParameterLib::ParameterBase
 ParameterBase (std::string name_, MeshLib::Mesh const *mesh=nullptr)
virtual ~ParameterBase ()=default
void setCoordinateSystem (CoordinateSystem const &coordinate_system)
virtual void initialize (std::vector< std::unique_ptr< ParameterBase > > const &)
MeshLib::Mesh const * mesh () const

Private Attributes

MeshLib::PropertyVector< T > const & _property

Additional Inherited Members

Public Attributes inherited from ParameterLib::ParameterBase
std::string const name
Protected Member Functions inherited from ParameterLib::ParameterBase
std::vector< double > rotateWithCoordinateSystem (std::vector< double > const &values, SpatialPosition const &pos) const
Protected Attributes inherited from ParameterLib::ParameterBase
std::optional< CoordinateSystem_coordinate_system
MeshLib::Mesh const * _mesh

Constructor & Destructor Documentation

◆ MeshElementParameter()

template<typename T>
ParameterLib::MeshElementParameter< T >::MeshElementParameter ( std::string const & name_,
MeshLib::Mesh const & mesh,
MeshLib::PropertyVector< T > const & property )
inline

Definition at line 20 of file MeshElementParameter.h.

24 {
25 }
A parameter represented by a mesh property vector.
MeshLib::PropertyVector< T > const & _property
MeshLib::Mesh const * mesh() const

References _property, and ParameterLib::ParameterBase::mesh().

Member Function Documentation

◆ getNodalValuesOnElement()

template<typename T>
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > ParameterLib::MeshElementParameter< T >::getNodalValuesOnElement ( MeshLib::Element const & element,
double const t ) const
inlineoverridevirtual

Returns a matrix of values for all nodes of the given element.

Reimplemented from ParameterLib::Parameter< T >.

Definition at line 59 of file MeshElementParameter.h.

61 {
62 auto const n_nodes = element.getNumberOfNodes();
65
66 // Column vector of values, copied for each node.
68 x_position.setElementID(element.getID());
69 auto const& values = this->operator()(t, x_position);
70 auto const row_values =
72 values.data(), values.size());
73 for (unsigned i = 0; i < n_nodes; ++i)
74 {
75 result.row(i) = row_values;
76 }
77 return result;
78 }
std::vector< T > operator()(double const, SpatialPosition const &pos) const override
Returns the parameter value at the given time and position.
int getNumberOfGlobalComponents() const override

References MeshLib::Element::getID(), getNumberOfGlobalComponents(), MeshLib::Element::getNumberOfNodes(), operator()(), and ParameterLib::SpatialPosition::setElementID().

◆ getNumberOfGlobalComponents()

template<typename T>
int ParameterLib::MeshElementParameter< T >::getNumberOfGlobalComponents ( ) const
inlineoverridevirtual

Returns the number of components this Parameter has at every position and point in time.

Implements ParameterLib::Parameter< T >.

Definition at line 29 of file MeshElementParameter.h.

30 {
31 return _property.getNumberOfGlobalComponents();
32 }

References _property.

Referenced by getNodalValuesOnElement().

◆ isTimeDependent()

template<typename T>
bool ParameterLib::MeshElementParameter< T >::isTimeDependent ( ) const
inlineoverridevirtual

Implements ParameterLib::ParameterBase.

Definition at line 27 of file MeshElementParameter.h.

27{ return false; }

◆ operator()()

template<typename T>
std::vector< T > ParameterLib::MeshElementParameter< T >::operator() ( double const t,
SpatialPosition const & pos ) const
inlineoverridevirtual

Returns the parameter value at the given time and position.

Implements ParameterLib::Parameter< T >.

Definition at line 34 of file MeshElementParameter.h.

36 {
37 auto const e = pos.getElementID();
38 if (!e)
39 {
41 "Trying to access a MeshElementParameter but the element id is "
42 "not specified.");
43 }
44 auto const num_comp = _property.getNumberOfGlobalComponents();
46 for (int c = 0; c < num_comp; ++c)
47 {
48 cache[c] = _property.getComponent(*e, c);
49 }
50
51 if (!this->_coordinate_system)
52 {
53 return cache;
54 }
55
57 }
#define OGS_FATAL(...)
Definition Error.h:19
std::vector< double > rotateWithCoordinateSystem(std::vector< double > const &values, SpatialPosition const &pos) const
std::optional< CoordinateSystem > _coordinate_system

References ParameterLib::ParameterBase::_coordinate_system, _property, ParameterLib::SpatialPosition::getElementID(), OGS_FATAL, and ParameterLib::ParameterBase::rotateWithCoordinateSystem().

Referenced by getNodalValuesOnElement().

Member Data Documentation

◆ _property

template<typename T>
MeshLib::PropertyVector<T> const& ParameterLib::MeshElementParameter< T >::_property
private

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