The data models used in MOAB and iMesh are quite similar, but not identical.The most significant differences are the following:
- Tags: MOAB differentiates between DENSE, SPARSE, and BIT tags, using different storage models for each, while iMesh uses a single tag concept. iMesh allows application to query whether an entity has been given a tag of a specified type; this query is incompatible with the concept of a DENSE tag with a default value. Thus, MOAB’s iMesh implementation creates SPARSE tags by default, and tags created and accessed through this interface will use more memory than DENSE tags created through MOAB’s native interface. To mitigate this problem, MOAB implements an extension of the iMesh_createTag function which allows specification of the tag type (DENSE, SPARSE, etc.) to be created. See later in this section for more information.
- Higher-order nodes: ITAPS currently handles higher-order elements (e.g. a 10-node tetrahedron) using a special “Shape” interface. In this interface, higher-order nodes are only accessible through the AEntities which they resolve. MOAB’s iMesh implementation provides access to higher-order nodes in the same manner described in Section , by varying the number of vertices defining each entity. As a result, if higher-order entities are used in a model, the functions returning connectivity and vertex adjacencies always return all vertices, rather than providing an option to return just corner vertices.
- Self-adjacencies: iMesh specifies that entities are not self-adjacent; that is, requesting adjacencies of the same dimension/type results in an error. MOAB does not consider this an error, returning the entity itself.
- Adjacency table and AEntities: iMesh uses the concept of an “adjacency table” to determine which AEntities are available and created by default. MOAB uses input arguments to the get_adjacencies functions to control whether AEntities are created. These flags provide finer-grained control over AEntities, but make it slightly less convenient to ensure that AEntities of a given dimension are always created.