# MOAB: Mesh-Oriented datABase

MOAB is a component for representing and evaluating mesh data. MOAB can store structured and unstructured mesh, consisting of elements in the finite element "zoo". The functional interface to MOAB is simple yet powerful, allowing the representation of many types of metadata commonly found on the mesh. MOAB is optimized for efficiency in space and time, based on access to mesh in chunks rather than through individual entities, while also versatile enough to support individual entity access.
MOAB can be used in several ways: as the underlying mesh data representation for applications (MOAB is used in this way in the VERDE mesh verification code, as a mesh input mechanism (using mesh readers included with MOAB), or as a translator between mesh formats (using readers and writers included with MOAB).

MOAB was developed as part of the CUBIT project at Sandia National Laboratories, and was partially funded by the DOE SciDAC program as part of the Terascale Tools and Technologies (TSTT) center.

# Dependencies
MOAB depends on the NetCDF libraries (C and C++) to compile the ExodusII reader/writer. Support for C++ was added to netcdf in version 3.5.1, and took a bit of time to get compiling ironed out, so make sure you have version 3.6 or later. To get netcdf, search the web or try [NetCDF].
The only MOAB file format that can represent the entire MOAB data model is MOAB's native HDF5-based file format. Support for this file format requires version 5 of the HDF library. It may be obtained at [HDF5].

#Compiling

  - Unpack the source code in some directory.
  - Run the 'configure' script in the top source directory with the '--help' option to see a list of available configure options. '--prefix', '--with-netcdf', and '--with-hdf5' are common options specified.
  - From either the source directory or some other, empty directory, run the 'configure' script in the top source directory with any desired configuration options.
  - In whichever directory the configure script was run in, issue the command 'make' to compile MOAB and any configured MOAB-based tools.
  - In whichever directory MOAB was build in, issue the command 'make check' to verify that MOAB compiled and is working correctly.
  - Issue the command 'make install' to install the MOAB library and headers in the configured install directory. (This step is optional if you're only building tools distributed with MOAB.)

# Bugs, Correspondence, Contributing
MOAB is LGPL code, and we encourage users to submit bug reports (and, if desired, fixes) to moab-dev@mcs.anl.gov. Users are encouraged to check [SIGMA-MOAB] documentation pages often for news and updates. Please submit pull requests (PR) with a Bitbucket fork or send us patches that you would like merged upstream.

[NetCDF]: http://www.unidata.ucar.edu/packages/netcdf
[HDF5]: http://hdf.ncsa.uiuc.edu/HDF5
[SIGMA-MOAB]:http://sigma.mcs.anl.gov/moab-library