OGS
NumLib::MeshComponentMap Class Referencefinal

Detailed Description

Multidirectional mapping between mesh entities and degrees of freedom.

Definition at line 29 of file MeshComponentMap.h.

#include <MeshComponentMap.h>

Public Types

using Location = MeshLib::Location
 

Public Member Functions

 MeshComponentMap (std::vector< MeshLib::MeshSubset > const &components, ComponentOrder order)
 
MeshComponentMap getSubset (std::vector< MeshLib::MeshSubset > const &bulk_mesh_subsets, MeshLib::MeshSubset const &new_mesh_subset, std::vector< int > const &new_global_component_ids) const
 
std::size_t dofSizeWithGhosts () const
 The number of dofs including the those located in the ghost nodes. More...
 
std::vector< int > getComponentIDs (const Location &l) const
 
GlobalIndexType getGlobalIndex (Location const &l, int const comp_id) const
 
std::vector< GlobalIndexTypegetGlobalIndices (const Location &l) const
 
std::vector< GlobalIndexTypegetGlobalIndicesByLocation (const std::vector< Location > &ls) const
 
std::vector< GlobalIndexTypegetGlobalIndicesByComponent (const std::vector< Location > &ls) const
 
std::size_t dofSizeWithoutGhosts () const
 
std::vector< GlobalIndexType > const & getGhostIndices () const
 Get ghost indices (for DDC). More...
 
GlobalIndexType getLocalIndex (Location const &l, int const comp_id, std::size_t const range_begin, std::size_t const range_end) const
 
const detail::ComponentGlobalIndexDictgetDictionary () const
 

Static Public Attributes

static NUMLIB_EXPORT GlobalIndexType const nop
 

Private Member Functions

 MeshComponentMap (detail::ComponentGlobalIndexDict &dict)
 Private constructor used by internally created mesh component maps. More...
 
detail::Line getLine (Location const &l, int const comp_id) const
 
void renumberByLocation (GlobalIndexType offset=0)
 
void createSerialMeshComponentMap (std::vector< MeshLib::MeshSubset > const &components, ComponentOrder order)
 
void createParallelMeshComponentMap (std::vector< MeshLib::MeshSubset > const &components, ComponentOrder order)
 

Private Attributes

detail::ComponentGlobalIndexDict _dict
 
std::size_t _num_local_dof = 0
 
std::size_t _num_global_dof = 0
 Number of global unknowns. Used internally only. More...
 
std::vector< GlobalIndexType_ghosts_indices
 Global ID for ghost entries. More...
 

Friends

std::ostream & operator<< (std::ostream &os, MeshComponentMap const &m)
 

Member Typedef Documentation

◆ Location

Constructor & Destructor Documentation

◆ MeshComponentMap() [1/2]

NumLib::MeshComponentMap::MeshComponentMap ( std::vector< MeshLib::MeshSubset > const &  components,
ComponentOrder  order 
)
Parameters
componentsa vector of components
ordertype of ordering values in a vector

Definition at line 30 of file MeshComponentMap.cpp.

32 {
33  // Use PETSc with single thread
34  const MeshLib::NodePartitionedMesh& partitioned_mesh =
35  static_cast<const MeshLib::NodePartitionedMesh&>(
36  components[0].getMesh());
37  if (partitioned_mesh.isForSingleThread())
38  {
39  createSerialMeshComponentMap(components, order);
40  return;
41  }
42  else
43  {
44  createParallelMeshComponentMap(components, order);
45  }
46 }
void createParallelMeshComponentMap(std::vector< MeshLib::MeshSubset > const &components, ComponentOrder order)
void createSerialMeshComponentMap(std::vector< MeshLib::MeshSubset > const &components, ComponentOrder order)

References MeshLib::NodePartitionedMesh::isForSingleThread().

◆ MeshComponentMap() [2/2]

NumLib::MeshComponentMap::MeshComponentMap ( detail::ComponentGlobalIndexDict dict)
inlineexplicitprivate

Private constructor used by internally created mesh component maps.

Definition at line 159 of file MeshComponentMap.h.

160  : _dict(dict)
161  {
162  }
detail::ComponentGlobalIndexDict _dict

Member Function Documentation

◆ createParallelMeshComponentMap()

void NumLib::MeshComponentMap::createParallelMeshComponentMap ( std::vector< MeshLib::MeshSubset > const &  components,
ComponentOrder  order 
)
private
Parameters
componentsa vector of components
ordertype of ordering values in a vector

