5 #ifndef MeshPartitioner_H
6 #define MeshPartitioner_H
35 enum ETYPE{ TRI = 1, QUAD = 2, TETRA = 3, HEXA = 4 };
36 enum WTYPE{ NOWEIGHTS = 0, WEIGHTS_ONLY_EDGES = 1, WEIGTHS_ONLY_VERTICES = 2,
37 WEIGHTS_BOTH_VERTICES_EDGES = 3};
38 enum NUMFLAG{ C_STYLE = 0, FORTRAN_STYLE = 1 };
39 enum CELLTYPE{ INTERIOR = 1, GHOST_BOUNDARY_CELL = 2, GHOST_INTERFACE_CELL};
46 void fiedler_order(
const string& fname );
50 void extractBoundaryMesh();
61 void setWeightType(
int weight_type );
62 void setNumFlag(
int num_flag);
66 void isCleanup(
bool clean_up) { _cleanup = clean_up; }
67 void isDebug (
bool debug ) { _cleanup =
false;
70 void DEBUG_compute_elem_dist();
71 void DEBUG_parmetis_mesh();
72 void DEBUG_fiedler_partition();
73 void DEBUG_elem_connectivity();
74 void DEBUG_map_part_elms();
75 void DEBUG_count_elems_part();
76 void DEBUG_exchange_part_elems();
77 void DEBUG_mapBounIDAndCell();
78 void DEBUG_resize_elem();
79 void DEBUG_CRConnectivity_cellParts();
80 void DEBUG_CRConnectivity_faceParts();
81 void DEBUG_interfaces();
82 void DEBUG_faceCells_faceNodes();
83 void DEBUG_non_interior_cells();
84 void DEBUG_preserve_cell_order();
85 void DEBUG_order_faceCells_faceNodes();
86 void DEBUG_coordinates();
87 void DEBUG_exchange_interface_meshes();
89 void DEBUG_local_global();
90 void DEBUG_cellcells_global();
91 void DEBUG_globalCellID_procID_map();
92 void DEBUG_gatherCellsLevel1_partID_map();
93 void DEBUG_level1_scatter_gather_cells();
94 void DEBUG_CRConnectivity_cellCells2();
101 void compute_elem_dist();
102 void elem_connectivity();
103 void parmetis_mesh();
104 void fiedler_partition();
105 int get_local_nodes(
int id);
106 void set_eptr_eind(
int id);
107 void map_part_elms();
108 void count_elems_part();
109 void exchange_part_elems();
110 void shift_sum_row();
113 void set_local_global();
114 void set_cellcells_global();
115 void cellcells_global_extension();
116 void globalCellID_procID_map();
117 void gatherCellsLevel1_partID_map();
118 void level1_scatter_gather_cells();
121 void CRConnectivity_cellParts();
122 void mapBounIDAndCell(
int id);
123 void resize_elem(
int id);
124 void CRConnectivity_faceParts();
125 void faceCells_faceNodes();
129 int count_interior_faces(
int id );
130 void order_faceCells_faceNodes();
131 void non_interior_cells();
132 void exchange_interface_meshes();
134 void create_window(
int id );
137 int get_window_displ(
int id,
int neigh_mesh_id );
138 void construct_mesh(
int id );
139 void setMeshColors();
140 void preserve_cell_order();
141 void scatterCellsLevel1();
145 void mesh_xdmf_header();
150 void cleanup_follow_exchange_part_elems();
151 void cleanup_follow_faceCells_faceNodes();
152 void cleanup_follow_mappers();
154 void CRConnectivityPrint(
const CRConnectivity& conn,
int procID,
const string& name );
155 void CRConnectivityPrintFile(
const CRConnectivity& conn,
const string& name );
159 void debug_file_open(
const string& fname );
160 void debug_file_close();
vector< StorageSitePtr > _faceSite
vector< map< int, int > > _bndryOffsets
vector< CRConnectivityPtr > _cellCells
vector< multimap< int, int > > _globalToLocalMappers
vector< ArrayVecD3Ptr > _coord
vector< int > _ncommonNodes
vector< ArrayIntPtr > _interfaceMeshCounts
vector< StorageSitePtr > _nodeSite
vector< CRConnectivityPtr > _partFaces
vector< CRConnectivityPtr > _faceParts
vector< ArrayIntPtr > _interfaceMeshIDs
vector< int * > _elemWithGhosts
vector< set< int > > _elemSet
shared_ptr< StorageSite > StorageSitePtr
vector< ArrayIntPtr > _procTotalInterfaces
vector< set< int > > _interfaceSet
vector< map< int, int > > _localToGlobalMappers
vector< CRConnectivityPtr > _partCells
vector< Array< int > * > _globalIndx
shared_ptr< Array< Mesh::VecD3 > > ArrayVecD3Ptr
vector< StorageSitePtr > _cellSite
vector< CRConnectivityPtr > _faceNodes
vector< CRConnectivityPtr > _partNodes
vector< StorageSitePtr > _partSite
vector< StorageSitePtr > _cellSiteGlobal
vector< ArrayIntPtr > _offsetInterfaceCells
map< int, int > _cellToPreservedOrderCell
shared_ptr< CRConnectivity > CRConnectivityPtr
const MeshList & meshList() const
void isCleanup(bool clean_up)
vector< set< int > > _boundarySet
vector< map< int, int > > _interfaceOffsets
shared_ptr< Mesh > MeshPtr
map< int, int > _globalToLocal
vector< Array< int > * > _elemDist
const Mesh & getBoundaryMesh() const
vector< const CRConnectivity * > _faceNodesGlobal
vector< CRConnectivityPtr > _faceNodesOrdered
vector< set< int > > _nonInteriorCells
vector< int > _windowSize
vector< CRConnectivityPtr > _faceCellsOrdered
vector< multimap< int, int > > _mapPartAndElms
shared_ptr< Array< int > > ArrayIntPtr
vector< vector< ArrayIntPtr > > _toIndices
vector< map< int, string > > _mapBounIDAndBounType
vector< int > _totElemsAndGhosts
vector< CRConnectivityPtr > _cellNodes
vector< Mesh * > _meshListLocal
vector< multimap< int, int > > _mapBounIDAndCell
map< int, int > _cellsLevel1PartID
vector< vector< int > > _cellToOrderedCell
map< int, int > _gatherCellsLevel1PartIDMap
vector< ArrayIntPtr > _ghostCellsLocal
vector< CRConnectivityPtr > _faceCells
vector< CRConnectivityPtr > _cellParts
vector< multimap< int, int > > _interfaceMap
vector< float * > _tpwgts
map< int, vector< int > > VectorMap
vector< int > _nelemsWithGhosts
vector< Mesh * > MeshList
vector< vector< ArrayIntPtr > > _fromIndices
vector< const CRConnectivity * > _faceCellsGlobal
vector< ArrayIntPtr > _ghostCellsGlobal