MOAB Home page

Best place to start reading about MOAB is the  ITAPS-MOAB shortcourse presentation. Somewhat dated but mostly correct.

More details in the User's Guide (see section 5 for description of parallel model).

 Structured mesh interface, which was developed to support ParCAL.

Build: Download the nightly build, run configure --help to get options (including building with netcdf and/or pnetcdf support).

 Options on the MOAB netcdf file reader.

If you have MOAB-specific questions, send them to moab-dev@… so you don't have to wait for Tim to answer.

MOAB Data abstraction illustrated

Testing parallel read/write

MOAB uses an option string passed to the load/save functions to specify various aspects of read/write, and the file extension to decide which reader to call to read a given file. One of the tools bundled with MOAB, named mbconvert, allows specification of read and write options on the command line. This is the tool I use to benchmark the parallel read/write functionality in MOAB.

MOAB's parallel read of .nc files consists of the following steps:

  • read mesh, and any solution variables/timesteps (default is to read all variables, timesteps; see  metadata document for how to request specific variables/timesteps.)
  • resolve shared vertices, edges, and faces on subdomain boundaries between processors, if requested
  • exchange ghost elements across subdomain boundaries, if requested

Parallel write (to hdf5) consists loosely of the following:

  • gather up vertices, edges, faces, regions, sets, tags to be written
  • negotiate sets shared across processors (looks for identical tags/values on sets for a list of commonly shared tags)
  • open file in serial, write header and table information, then close file
  • open file in concurrent mode, write data in parallel, then close file

To accomplish the above steps with mbconvert, use the following command:

mpiexec -np 2 ../MOABparoptdbg/bin/mbconvert -O PARALLEL=READ_PART -O PARTITION= -O PARALLEL_RESOLVE_SHARED_ENTS -O DEBUG_IO=1 -O CPUTIME -o PARALLEL=WRITE_PART -o DEBUG_IO=1 <infile>.nc <outfile>.h5m

where the -O options are passed to the read, and the -o options to the write. To call MOAB from a program to accomplish the same thing, options to the read/write are put in a character string, delimited with a semi-colon ';'.