Definition at line 325 of file MeshComponentMap.cpp.

327 {
328  if (order != ComponentOrder::BY_LOCATION)
329  {
330  // Not allowed in parallel case since this is not suitable to
331  // arrange non ghost entries of a partition within
332  // a rank in the parallel computing.
333  OGS_FATAL(
334  "Global index in the system of equations can only be numbered by "
335  "the order type of ComponentOrder::BY_LOCATION");
336  }
337 
338  // get number of unknowns
339  GlobalIndexType num_unknowns = 0;
340  for (auto const& c : components)
341  {
342  const MeshLib::NodePartitionedMesh& partitioned_mesh =
343  static_cast<const MeshLib::NodePartitionedMesh&>(c.getMesh());
344  num_unknowns += partitioned_mesh.getNumberOfGlobalNodes();
345  }
346 
347  // construct dict (and here we number global_index by component type)
348  int comp_id = 0;
349  _num_global_dof = 0;
350  _num_local_dof = 0;
351  for (auto const& c : components)
352  {
353  assert(dynamic_cast<MeshLib::NodePartitionedMesh const*>(
354  &c.getMesh()) != nullptr);
355  std::size_t const mesh_id = c.getMeshID();
356  const MeshLib::NodePartitionedMesh& partitioned_mesh =
357  static_cast<const MeshLib::NodePartitionedMesh&>(c.getMesh());
358 
359  // mesh items are ordered first by node, cell, ....
360  for (std::size_t j = 0; j < c.getNumberOfNodes(); j++)
361  {
362  GlobalIndexType global_index = static_cast<GlobalIndexType>(
363  components.size() * partitioned_mesh.getGlobalNodeID(j) +
364  comp_id);
365  const bool is_ghost = partitioned_mesh.isGhostNode(
366  partitioned_mesh.getNode(j)->getID());
367  if (is_ghost)
368  {
369  _ghosts_indices.push_back(global_index);
370  global_index = -global_index;
371  // If the ghost entry has an index of 0,
372  // its index is set to the negative value of unknowns.
373  if (global_index == 0)
374  {
375  global_index = -num_unknowns;
376  }
377  }
378  else
379  {
380  _num_local_dof++;
381  }
382 
383  _dict.insert(Line(Location(mesh_id, MeshLib::MeshItemType::Node, j),
384  comp_id, global_index));
385  }
386 
387  _num_global_dof += partitioned_mesh.getNumberOfGlobalNodes();
388  comp_id++;
389  }
390 }
#define OGS_FATAL(...)
Definition: Error.h:26
GlobalMatrix::IndexType GlobalIndexType
std::size_t getID() const
Definition: Point3dWithID.h:62
const Node * getNode(std::size_t idx) const
Get the node with the given index.
Definition: Mesh.h:74
bool isGhostNode(const std::size_t node_id) const
Check whether a node with ID of node_id is a ghost node.
std::size_t getGlobalNodeID(const std::size_t node_id) const
Get the global node ID of a node with its local ID.
std::size_t getNumberOfGlobalNodes() const
Get the number of all nodes of the global mesh.
MeshLib::Location Location
std::size_t _num_global_dof
Number of global unknowns. Used internally only.
std::vector< GlobalIndexType > _ghosts_indices
Global ID for ghost entries.
TemplateElement< MeshLib::LineRule2 > Line
Definition: Line.h:25
@ BY_LOCATION
Ordering data by spatial location.

References NumLib::BY_LOCATION, MaterialPropertyLib::c, MeshLib::NodePartitionedMesh::getGlobalNodeID(), MathLib::Point3dWithID::getID(), MeshLib::Mesh::getNode(), MeshLib::NodePartitionedMesh::getNumberOfGlobalNodes(), MeshLib::NodePartitionedMesh::isGhostNode(), MeshLib::Node, and OGS_FATAL.

◆ createSerialMeshComponentMap()

void NumLib::MeshComponentMap::createSerialMeshComponentMap ( std::vector< MeshLib::MeshSubset > const &  components,
ComponentOrder  order 
)
private
Parameters
componentsa vector of components
ordertype of ordering values in a vector

Definition at line 298 of file MeshComponentMap.cpp.

