Next: Mesh Loading/Partitioning
Up: PMDB User's Manual
Previous: PMDB User's Manual
This document describes the routines or operators available in the
PMDB runtime library.
PMDB executes a copy of MDB in
SPMD mode on each processor and provides the following categories of
procedures to manipulate, manage, and provide information about the
distributed mesh:
- Mesh loading and partitioning routines read in meshes stored
in files and distribute them onto the processors. The meshes
can either be already partitioned in which case they are read in
parallel, or they can be partitioned after
they are loaded on processor(s).
- Geometric model operators initializes up the correspondence between
the addresses of geometric entities and their geometric model
identification tags. This needs to done by PMDB since
when the geometric model is loaded on each processor, mesh
entities point to the addresses of geometric entities as part
of their classification.
- Query routines return information related
to the entities which are shared between processors.
A rich set of queries about processor adjacency, and links to
other shared entities are supported.
- Update routines provide the operators
with which the shared entities and their links accross the
processors can be manipulated. If the mesh is not changed by
an application, then there is no need to use these routines.
- Gather/scatter maps are no longer supported, as the node structures are gone as of mesh 4.x.
- Mesh Migration routines enable entities to be redistributed
in an unrestrictive manner. In addition,
applications which use
routines such as load balancing or just need to migrate
entities among processors needs a mechanism whereby user specific data
should also be migrated together with the entities. For example,
adaptive finite element programs may store solution or elemental
matrices on entities. The stored data may be irregular - e.g.
p-adaptive methods may need to store vectors of different length
on each entity. PMDB provides operators which users can
call to register attached data by its tag and its storage size. Any
entity which is migrated and which has data identified with a
registered tag will also have its data migrated and attached
automatically after reaching the destination processor.
The mesh migration routines also support the new callback
operations. If a "MigrateIn" or "MigrateOut" callback is attached,
the callback will be called before an entity is packed to be
migrated, or after it is unpacked after being migrated.
- Load balancing may be needed after refinement or coarsening is
performed. PMDB provides an iterative scheme which
balances the number of elements on each processor. Other load balancers are available which use the PMDB interface but which are not part of PMDB. Please see the documentaion on the OCTPART, ribPart, and ParMetis documentation for more information.
- Visualization: These routines provide IBM data explorer
output to aid in visualization of partitioned meshes.
The following types are used and are described in detail in
the SCOREC MDB manual [].
- pEntity a generic entity which can be region, face
edge or vertex.
- eType: represents the type of the entity. It can be any one
of
Tvertex
, Tedge
, Tface
,
or Tregion
.
Throughout manual the variable names given below appear extensively as
parameters to library routines:
- num_of_procs : total number of processors used.
- pid: processor id.
Figure presents an example code of how
PMDB library can be used to load and partition a mesh
using orthogonal bisection. The code presents a standard template
of calls to load and distribute a mesh over processors. The call
to pmdb_ortho_rb() can be replaced with any other mesh loading
or partitioning routines described in section . The
call to do_something() can be replaced with code that uses
the library routines presented in this manual.
Next: Mesh LoadingPartitioning
Up: PMDB User's Manual
Previous: PMDB User's Manual
Jim Teresco
Tue Aug 1 14:37:38 EDT 1995