LifeV
|
Class that partitions the graph associated with a mesh. More...
#include <GraphCutterZoltan.hpp>
Private Member Functions | |
GraphCutterZoltan (const GraphCutterZoltan &) | |
GraphCutterZoltan & | operator= (const GraphCutterZoltan &) |
Private Attributes | |
commPtr_Type | M_comm |
Int | M_myPID |
Int | M_numProcessors |
Int | M_numParts |
Int | M_numPartsPerProcessor |
Int | M_myFirstPart |
Int | M_myLastPart |
std::vector< Int > | M_indexBounds |
pList_Type | M_parameters |
meshPtr_Type | M_mesh |
table_Type | M_partitionTable |
table_Type | M_graph |
std::vector< Int > | M_elementList |
std::vector< Int > | M_elementParts |
struct Zoltan_Struct * | M_zoltanStruct |
Public Types | |
typedef Teuchos::ParameterList | pList_Type |
typedef std::shared_ptr< Epetra_Comm > | commPtr_Type |
typedef MeshType | mesh_Type |
typedef std::shared_ptr< mesh_Type > | meshPtr_Type |
typedef std::map< Int, idListPtr_Type > | table_Type |
Constructor & Destructor | |
Constructor taking the original mesh, the MPI comm and parameters | |
GraphCutterZoltan (meshPtr_Type &mesh, commPtr_Type &comm, pList_Type ¶meters) | |
virtual | ~GraphCutterZoltan () |
Destructor. More... | |
Public methods | |
virtual Int | run () |
Performs the graph partitioning. More... | |
Get Methods | |
virtual const idListPtr_Type & | getPart (const UInt i) const |
Get a pointer to one of the parts. More... | |
virtual idListPtr_Type & | getPart (const UInt i) |
virtual const idTablePtr_Type | getGraph () const |
Get the entire partitioned graph, wrapped in a smart pointer. More... | |
virtual const UInt | numParts () const |
Return the number of parts. More... | |
UInt | numStoredElements () const |
Get number of stored graph elements. More... | |
Int | firstIndex (const Int i) const |
First global index that is initially assigned to process i. More... | |
Int | lastIndex (const Int i) const |
Last global index that is initially assigned to process i. More... | |
const table_Type & | graph () const |
The internally stored dual graph of the mesh. More... | |
const std::vector< Int > & | elementList () const |
The vector of stored element GIDs. More... | |
std::vector< Int > & | elementList () |
The vector of stored element GIDs (non-const) More... | |
const std::vector< Int > & | elementParts () const |
The vector of stored element partitions. More... | |
std::vector< Int > & | elementParts () |
The vector of stored element partitions (non-const) More... | |
Int | myPID () const |
The PID of the process. More... | |
Int | numProcessors () const |
The number of processes in the comm. More... | |
Static methods | |
static int | getNumElements (void *data, int *ierr) |
static void | getElementList (void *data, int sizeGID, int sizeLID, ZOLTAN_ID_PTR globalID, ZOLTAN_ID_PTR localID, int wgt_dim, float *obj_wgts, int *ierr) |
static void | getNumNeighboursList (void *data, int sizeGID, int sizeLID, int num_obj, ZOLTAN_ID_PTR globalID, ZOLTAN_ID_PTR localID, int *numEdges, int *ierr) |
static void | getNeighbourList (void *data, int sizeGID, int sizeLID, int num_obj, ZOLTAN_ID_PTR globalID, ZOLTAN_ID_PTR localID, int *num_edges, ZOLTAN_ID_PTR nborGID, int *nborProc, int wgt_dim, float *ewgts, int *ierr) |
static void | getTransferObjectSizes (void *data, int num_gid_entries, int num_lid_entries, int num_ids, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int *sizes, int *ierr) |
static void | packObjects (void *data, int num_gid_entries, int num_lid_entries, int num_ids, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int *dest, int *sizes, int *idx, char *buf, int *ierr) |
static void | unpackObjects (void *data, int num_gid_entries, int num_ids, ZOLTAN_ID_PTR global_ids, int *sizes, int *idx, char *buf, int *ierr) |
Private Methods | |
virtual void | setParameters (pList_Type ¶meters) |
Set values for all the parameters, with default values where needed. More... | |
void | distributePartitions () |
Distribute the partitions among available processors. More... | |
void | buildGraph () |
Build the dual graph of the unpartitioned mesh. More... | |
void | localMigrate (int numExport, ZOLTAN_ID_PTR exportLocalGids, int *exportProcs, int *exportToPart) |
Migrate elements between locally stored partitions. More... | |
void | buildPartitionTable () |
Build the partition table that can be exported to the mesh builder. More... | |
void | partitionGraph () |
Partition the graph. More... | |
Additional Inherited Members | |
Public Types inherited from GraphCutterBase< MeshType > | |
typedef Teuchos::ParameterList | pList_Type |
Public Member Functions inherited from GraphCutterBase< MeshType > | |
GraphCutterBase () | |
Default constructor. More... | |
virtual | ~GraphCutterBase () |
Destructor. More... | |
Class that partitions the graph associated with a mesh.
This class uses the Zoltan package to partition the graph associated with a mesh. This class builds the dual graph of the mesh, partitions it according to a set of parameters and the stores the partitioning in a table (vector of vectors). At the end of the partition process, each vector will contain the GID of the elements in a part.
While this class can be used stand-alone, it is used automatically by the MeshPartitionTool class during the mesh partition process.
More on class functionality to follow. Stay tuned...
Definition at line 91 of file GraphCutterZoltan.hpp.
typedef Teuchos::ParameterList pList_Type |
Definition at line 96 of file GraphCutterZoltan.hpp.
typedef std::shared_ptr<Epetra_Comm> commPtr_Type |
Definition at line 97 of file GraphCutterZoltan.hpp.
Definition at line 98 of file GraphCutterZoltan.hpp.
typedef std::shared_ptr<mesh_Type> meshPtr_Type |
Definition at line 99 of file GraphCutterZoltan.hpp.
typedef std::map<Int, idListPtr_Type > table_Type |
Definition at line 101 of file GraphCutterZoltan.hpp.
GraphCutterZoltan | ( | meshPtr_Type & | mesh, |
commPtr_Type & | comm, | ||
pList_Type & | parameters | ||
) |
This constructor can be used to build the object and perform the graph partitioning in one shot.
mesh | The original mesh whose graph this object will partition |
comm | The Epetra MPI comm object which contains the processes which participate |
parameters | The Teuchos parameter list which contains the partitioning parameters |
Definition at line 313 of file GraphCutterZoltan.hpp.
|
inlinevirtual |
Destructor.
Definition at line 121 of file GraphCutterZoltan.hpp.
|
private |
|
virtual |
Performs the graph partitioning.
Implements GraphCutterBase< MeshType >.
Definition at line 353 of file GraphCutterZoltan.hpp.
|
inlinevirtual |
Get a pointer to one of the parts.
Implements GraphCutterBase< MeshType >.
Definition at line 133 of file GraphCutterZoltan.hpp.
|
inlinevirtual |
Implements GraphCutterBase< MeshType >.
Definition at line 137 of file GraphCutterZoltan.hpp.
|
inlinevirtual |
Get the entire partitioned graph, wrapped in a smart pointer.
Implements GraphCutterBase< MeshType >.
Definition at line 143 of file GraphCutterZoltan.hpp.
|
inlinevirtual |
Return the number of parts.
Implements GraphCutterBase< MeshType >.
Definition at line 154 of file GraphCutterZoltan.hpp.
|
inline |
Get number of stored graph elements.
Definition at line 160 of file GraphCutterZoltan.hpp.
First global index that is initially assigned to process i.
Definition at line 166 of file GraphCutterZoltan.hpp.
Last global index that is initially assigned to process i.
Definition at line 172 of file GraphCutterZoltan.hpp.
|
inline |
The internally stored dual graph of the mesh.
Definition at line 178 of file GraphCutterZoltan.hpp.
|
inline |
The vector of stored element GIDs.
Definition at line 184 of file GraphCutterZoltan.hpp.
|
inline |
The vector of stored element GIDs (non-const)
Definition at line 190 of file GraphCutterZoltan.hpp.
|
inline |
The vector of stored element partitions.
Definition at line 196 of file GraphCutterZoltan.hpp.
|
inline |
The vector of stored element partitions (non-const)
Definition at line 202 of file GraphCutterZoltan.hpp.
|
inline |
The PID of the process.
Definition at line 208 of file GraphCutterZoltan.hpp.
|
inline |
The number of processes in the comm.
Definition at line 214 of file GraphCutterZoltan.hpp.
|
static |
|
static |
Definition at line 376 of file GraphCutterZoltan.hpp.
|
static |
Definition at line 399 of file GraphCutterZoltan.hpp.
|
static |
Definition at line 420 of file GraphCutterZoltan.hpp.
|
static |
Definition at line 465 of file GraphCutterZoltan.hpp.
|
static |
Definition at line 480 of file GraphCutterZoltan.hpp.
|
static |
Definition at line 511 of file GraphCutterZoltan.hpp.
|
privatevirtual |
Set values for all the parameters, with default values where needed.
Implements GraphCutterBase< MeshType >.
Definition at line 331 of file GraphCutterZoltan.hpp.
|
private |
|
private |
Distribute the partitions among available processors.
Definition at line 538 of file GraphCutterZoltan.hpp.
|
private |
Build the dual graph of the unpartitioned mesh.
Definition at line 554 of file GraphCutterZoltan.hpp.
|
private |
Migrate elements between locally stored partitions.
Definition at line 642 of file GraphCutterZoltan.hpp.
|
private |
Build the partition table that can be exported to the mesh builder.
Definition at line 661 of file GraphCutterZoltan.hpp.
|
private |
Partition the graph.
Definition at line 706 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 282 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 283 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 284 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 285 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 286 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 287 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 288 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 289 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 290 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 291 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 292 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 293 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 298 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 299 of file GraphCutterZoltan.hpp.
|
private |
Definition at line 301 of file GraphCutterZoltan.hpp.