300 {
301  // construct dict (and here we number global_index by component type)
302  GlobalIndexType global_index = 0;
303  int comp_id = 0;
304  for (auto const& c : components)
305  {
306  std::size_t const mesh_id = c.getMeshID();
307  // mesh items are ordered first by node, cell, ....
308  for (std::size_t j = 0; j < c.getNumberOfNodes(); j++)
309  {
310  _dict.insert(Line(
311  Location(mesh_id, MeshLib::MeshItemType::Node, c.getNodeID(j)),
312  comp_id, global_index++));
313  }
314  comp_id++;
315  }
316  _num_local_dof = _dict.size();
317 
318  if (order == ComponentOrder::BY_LOCATION)
319  {
321  }
322 }
void renumberByLocation(GlobalIndexType offset=0)

References NumLib::BY_LOCATION, MaterialPropertyLib::c, and MeshLib::Node.

◆ dofSizeWithGhosts()

std::size_t NumLib::MeshComponentMap::dofSizeWithGhosts ( ) const
inline

The number of dofs including the those located in the ghost nodes.

Definition at line 58 of file MeshComponentMap.h.

58 { return _dict.size(); }

References _dict.

Referenced by NumLib::LocalToGlobalIndexMap::dofSizeWithGhosts().

◆ dofSizeWithoutGhosts()

std::size_t NumLib::MeshComponentMap::dofSizeWithoutGhosts ( ) const
inline

Get the number of local unknowns excluding those associated with ghost nodes (for DDC with node-wise mesh partitioning).

Definition at line 121 of file MeshComponentMap.h.

121 { return _num_local_dof; }

References _num_local_dof.

Referenced by NumLib::LocalToGlobalIndexMap::dofSizeWithoutGhosts().

◆ getComponentIDs()

std::vector< int > NumLib::MeshComponentMap::getComponentIDs ( const Location l) const

Component ids at given location l.

Location ComponentID
l comp_id_1
l ...
l comp_id_n

Definition at line 156 of file MeshComponentMap.cpp.

157 {
158  auto const& m = _dict.get<ByLocation>();
159  auto const p = m.equal_range(Line(l));
160  std::vector<int> vec_compID;
161  for (auto itr = p.first; itr != p.second; ++itr)
162  {
163  vec_compID.push_back(itr->comp_id);
164  }
165  return vec_compID;
166 }

◆ getDictionary()

const detail::ComponentGlobalIndexDict& NumLib::MeshComponentMap::getDictionary ( ) const
inline

Definition at line 143 of file MeshComponentMap.h.

144  {
145  return _dict;
146  }

References _dict.

◆ getGhostIndices()

std::vector<GlobalIndexType> const& NumLib::MeshComponentMap::getGhostIndices ( ) const
inline

Get ghost indices (for DDC).

Definition at line 124 of file MeshComponentMap.h.

125  {
126  return _ghosts_indices;
127  }

References _ghosts_indices.

Referenced by NumLib::LocalToGlobalIndexMap::getGhostIndices().

◆ getGlobalIndex()

GlobalIndexType NumLib::MeshComponentMap::getGlobalIndex ( Location const &  l,
int const  comp_id 
) const

Global index of the given component id at given location l.

Location ComponentID GlobalIndex
l comp_id gi

Definition at line 176 of file MeshComponentMap.cpp.

178 {
179  auto const& m = _dict.get<ByLocationAndComponent>();
180  auto const itr = m.find(Line(l, comp_id));
181  return itr != m.end() ? itr->global_index : nop;
182 }
static NUMLIB_EXPORT GlobalIndexType const nop

Referenced by NumLib::LocalToGlobalIndexMap::findGlobalIndices(), NumLib::LocalToGlobalIndexMap::findGlobalIndicesWithElementID(), and NumLib::LocalToGlobalIndexMap::getGlobalIndex().

◆ getGlobalIndices()

std::vector< GlobalIndexType > NumLib::MeshComponentMap::getGlobalIndices ( const Location l) const

Global indices for all components at the given location l.

If there is more than one component at the given location, the function returns a vector containing global indices for each component.

Location ComponentID GlobalIndex
l comp_id_1 gi23
... ... ...
l comp_id_k gi45

Definition at line 184 of file MeshComponentMap.cpp.

186 {
187  auto const& m = _dict.get<ByLocation>();
188  auto const p = m.equal_range(Line(l));
189  std::vector<GlobalIndexType> global_indices;
190  for (auto itr = p.first; itr != p.second; ++itr)
191  {
192  global_indices.push_back(itr->global_index);
193  }
194  return global_indices;
195 }

