bitrl & cuberl Documentation
Simulation engine for reinforcement learning agents
Loading...
Searching...
No Matches
mesh_connectivity.h
Go to the documentation of this file.
1#ifndef MESH_CONNECTIVITY_H
2#define MESH_CONNECTIVITY_H
3
5#include "bitrl/bitrl_types.h"
6
7#include <iterator>
8#include <ostream>
9#include <vector>
10
11namespace bitrl
12{
13namespace utils
14{
15namespace geom
16{
17
21{
22
23 public:
24 typedef std::vector<uint_t>::iterator connectivity_iterator;
25 typedef std::vector<uint_t>::const_iterator const_connectivity_iterator;
26
28
33 explicit MeshConnectivity(uint_t n);
34
39 explicit MeshConnectivity(const std::vector<uint_t> &conn);
40
45
50
55 void assign_connections(const std::vector<uint_t> &connections);
56
60 void set_connectivity_size(uint_t size) { connections_.resize(size); }
61
66
71
76 void clear_connections() { connections_.clear(); }
77
81 void push_back(uint_t idx) { connections_.push_back(idx); }
82
86 uint_t operator[](uint_t i) const { return connections_[i]; }
87
91 uint_t size() const { return connections_.size(); }
92
96 bool empty() const { return connections_.empty(); }
97
102
106 std::ostream &print_connectivity_info(std::ostream &o) const;
107
108 connectivity_iterator connectivity_begin() { return connections_.begin(); }
109 connectivity_iterator connectivity_end() { return connections_.end(); }
110
111 const_connectivity_iterator connectivity_begin() const { return connections_.begin(); }
112 const_connectivity_iterator connectivity_end() const { return connections_.end(); }
113
114 private:
119 std::vector<uint_t> connections_;
120};
121
122inline MeshConnectivity::MeshConnectivity() : connections_() {}
123
124inline MeshConnectivity::MeshConnectivity(uint_t n) : connections_(n, bitrl::consts::INVALID_ID) {}
125
126inline MeshConnectivity::MeshConnectivity(const std::vector<uint_t> &conn) : connections_(conn) {}
127
128inline MeshConnectivity::MeshConnectivity(const MeshConnectivity &o) : connections_(o.connections_)
129{
130}
132{
133
134 if (this == &o)
135 {
136 return *this;
137 }
138
139 connections_.assign(o.connections_.begin(), o.connections_.end());
140 return *this;
141}
142
143inline void MeshConnectivity::assign_connections(const std::vector<uint_t> &connections)
144{
145
146 connections_.assign(connections.begin(), connections.end());
147}
148
149inline std::ostream &MeshConnectivity::print_connectivity_info(std::ostream &out) const
150{
151 std::copy(connections_.begin(), connections_.end(), std::ostream_iterator<uint_t>(out, "\n"));
152 return out;
153}
154
156{
157 if (i >= connections_.size())
158 {
159 throw std::logic_error("Invalid connection index: " + std::to_string(i) + " not in [0, " +
160 std::to_string(connections_.size()));
161 }
162
163 return connections_[i];
164}
165
166inline std::ostream &operator<<(std::ostream &out, const MeshConnectivity &connectivity)
167{
168
169 return connectivity.print_connectivity_info(out);
170}
171
172} // namespace geom
173
174} // namespace utils
175} // namespace bitrl
176#endif
MeshConnectivity class stores the various connectivities for a mesh object.
Definition mesh_connectivity.h:21
void set_connection(uint_t i, uint_t connection_idx)
Definition mesh_connectivity.h:65
std::vector< uint_t >::const_iterator const_connectivity_iterator
Definition mesh_connectivity.h:25
uint_t operator[](uint_t i) const
Definition mesh_connectivity.h:86
connectivity_iterator connectivity_end()
Definition mesh_connectivity.h:109
std::ostream & print_connectivity_info(std::ostream &o) const
Definition mesh_connectivity.h:149
void clear_connections()
Definition mesh_connectivity.h:76
connectivity_iterator connectivity_begin()
Definition mesh_connectivity.h:108
std::vector< uint_t >::iterator connectivity_iterator
Definition mesh_connectivity.h:24
void push_back(uint_t idx)
Definition mesh_connectivity.h:81
bool empty() const
Definition mesh_connectivity.h:96
uint_t connection_idx(uint_t i) const
Definition mesh_connectivity.h:155
MeshConnectivity & operator=(const MeshConnectivity &o)
Definition mesh_connectivity.h:131
uint_t size() const
Definition mesh_connectivity.h:91
const_connectivity_iterator connectivity_begin() const
Definition mesh_connectivity.h:111
void set_connectivity_size(uint_t size)
Definition mesh_connectivity.h:60
const_connectivity_iterator connectivity_end() const
Definition mesh_connectivity.h:112
void assign_connections(const std::vector< uint_t > &connections)
Definition mesh_connectivity.h:143
MeshConnectivity()
Definition mesh_connectivity.h:122
std::ostream & operator<<(std::ostream &out, const GeomPoint< spacedim, T > &p)
free functions that work on the GeomPoint<spacedim,T> class
Definition geom_point.h:413
OutT resolve(const std::string &name, const std::map< std::string, std::any > &input)
Definition std_map_utils.h:25
Definition bitrl_consts.h:14
std::size_t uint_t
uint_t
Definition bitrl_types.h:43