103 template <CepsUInt _Dim>
std::map< _Key, _Tp, _Compare, _Alloc > CepsMap
C++ map.
std::set< _Type, _Compare, _Alloc > CepsSet
C++ set.
std::vector< _Type, _Alloc > CepsVector
C++ vector.
std::make_unsigned_t< CepsInt > CepsUInt
Unsigned version on CepsInt.
CepsArray< _Type, 4U > CepsArray4
C++ array, 4 elements.
std::unordered_multimap< _Key, _Tp, _Hash, _KeyEqual, _Alloc > CepsMultiMap
C++ multimap.
Base class for other (big) CEPS classes. All classes can get a pointer to this base class and also co...
Class is used to compute a geometry (multiple meshes) partitioning.
CepsArray4< CepsUInt > m_nodeOffset
GeomNode offset.
CepsSet< CepsNodeGlobalIndex > m_haloNodes
Indices of local halo nodes.
CepsMap< CepsCellGlobalIndex, CepsSet< CepsCellGlobalIndex > > m_cellCellAdj
lists of adjacent cells
CepsVector< CepsReal > m_coords
GeomNode positions.
CepsUInt getDimensionByCellId(CepsUInt i) const
Get the correct dimension, deduced by cell id.
CepsSet< CepsCellGlobalIndex > m_markedCells
algorithmic flags
CepsMultiMap< CepsNodeGlobalIndex, CepsNodeGlobalIndex > m_coupledNodes
Links between meshes expressed with coupled nodes.
CepsArray4< CepsUInt > m_cellOffset
Cell offset.
GeometryPartitioner()=delete
Deleted constructor.
CepsVector< CepsInt > m_nodeIndices
Node indices for each cell (signed ints for lib compatibility)
void nodeAttribution(const CepsVector< CepsInt > &nodeOwnership)
Creates the lists of nodes in linked geometry according to partition.
virtual CepsUInt computePartition()=0
Calls the partitioning method specified in the Geometry.
CepsUInt getDimensionByNodeId(CepsUInt i) const
Get the correct dimension, deduced by node id.
CepsVector< CepsAttribute > m_cellAttr
Cells attributes for each cell.
CepsSet< CepsNodeGlobalIndex > m_ownedNodes
Indices of local nodes.
CepsVector< CepsChar > m_isBoundary
Indicates which cell is on the boundary.
CepsMap< CepsCellGlobalIndex, CepsMathVertex > m_cellBarycenters
For cells with 1 node on bdry.
void readMeshOnMaster()
Read the Mesh on master process before distribution.
CepsVector< CepsAttribute > m_nodeAttr
Attributes for each node.
CepsVector< CepsUInt > m_nodeIndicesOffset
Offset in m_nodeIndices array for each cell.
void buildCellAdjacency()
For each cell, stores its adjacent cells. (indices before partitioning)
CepsUInt m_nodeIndicesSize
Size of combined lists of nodes per cell.
void buildNodeAdjacency()
For each node, stores its adjacent nodes and cells. (indices before partitioning)
void addCellToMesh(CepsUInt index, CepsBool isOnBoundary, Mesh *mesh)
Create local simplex structures from geometrical data to fill meshes with.
CepsMap< CepsNodeGlobalIndex, CepsSet< CepsCellGlobalIndex > > m_nodeCellAdj
lists of adjacent cells
void broadcastMeshData()
Copies geometrical information from master on all other processes.
CepsVector< CepsUInt > m_nodeAttrOffset
Offset in m_nodeAttr array for each node.
Geometry * m_geom
Linked geometry to partition.
CepsUInt m_nbNodes
Number of nodes in all combined meshes.
CepsUInt m_cellAttrSize
Size of combined lists of attributes per cell.
CepsVector< CepsUInt > m_cellAttrOffset
Offset in m_cellAttr array for each cell.
void setUpHalo(const CepsVector< CepsInt > &nodeOwnership, const CepsVector< CepsInt > *cellOwnership=nullptr)
Register nodes in halo regions, and set up communication matrices of data in halos.
CepsUInt m_nbCells
Number of cells and boundary cells in all combined meshes.
CepsSet< CepsCellGlobalIndex > m_ownedCells
Indices of local cells and boundary cells.
~GeometryPartitioner() override
Destructor.
CepsUInt m_nodeAttrSize
Size of combined lists of attributes per node.
CepsMap< CepsNodeGlobalIndex, CepsSet< CepsNodeGlobalIndex > > m_nodeNodeAdj
lists of adjacent nodes
void cellAttribution()
Creates the lists of cells and bdry cells in geometry according to partition.
Encapsulates all the geometrical data.
Geometrical information of 1,2 or 3D distributed cells.