Referenced by NumLib::LocalToGlobalIndexMap::getGlobalIndices().

◆ getGlobalIndicesByComponent()

std::vector< GlobalIndexType > NumLib::MeshComponentMap::getGlobalIndicesByComponent ( const std::vector< Location > &  ls) const

Global indices for all components at all given locations ls ordered by component ids. The return list is sorted first by component ids.

Location ComponentID GlobalIndex
l_1 comp_id_1 gi23
... ... ...
l_k comp_id_1 gi45
l_1 comp_id_2 gi46
... ... ...
l_m comp_id_2 gi78
... ... ...
l_n comp_id_n gi89

Definition at line 219 of file MeshComponentMap.cpp.

221 {
222  // vector of (Component, global Index) pairs.
223  using CIPair = std::pair<int, GlobalIndexType>;
224  std::vector<CIPair> pairs;
225  pairs.reserve(ls.size());
226 
227  // Create a sub dictionary containing all lines with location from ls.
228  auto const& m = _dict.get<ByLocation>();
229  for (const auto& l : ls)
230  {
231  auto const p = m.equal_range(Line(l));
232  for (auto itr = p.first; itr != p.second; ++itr)
233  {
234  pairs.emplace_back(itr->comp_id, itr->global_index);
235  }
236  }
237 
238  auto CIPairLess = [](CIPair const& a, CIPair const& b)
239  { return a.first < b.first; };
240 
241  // Create vector of global indices from sub dictionary sorting by component.
242  if (!std::is_sorted(pairs.begin(), pairs.end(), CIPairLess))
243  {
244  std::stable_sort(pairs.begin(), pairs.end(), CIPairLess);
245  }
246 
247  std::vector<GlobalIndexType> global_indices;
248  global_indices.reserve(pairs.size());
249  transform(cbegin(pairs), cend(pairs), back_inserter(global_indices),
250  [&](const auto& pair) { return pair.second; });
251 
252  return global_indices;
253 }

◆ getGlobalIndicesByLocation()

std::vector< GlobalIndexType > NumLib::MeshComponentMap::getGlobalIndicesByLocation ( const std::vector< Location > &  ls) const

Global indices for all components at all given locations ls ordered by location. The return list is sorted first by location.

Location ComponentID GlobalIndex
l_1 comp_id_1 gi23
... ... ...
l_1 comp_id_k gi45
l_2 comp_id_1 gi46
... ... ...
l_2 comp_id_m gi67
... ... ...
l_n comp_id_n gi78

Definition at line 197 of file MeshComponentMap.cpp.

199 {
200  // Create vector of global indices sorted by location containing all
201  // locations given in ls parameter.
202 
203  std::vector<GlobalIndexType> global_indices;
204  global_indices.reserve(ls.size());
205 
206  auto const& m = _dict.get<ByLocation>();
207  for (const auto& l : ls)
208  {
209  auto const p = m.equal_range(Line(l));
210  for (auto itr = p.first; itr != p.second; ++itr)
211  {
212  global_indices.push_back(itr->global_index);
213  }
214  }
215 
216  return global_indices;
217 }

◆ getLine()

Line NumLib::MeshComponentMap::getLine ( Location const &  l,
int const  comp_id 
) const
private

Looks up if a line is already stored in the dictionary.

Attention
The line for the location l and component id must exist, the behaviour is undefined otherwise.
Returns
a copy of the line.

Definition at line 168 of file MeshComponentMap.cpp.

169 {
170  auto const& m = _dict.get<ByLocationAndComponent>();
171  auto const itr = m.find(Line(l, comp_id));
172  assert(itr != m.end()); // The line must exist in the current dictionary.
173  return *itr;
174 }

◆ getLocalIndex()

GlobalIndexType NumLib::MeshComponentMap::getLocalIndex ( Location const &  l,
int const  comp_id,
std::size_t const  range_begin,
std::size_t const  range_end 
) const

Computes the index in a local (for DDC) vector for a given location and component. When domain decomposition is not used, it is equal to getGlobalIndex(). The range is needed to compute the offset for non-ghost locations and also to map ghost locations.

Definition at line 255 of file MeshComponentMap.cpp.

