36 #ifndef MULTIREGIONS_SUBSTRUCTUREDGRAPH_H 37 #define MULTIREGIONS_SUBSTRUCTUREDGRAPH_H 46 #include <boost/config.hpp> 47 #include <boost/graph/adjacency_list.hpp> 48 #include <boost/graph/cuthill_mckee_ordering.hpp> 49 #include <boost/graph/properties.hpp> 50 #include <boost/graph/bandwidth.hpp> 54 namespace MultiRegions
56 class BottomUpSubStructuredGraph;
58 class MultiLevelBisectedGraph;
61 typedef std::shared_ptr<BottomUpSubStructuredGraph>
63 typedef std::shared_ptr<SubGraph>
65 typedef std::shared_ptr<MultiLevelBisectedGraph>
67 typedef std::shared_ptr<PatchMap>
80 const unsigned int bndPatch,
115 const int nVerts,
const int idOffset = 0) :
157 const int nPartition);
166 std::vector<SubGraphSharedPtr>& leaves)
const;
171 return m_daughterGraphs.size();
182 return m_daughterGraphs;
197 bool globaloffset =
false);
212 const int leveltomask,
216 const int whichlevel)
const;
219 const int whichlevel,
223 const int whichlevel,
224 const int patch = 0)
const;
227 GetInteriorBlocks(
const int whichlevel)
const;
230 const int whichlevel)
const;
245 return m_daughterGraph;
255 typedef boost::adjacency_list<
256 boost::setS, boost::vecS, boost::undirectedS> BoostGraph;
260 const BoostGraph& graph,
265 const BoostGraph &graph,
268 BottomUpSubStructuredGraphSharedPtr &substructgraph,
269 std::set<int> partVerts = std::set<int>(),
288 #endif // MULTIREGIONS_SUBSTRUCTUREDGRAPH_H Array< OneD, NekDouble > m_sign
void MultiLevelBisectionReordering(const BoostGraph &graph, Array< OneD, int > &perm, Array< OneD, int > &iperm, BottomUpSubStructuredGraphSharedPtr &substructgraph, std::set< int > partVerts, int mdswitch)
int GetNverts(void) const
#define sign(a, b)
return the sign(b)*a
std::vector< MultiLevelBisectedGraphSharedPtr > m_daughterGraphs
std::vector< SubGraphSharedPtr > GetInteriorBlocks() const
BottomUpSubStructuredGraphSharedPtr GetDaughterGraph() const
Array< OneD, const unsigned int > IsBndDof() const
const SubGraphSharedPtr GetBndDofsGraph() const
std::vector< MultiLevelBisectedGraphSharedPtr > & GetDaughterGraphs()
int GetNdaughterGraphs() const
#define MULTI_REGIONS_EXPORT
void SetNverts(const int i)
void CuthillMckeeReordering(const BoostGraph &graph, Array< OneD, int > &perm, Array< OneD, int > &iperm)
Array< OneD, const int > GetDofId() const
Array< OneD, const int > GetPatchId() const
SubGraphSharedPtr m_BndDofs
Array< OneD, unsigned int > m_bndPatch
std::shared_ptr< PatchMap > PatchMapSharedPtr
std::shared_ptr< SubGraph > SubGraphSharedPtr
std::vector< SubGraphSharedPtr > m_IntBlocks
BottomUpSubStructuredGraphSharedPtr m_daughterGraph
Array< OneD, const NekDouble > GetSign() const
std::shared_ptr< MultiLevelBisectedGraph > MultiLevelBisectedGraphSharedPtr
Array< OneD, int > m_dofId
int GetIdOffset(void) const
bool SubGraphWithoutVerts(const SubGraphSharedPtr g)
Array< OneD, int > m_patchId
SubGraph(const int nVerts, const int idOffset=0)
void SetIdOffset(const int i)
void SetPatchMap(const int n, const int patchId, const int dofId, const unsigned int bndPatch, const NekDouble sign)
std::shared_ptr< BottomUpSubStructuredGraph > BottomUpSubStructuredGraphSharedPtr
void NoReordering(const BoostGraph &graph, Array< OneD, int > &perm, Array< OneD, int > &iperm)