PetscExternalPartitioner

Allow users to use several external partitioning packages (parmetis, chaco, ptscotch and party) via PETSc.

ParMETIS

ParMETIS is an MPI-based parallel graph partitioner implementing mainly a multilevel K-way algorithm. The basic idea of the multilevel K-way algorithm is to coarsen the graph firstly, partition the coarsened graph and then refine the the partition. It is solving a multi-constraints optimization problem.

PTScotch

PTScotch is a software package which compute parallel static mappings and parallel sparse matrix block orderings of graphs. It implements graph bipartitioning methods including band, diffusion and multilevel methods.

Chaco

Chaco contains a wide variety of algorithms and options. Some of the algorithms exploit the geometry of the mesh, others its local connectivity or its global structure as captured by eigenvectors of a related matrix.

Party

The party package aims at providing a recursive partitioning laboratory assembling various high- and low-level tools for building tree-based regression and classification models.

Use

These packages can be accessed via an unified interface in MOOSE, PetscExternalPartitioner. The use of the packages is accomplished by adding a subblock in Mesh block of input file. For example


[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[Partitioner]
# You need to use PetscExternalPartitioner to gain an access to these external packages
type = PetscExternalPartitioner
# specify which package you want to use
# you could choose one of {Chaco, Party, PTScotch, ParMETIS}
part_package = parmetis
[]
parallel_type = distributed
[]


Partitioning Examples

4 subdomains

Party

chaco

parmetis

ptscotch

8 subdomains

Party

chaco

parmetis

ptscotch