The aim of the Algorithm Oriented Mesh Database (AOMD) is to serve as a mesh management library (or database) that will provide a variety of services for mesh users. The optimal form of the mesh representation is application dependent with different applications requiring different sets of mesh adjacencies. AOMD supports hybrid meshes (Triangles, Quads, Hexes, Tetraheds, Prisms, and Pyramids). The parallel paradigm used is the Rensselaer Partitioning Method (RPM).
AOMD is written in C++ and it uses the Standard Template Library for containers, iterators, and algorithms. Parallel communications are made using the Message Passing Interface (MPI). Optimal message packing is made using the autopack library that was developed at Argonne National Labs by Ray Loy.
AOMD provides advanced services like automatic mesh refinement and coarsening. Mesh refinement introduces load unbalance in partitions. This unbalance is not acceptable if the user wants to achieve scalable parallel software. The solution to this unbalance is to dynamically re-partition the mesh. Some load balancing libraries are available on the web. The library Zoltan from Sandia is a package that includes four load balancing libraries based on both graph and Octree partitioning. Classically, the balancer takes as input a representation of the parallel mesh (Octree or partitioned graph) and provides as output a partition vector telling on which partition a given mesh entity has to be in order to restore the load balance. The completion of dynamic re-partitioning consists of dynamically moving the appropriate entities from one partition to another.