260 {
261  GlobalIndexType const global_index = getGlobalIndex(l, comp_id);
262 #ifndef USE_PETSC
263  (void)range_begin;
264  (void)range_end;
265  return global_index;
266 #else
267  if (global_index >= 0) // non-ghost location.
268  return global_index - range_begin;
269 
270  //
271  // For a ghost location look up the global index in ghost indices.
272  //
273 
274  // A special case for a ghost location with global index equal to the size
275  // of the local vector:
276  GlobalIndexType const real_global_index =
277  (-global_index == static_cast<GlobalIndexType>(_num_global_dof))
278  ? 0
279  : -global_index;
280 
281  // TODO Find in ghost indices is O(n^2/2) for n being the length of
282  // _ghosts_indices. Providing an inverted table would be faster.
283  auto const ghost_index_it = std::find(
284  _ghosts_indices.begin(), _ghosts_indices.end(), real_global_index);
285  if (ghost_index_it == _ghosts_indices.end())
286  {
287  OGS_FATAL("index {:d} not found in ghost_indices", real_global_index);
288  }
289 
290  // Using std::distance on a std::vector is O(1). As long as _ghost_indices
291  // remains of std::vector type, this shall be fast.
292  return range_end - range_begin +
293  std::distance(_ghosts_indices.begin(), ghost_index_it);
294 
295 #endif
296 }
GlobalIndexType getGlobalIndex(Location const &l, int const comp_id) const

References OGS_FATAL.

Referenced by NumLib::LocalToGlobalIndexMap::getLocalIndex().

◆ getSubset()

MeshComponentMap NumLib::MeshComponentMap::getSubset ( std::vector< MeshLib::MeshSubset > const &  bulk_mesh_subsets,
MeshLib::MeshSubset const &  new_mesh_subset,
std::vector< int > const &  new_global_component_ids 
) const

Creates a multi-component subset of the current mesh component map. The order (BY_LOCATION/BY_COMPONENT) of components is the same as of the current map.

Attention
For each component the same new_mesh_subset will be used.
Parameters
bulk_mesh_subsetscomponents that should remain in the created subset, one for each global component.
new_mesh_subsetThe constraining mesh subset with a mapping of node ids to the bulk mesh nodes.
new_global_component_idsThe components for which the bulk_mesh_subsets should be intersected with the new_mesh_subset.

Definition at line 55 of file MeshComponentMap.cpp.

59 {
60  { // Testing first an assumption met later in the code that the meshes for
61  // all the bulk_mesh_subsets are equal.
62  auto const first_mismatch =
63  std::adjacent_find(begin(bulk_mesh_subsets), end(bulk_mesh_subsets),
64  [](auto const& a, auto const& b)
65  { return a.getMeshID() != b.getMeshID(); });
66  if (first_mismatch != end(bulk_mesh_subsets))
67  {
68  OGS_FATAL(
69  "Assumption in the MeshComponentMap violated. Expecting all of "
70  "mesh ids to be the same, but it is not true for "
71  "the mesh '{:s}' with id {:d}.",
72  first_mismatch->getMesh().getName(),
73  first_mismatch->getMeshID());
74  }
75  }
76 
77  // Mapping of the nodes in the new_mesh_subset to the bulk mesh nodes
78  auto const& new_mesh_properties = new_mesh_subset.getMesh().getProperties();
79  if (!new_mesh_properties.template existsPropertyVector<std::size_t>(
80  "bulk_node_ids"))
81  {
82  OGS_FATAL(
83  "Bulk node ids map expected in the construction of the mesh "
84  "subset.");
85  }
86  auto const& bulk_node_ids_map =
87  *new_mesh_properties.template getPropertyVector<std::size_t>(
88  "bulk_node_ids", MeshLib::MeshItemType::Node, 1);
89 
90  // New dictionary for the subset.
91  ComponentGlobalIndexDict subset_dict;
92 
93  std::size_t const new_mesh_id = new_mesh_subset.getMeshID();
94  // Lookup the locations in the current mesh component map and
95  // insert the full lines into the new subset dictionary.
96  for (auto* const node : new_mesh_subset.getNodes())
97  {
98  auto const node_id = node->getID();
99  bool const is_base_node = MeshLib::isBaseNode(
100  *node,
101  new_mesh_subset.getMesh().getElementsConnectedToNode(node_id));
102 
103  MeshLib::Location const new_location{
104  new_mesh_id, MeshLib::MeshItemType::Node, node_id};
105 
106  // Assuming the meshes for all the bulk_mesh_subsets are equal.
107  MeshLib::Location const bulk_location{
108  bulk_mesh_subsets.front().getMeshID(), MeshLib::MeshItemType::Node,
109  bulk_node_ids_map[node_id]};
110 
111  for (auto component_id : new_global_component_ids)
112  {
113  auto const global_index =
114  getGlobalIndex(bulk_location, component_id);
115  if (global_index == nop)
116  {
117  if (is_base_node)
118  {
119  OGS_FATAL(
120  "Could not find a global index for global component "
121  "{:d} for the mesh '{:s}', node {:d}, in the "
122  "corresponding bulk mesh '{:s}' and node {:d}. This "
123  "happens because the boundary mesh is larger then the "
124  "definition region of the bulk component, usually "
125  "because the geometry for the boundary condition is "
126  "too large.",
127  component_id,
128  new_mesh_subset.getMesh().getName(),
129  node_id,
130  bulk_mesh_subsets.front().getMesh().getName(),
131  bulk_node_ids_map[node_id]);
132  }
133  continue;
134  }
135  subset_dict.insert({new_location, component_id, global_index});
136  }
137  }
138 
139  return MeshComponentMap(subset_dict);
140 }
MeshComponentMap(std::vector< MeshLib::MeshSubset > const &components, ComponentOrder order)
bool isBaseNode(Node const &node, std::vector< Element const * > const &elements_connected_to_node)
Definition: Mesh.cpp:370
boost::multi_index::multi_index_container< Line, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ByLocationAndComponent >, boost::multi_index::identity< Line >, LineByLocationAndComponentComparator >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ByLocation >, boost::multi_index::identity< Line >, LineByLocationComparator >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ByComponent >, boost::multi_index::member< Line, int, &Line::comp_id > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ByGlobalIndex >, boost::multi_index::member< Line, GlobalIndexType, &Line::global_index > >> > ComponentGlobalIndexDict

