Partition is a utility used to partition the usual
mien FEM connectivity into a set of contiguous subdomains using the Metis graph partitioning library. The latest version of Metis used is 4.0.1.
This is it, and you can also look at the source code in
Partition will need the connectivity array (the
mien file), which should be 32-bit C-style binary, as in the MIXD format. For more information on writing C-style binary files see the EWD library documentation.
Partition will run, among others, on the Xeon cluster running Linux, and on Mac OS X computers.
Partition is invoked this way:
/usr/local/bin/partition [-tri|-qua|-tet|-hex] <npes> ...
The command line options are described below, and the
<npes> is the number of partitions to generate. More than one partition size can be requested in a single run.
Paritition accepts the following command line options:
||assume triangular mesh|
||assume quadrilateral mesh|
||assume hexahedral mesh|
||assume tetrahedral mesh|
An example output is shown below:
tempest(test)% ls -l mien -rw------- 1 behr user 7819024 Mar 4 18:09 mien tempest(test)% partition 8 partition: tetrahedra partition: found 488689 elements partition: constructing dual...done partition: partitioning for npes 8 partition: calling metis...done geto2n: max(nec) is 61087 61087 61087 61087 61087 61087 61087 61087 61080 writeperm: wrote mprm.0008
Known ProblemsPartition determines the number of elements from the size of the
mienfile, so it is very important that that size is correct. Oftentimes, a previous run of e.g. DimensionMG will produce a larger mesh, and a subsequent run will result in a smaller mesh. In that case, the final
mienfile will have the the size corresponding to the larger mesh, i.e., it will not be properly truncated. In that case, Partition will produce unusable permutation file. It is a good idea to always delete mesh files before creating new ones. If an old file needs to be truncated, use the following:
dd if=mien of=mien.truncated bs=<nen∗ne∗4> count=1
where the block size
bs is set to a desired integer file size.
The default version (based on Metis 2) has problems with large meshes and large partitions (millions of elements and thousands of PEs). Use the version based on Metis 3 instead in those cases. To deal with Metis interface changes, use
-DMETIS2 for Metis 2 and
-DMETIS3 for 3 and above.
Metis 3 had problems with 64-bit architectures (crashes in
GKfree function, etc.); this has been fixed in Metis 4. Partition on the Xeon cluster is built using that version.
Metis uses random number generator to initialize its graphs, and so the partitioning obtained on two different machines might be visibly different.