OGS
SpatialPosition.h
Go to the documentation of this file.
1 
11 #pragma once
12 
13 #include <optional>
14 
15 #include "MathLib/TemplatePoint.h"
16 
17 namespace ParameterLib
18 {
27 {
28 public:
29  SpatialPosition() = default;
30 
32  std::optional<std::size_t> const& node_id,
33  std::optional<std::size_t> const& element_id,
34  std::optional<unsigned> const& integration_point,
35  std::optional<MathLib::TemplatePoint<double, 3>> const& coordinates)
36  : _node_id(node_id),
37  _element_id(element_id),
38  _integration_point(integration_point),
39  _coordinates(coordinates)
40  {
41  }
42 
43  std::optional<std::size_t> getNodeID() const { return _node_id; }
44  std::optional<std::size_t> getElementID() const { return _element_id; }
45  std::optional<unsigned> getIntegrationPoint() const
46  {
47  return _integration_point;
48  }
49  std::optional<MathLib::TemplatePoint<double, 3>> const& getCoordinates()
50  const
51  {
52  return _coordinates;
53  }
54 
55  void setNodeID(std::size_t node_id)
56  {
57  clear();
58  _node_id = node_id;
59  }
60 
61  void setElementID(std::size_t element_id)
62  {
63  clear();
64  _element_id = element_id;
65  }
66 
67  void setIntegrationPoint(unsigned integration_point)
68  {
69  assert(_element_id);
70  _integration_point = integration_point;
71  }
72 
74  {
75  _coordinates = coordinates;
76  }
77 
78  void setAll(
79  std::optional<std::size_t> const& node_id,
80  std::optional<std::size_t> const& element_id,
81  std::optional<unsigned> const& integration_point,
82  std::optional<MathLib::TemplatePoint<double, 3>> const& coordinates)
83  {
84  _node_id = node_id;
85  _element_id = element_id;
86  _integration_point = integration_point;
87  _coordinates = coordinates;
88  }
89 
90  void clear()
91  {
92  _node_id = std::nullopt;
93  _element_id = std::nullopt;
94  _integration_point = std::nullopt;
95  _coordinates = std::nullopt;
96  }
97 
98 private:
99  std::optional<std::size_t> _node_id;
100  std::optional<std::size_t> _element_id;
101  std::optional<unsigned> _integration_point;
102  std::optional<MathLib::TemplatePoint<double, 3>> _coordinates;
103 };
104 
105 } // namespace ParameterLib
Definition of the TemplatePoint class.
std::optional< unsigned > _integration_point
void setAll(std::optional< std::size_t > const &node_id, std::optional< std::size_t > const &element_id, std::optional< unsigned > const &integration_point, std::optional< MathLib::TemplatePoint< double, 3 >> const &coordinates)
std::optional< MathLib::TemplatePoint< double, 3 > > const & getCoordinates() const
std::optional< MathLib::TemplatePoint< double, 3 > > _coordinates
std::optional< std::size_t > getElementID() const
std::optional< std::size_t > getNodeID() const
std::optional< unsigned > getIntegrationPoint() const
void setNodeID(std::size_t node_id)
SpatialPosition(std::optional< std::size_t > const &node_id, std::optional< std::size_t > const &element_id, std::optional< unsigned > const &integration_point, std::optional< MathLib::TemplatePoint< double, 3 >> const &coordinates)
void setElementID(std::size_t element_id)
std::optional< std::size_t > _node_id
std::optional< std::size_t > _element_id
void setCoordinates(MathLib::TemplatePoint< double, 3 > const &coordinates)
void setIntegrationPoint(unsigned integration_point)