OGS
MeshLib::NodeAdjacencyTable Class Referencefinal

Detailed Description

Representation of topological node adjacency.

The topological sparsity pattern in the context of FEM is defined in terms of supports of the nodal functions. Especially, two nodes i and j are called adjacent if and only if there is a mesh element E including nodes i and j. This information is represented by the NodeAdjacenceTable.

The topological adjacency of nodes is created by MeshLib::calculateNodesConnectedByElements().

Definition at line 29 of file NodeAdjacencyTable.h.

#include <NodeAdjacencyTable.h>

Public Member Functions

 NodeAdjacencyTable (Mesh const &mesh)
 
std::size_t size () const
 
std::size_t getNodeDegree (std::size_t const node_id) const
 
std::vector< std::size_t > const & getAdjacentNodes (std::size_t const node_id) const
 
void createTable (Mesh const &mesh)
 

Private Attributes

std::vector< std::vector< std::size_t > > _data
 

Constructor & Destructor Documentation

◆ NodeAdjacencyTable()

MeshLib::NodeAdjacencyTable::NodeAdjacencyTable ( Mesh const &  mesh)
inlineexplicit

Definition at line 32 of file NodeAdjacencyTable.h.

33  {
34  _data.resize(mesh.getNodes().size());
35 
36  createTable(mesh);
37  }
void createTable(Mesh const &mesh)
std::vector< std::vector< std::size_t > > _data

References _data, createTable(), and MeshLib::Mesh::getNodes().

Member Function Documentation

◆ createTable()

void MeshLib::NodeAdjacencyTable::createTable ( Mesh const &  mesh)
inline

Definition at line 55 of file NodeAdjacencyTable.h.

56  {
57  auto const& nodes = mesh.getNodes();
58  if (_data.size() != nodes.size())
59  {
60  _data.resize(nodes.size());
61  }
62 
63  auto const& connections =
65  for (auto const* node : nodes)
66  {
67  auto const node_id = node->getID();
68  auto const& connected_nodes = connections[node_id];
69  std::vector<std::size_t>& row = _data[node_id];
70  row.reserve(connected_nodes.size());
71  std::transform(connected_nodes.cbegin(), connected_nodes.cend(),
72  std::back_inserter(row),
73  [](Node const* const n) { return n->getID(); });
74  }
75  }
std::vector< std::vector< Node * > > calculateNodesConnectedByElements(Mesh const &mesh)
Definition: Mesh.cpp:331

References _data, MeshLib::calculateNodesConnectedByElements(), and MeshLib::Mesh::getNodes().

Referenced by NodeAdjacencyTable().

◆ getAdjacentNodes()

std::vector<std::size_t> const& MeshLib::NodeAdjacencyTable::getAdjacentNodes ( std::size_t const  node_id) const
inline

Definition at line 49 of file NodeAdjacencyTable.h.

51  {
52  return _data[node_id];
53  }

References _data.

◆ getNodeDegree()

std::size_t MeshLib::NodeAdjacencyTable::getNodeDegree ( std::size_t const  node_id) const
inline

Definition at line 44 of file NodeAdjacencyTable.h.

45  {
46  return _data[node_id].size();
47  }

References _data.

◆ size()

std::size_t MeshLib::NodeAdjacencyTable::size ( ) const
inline

Definition at line 39 of file NodeAdjacencyTable.h.

40  {
41  return _data.size();
42  }

References _data.

Member Data Documentation

◆ _data

std::vector<std::vector<std::size_t> > MeshLib::NodeAdjacencyTable::_data
private

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