36 #ifndef NEKTAR_LIBUTILITIES_BASICUTILS_MESHPARTITION_H
37 #define NEKTAR_LIBUTILITIES_BASICUTILS_MESHPARTITION_H
39 #include <boost/graph/subgraph.hpp>
40 #include <boost/graph/adjacency_list.hpp>
48 namespace LibUtilities
71 SessionReaderSharedPtr& pSession);
73 SessionReaderSharedPtr& pSession);
77 CompositeOrdering &composites);
79 BndRegionOrdering &composites);
82 std::vector<unsigned int> &tmp);
89 std::vector<unsigned int>
list;
145 typedef boost::adjacency_list<
160 typedef boost::graph_traits<
163 typedef boost::graph_traits<
166 typedef boost::graph_traits<
169 typedef boost::graph_traits<
172 typedef boost::graph_traits<
210 void ReadGeometry(
const SessionReaderSharedPtr& pSession);
216 std::vector<BoostSubGraph>& pLocalPartition,
217 bool overlapping =
false);
230 void OutputPartition(SessionReaderSharedPtr& pSession, BoostSubGraph& pGraph, TiXmlElement* pGeometry);
void GetCompositeOrdering(CompositeOrdering &composites)
int CalculateElementWeight(char elmtType, bool bndWeight, int na, int nb, int nc)
std::map< std::string, std::string > m_vertexAttributes
std::vector< int > edgeList
int partition
Index of the partition to which it belongs.
std::map< int, MeshEntity > m_meshComposites
void WriteLocalPartition(SessionReaderSharedPtr &pSession)
std::map< int, MeshVertex > m_meshVertices
boost::shared_ptr< MeshPartition > MeshPartitionSharedPtr
void CheckPartitions(int nParts, Array< OneD, int > &pPart)
void ReadConditions(const SessionReaderSharedPtr &pSession)
std::vector< unsigned int > NumModes
std::map< MeshCurvedKey, MeshCurved > m_meshCurved
std::map< int, std::vector< unsigned int > > BndRegionOrdering
virtual void PartitionGraphImpl(int &nVerts, int &nVertConds, Nektar::Array< Nektar::OneD, int > &xadj, Nektar::Array< Nektar::OneD, int > &adjcy, Nektar::Array< Nektar::OneD, int > &vertWgt, Nektar::Array< Nektar::OneD, int > &vertSize, int &nparts, int &volume, Nektar::Array< Nektar::OneD, int > &part)=0
boost::graph_traits< BoostGraph >::vertex_descriptor BoostVertex
std::map< int, MultiWeight > m_vertWeights
std::map< int, std::vector< unsigned int > > CompositeOrdering
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
std::map< std::string, NumModes > NummodesPerField
std::map< std::string, int > m_fieldNameToId
std::vector< unsigned int > MultiWeight
void ReadExpansions(const SessionReaderSharedPtr &pSession)
int id
Universal ID of the vertex.
std::map< int, NummodesPerField > m_expansions
std::vector< unsigned int > list
std::map< int, MeshEntity > m_meshElements
boost::adjacency_list< boost::setS, boost::vecS, boost::undirectedS, GraphVertexProperties, boost::property< boost::edge_index_t, unsigned int, GraphEdgeProperties > > BoostGraph
boost::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
LibUtilities::NekFactory< std::string, MeshPartition, const SessionReaderSharedPtr & > MeshPartitionFactory
Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class...
std::vector< MeshVertex > vertices
MultiWeight weight
Weightings to this graph vertex.
void CreateGraph(BoostSubGraph &pGraph)
std::vector< MeshEdge > edges
#define LIB_UTILITIES_EXPORT
void GetBndRegionOrdering(BndRegionOrdering &composites)
void GetElementIDs(const int procid, std::vector< unsigned int > &tmp)
std::vector< unsigned int > m_domain
std::vector< BoostSubGraph > m_localPartition
void ReadGeometry(const SessionReaderSharedPtr &pSession)
BndRegionOrdering m_bndRegOrder
std::pair< std::string, int > MeshCurvedKey
boost::graph_traits< BoostGraph >::adjacency_iterator BoostAdjacencyIterator
std::map< int, MeshEntity > m_meshEdges
Reads and parses information from a Nektar++ XML session file.
boost::graph_traits< BoostGraph >::edge_iterator BoostEdgeIterator
void PartitionMesh(int nParts, bool shared=false, bool overlapping=false)
boost::graph_traits< BoostGraph >::edge_descriptor BoostEdge
void PrintPartInfo(std::ostream &out)
std::map< int, MeshEntity > m_meshFaces
void WriteAllPartitions(SessionReaderSharedPtr &pSession)
boost::graph_traits< BoostGraph >::vertex_iterator BoostVertexIterator
void OutputPartition(SessionReaderSharedPtr &pSession, BoostSubGraph &pGraph, TiXmlElement *pGeometry)
void PartitionGraph(BoostSubGraph &pGraph, int nParts, std::vector< BoostSubGraph > &pLocalPartition, bool overlapping=false)
Partition the graph.
MeshPartition(const SessionReaderSharedPtr &pSession)
std::map< int, MeshCurvedPts > m_meshCurvedPts
MeshPartitionFactory & GetMeshPartitionFactory()
Provides a generic Factory class.
boost::subgraph< BoostGraph > BoostSubGraph