PARTDMESH
Partition a Finite Element Mesh


PARTDMESH is a C program which can partition the elements of a finite element mesh.

The program attempts to partition the mesh in such a way that each part has roughly the same number of elements, and so that the number of "interfaces" between parts is minimized. Such a partition can be very useful when parallel processing is to be applied.

The partition is done on the elements of the finite element mesh; however, this naturally induces a pseudo-partition of the nodes. A subset of the nodes will be associated with the elements belonging to each part of the partition - however, there will of course be some nodes that belong to more than one "part" of the pseudo-partition of the nodes. (This is not really a deep idea; it's just important to realize that while each element is in exactly one part, some nodes may be in several parts).

PARTDMESH will produce both a list of the elements belonging to each part of the partition, and a list of the nodes belonging to each associated part of the pseudopartition of the nodes.

The mesh file is stored in the METIS MESH format.

PARTDMESH works with the dual graph of the mesh. Generally, this is slower than the corresponding program PARTNMESH, which works with the nodal graph of the mesh. Either program may be used to get equivalent results.

Usage:

partdmesh mesh_file nparts
where reads the mesh information in mesh_file, assigns each node and element to processor 0 through nparts-1, and writes the partitionings to the file mesh_file.npart.Nparts for the nodes and mesh_file.epart.Nparts for the elements.

Licensing:

PARTDMESH is part of the METIS family of Multilevel Partitioning Algorithms. It was produced by the lab of George Karypis, who states

"It is our general policy to make these tools available to the research community for use in their own research and/or non-commercial applications."

For further information on licensing and permissions, refer to http://www.cs.umn.edu/~metis, the METIS home page.

Languages:

PARTDMESH is available in a C version.

Related Programs:

GRAPHCHK, a C program which reads a METIS GRAPH file and verifies that it has the proper format.

KMETIS, a C program which partitions the nodes of a graph.

MESH2NODAL, a C program which converts a finite element mesh to a graph, for further processing by KMETIS or PMETIS.

METIS, a C library which partitions the nodes of a graph, or the elements of a finite element mesh, or reorders the variables in a sparse matrix.

METIS_GRAPH, a data directory which contains examples of the graph files used to describe a graph to the METIS family of programs.

METIS_MESH, a data directory which contains examples of the mesh files used to describe a finite element mesh to the METIS family of programs.

MPI, a message passing interface that allows programs to be written for execution on parallel computers.

NEIGHBORS_TO_METIS_GRAPH, a FORTRAN90 program which reads information describing the adjacency relations in a tet mesh, and writes out essentially the same information, but in a format that METIS will accept.

OEMETIS, a C program which reads the adjacency graph of a sparse matrix, stored in METIS GRAPH format, and produces a reordering of the nodes to minimize fill.

ONMETIS, a C program which reads the adjacency graph of a sparse matrix, stored in METIS GRAPH format, and produces a reordering of the nodes to minimize fill.

PARTNMESH, a C program which partitions the elements of a finite element mesh, by working with the nodal graph of the mesh.

PMETIS, a C program which partitions the nodes of a graph.

Reference:

  1. George Karypis, Vipin Kumar,
    METIS, a Software Package for Partitioning Unstructured Graphs and Computing Fill-Reduced Orderings of Sparse Matrices;
  2. George Karypis, Vipin Kumar,
    A fast and high quality multilevel scheme for partitioning irregular graphs,
    SIAM Journal on Scientific Computing,
    Volume 20, Number 1, 1998, pages 359-392;

Source Code:

Examples and Tests:

You can go up one level to the C source codes.


Last revised on 01 October 2008.