Partitioning with MBZoltan
MOAB includes a partitioning utility, mbpart, that calls the Zoltan library for partitioning meshes for parallel solution (since Zoltan can call the Metis and Scotch partitioning libraries too, these are also available through mbpart). mbpart will generate the partition using the specified method (graph, geometric, and trivial/round-robin partitioning methods are available). By default, the partition is stored as entity sets marked with the PARALLEL_PARTITION tag, whose value is the part #. Using the -t option, the partition can be written as tags on the entities being partitioned. Partitions can be saved to any of the file formats supported by MOAB. If the partitioned file is saved in h5m format, Subset plot and Subset Controls can be used in VisIt to visualize the partitions.
To build this utility, use the following configure options for MOAB:
–with-mpi[=mpi_location] – enables parallel build
–with-zoltan=<zoltan_location> – location of zoltan libraries
–with-parmetis=<parmetis_location> – location of parmetis libraries
–enable-mbzoltan – to specify that mbzoltan should be built
Zoltan can be obtained as part of trilinos package or downloaded separately.
The syntax for using the mbpart utility is:
Usage: mbpart –help | [options] <#parts> <input_file> <output_file>
Arguments:
#parts : Number of parts in partition
input_file : Mesh/geometry to partition
output_file : File to which to write partitioned mesh/geometry
Options:
-h [–help] : Show full help text
-<n> –dimension <int>: Specify dimension of entities to partition. Default is largest in file.
-z [–zoltan] <arg>: Specify Zoltan partition method. One of RR, RCB, RIB, HFSC, PHG, or Hypergraph (PHG and Hypergraph are synonymous).
-p [–parmetis] <arg>: Specify Parmetis partition method.
-o [–octpart] <arg>: Specify OctPart partition method.
-n [–nosets] : Do not write partition as tagged sets (Default : write sets)
-t [–tags] : Write partition by tagging entities
-c [–include_closure]: Include element closure for part sets.
-i [–imbalance] <val>: Imbalance tolerance (used in PHG/Hypergraph method)
-m [–power] <int>: Generate multiple partitions, in powers of 2, up to 2(pow)
-R [–reorder] : Reorder mesh to group entities by partition
-g [–geom] <val> : If partition geometry, specify mesh size.
-f [–surf] : Specify if partition geometry surface.
-H [–ghost] : Specify if partition ghost geometry body.
-v [–vertex_w] <int>: Number of weights associated with a graph vertex.
-e [–edge_w] <int>: Number of weights associated with an edge.
-l [–set_l] <ints>: Load material set(s) with specified ids (comma seperated) for partition
-T : Print CPU time for each phase.
-s [–project_on_sphere]: use spherical coordinates for partitioning