Jean-François Remacle



AOMD

The aim of the Algorithm Oriented Mesh Database (AOMD) is to be a mesh management library (or database) that is able to provide a variety of services for mesh users. The optimal form of the mesh representation is application dependant with different applications requiring different sets of mesh adjacencies. In [1], we presented an approach that was able to deal with any mesh representation. In [2], we extended AOMD to distributed mesh representations. AOMD supports hybrid meshes (Triangles, Quads, Hexes, Tets, Prisms and Pyramids). AOMD is written in C++ and it uses STL as well 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 developped 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 one 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 which 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.


AOMD is available as an Open Source Code at this adress. For more information, do not hesitate to send me an email.