Loading [MathJax]/extensions/tex2jax.js
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 30 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 33 of file NodeAdjacencyTable.h.

33{ createTable(mesh); }
void createTable(Mesh const &mesh)

References createTable().

Member Function Documentation

◆ createTable()

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

Definition at line 48 of file NodeAdjacencyTable.h.

49 {
50 _data.resize(mesh.getNumberOfNodes());
51
52 auto const& connections =
54 for (auto const node_id : mesh.getNodes() | MeshLib::views::ids)
55 {
56 auto const& connected_nodes = connections[node_id];
57 std::vector<std::size_t>& row = _data[node_id];
58 row.reserve(connected_nodes.size());
59 std::transform(connected_nodes.cbegin(), connected_nodes.cend(),
60 std::back_inserter(row),
61 [](Node const* const n) { return n->getID(); });
62 }
63 }
std::vector< std::size_t > getNodes(GeoLib::Point const &pnt, std::vector< MeshLib::Node * > const &nodes, MeshLib::PropertyVector< int > const &mat_ids, std::pair< int, int > const &mat_limits, std::pair< double, double > const &elevation_limits, MeshLib::Mesh const &mesh)
std::vector< std::vector< std::size_t > > _data
constexpr ranges::views::view_closure ids
For an element of a range view return its id.
Definition Mesh.h:227
std::vector< std::vector< Node * > > calculateNodesConnectedByElements(Mesh const &mesh)
Definition Mesh.cpp:308

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

Referenced by NodeAdjacencyTable().

◆ getAdjacentNodes()

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

Definition at line 42 of file NodeAdjacencyTable.h.

44 {
45 return _data[node_id];
46 }

References _data.

◆ getNodeDegree()

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

Definition at line 37 of file NodeAdjacencyTable.h.

38 {
39 return _data[node_id].size();
40 }

References _data.

◆ size()

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

Definition at line 35 of file NodeAdjacencyTable.h.

35{ return _data.size(); }

References _data.

Member Data Documentation

◆ _data

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

Definition at line 66 of file NodeAdjacencyTable.h.

Referenced by createTable(), getAdjacentNodes(), getNodeDegree(), and size().


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