References MeshLib::Mesh::getElementsConnectedToNode(), MeshLib::MeshSubset::getMesh(), MeshLib::MeshSubset::getMeshID(), MeshLib::Mesh::getName(), MeshLib::MeshSubset::getNodes(), MeshLib::Mesh::getProperties(), MeshLib::isBaseNode(), MeshLib::Node, and OGS_FATAL.

Referenced by NumLib::LocalToGlobalIndexMap::deriveBoundaryConstrainedMap().

◆ renumberByLocation()

void NumLib::MeshComponentMap::renumberByLocation ( GlobalIndexType  offset = 0)
private

Definition at line 142 of file MeshComponentMap.cpp.

143 {
144  GlobalIndexType global_index = offset;
145 
146  auto& m = _dict.get<ByLocation>(); // view as sorted by mesh item
147  for (auto itr_mesh_item = m.begin(); itr_mesh_item != m.end();
148  ++itr_mesh_item)
149  {
150  Line pos = *itr_mesh_item;
151  pos.global_index = global_index++;
152  m.replace(itr_mesh_item, pos);
153  }
154 }

References NumLib::detail::Line::global_index.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
MeshComponentMap const &  m 
)
friend

Definition at line 148 of file MeshComponentMap.h.

149  {
150  os << "Dictionary size: " << m._dict.size() << "\n";
151  for (auto l : m._dict)
152  os << l << "\n";
153  return os;
154  }

Member Data Documentation

◆ _dict

detail::ComponentGlobalIndexDict NumLib::MeshComponentMap::_dict
private

Definition at line 172 of file MeshComponentMap.h.

Referenced by dofSizeWithGhosts(), and getDictionary().

◆ _ghosts_indices

std::vector<GlobalIndexType> NumLib::MeshComponentMap::_ghosts_indices
private

Global ID for ghost entries.

Definition at line 184 of file MeshComponentMap.h.

Referenced by getGhostIndices().

◆ _num_global_dof

std::size_t NumLib::MeshComponentMap::_num_global_dof = 0
private

Number of global unknowns. Used internally only.

Definition at line 180 of file MeshComponentMap.h.

◆ _num_local_dof

std::size_t NumLib::MeshComponentMap::_num_local_dof = 0
private

Number of local unknowns excluding those associated with ghost nodes (for domain decomposition).

Definition at line 176 of file MeshComponentMap.h.

Referenced by dofSizeWithoutGhosts().

◆ nop


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