The ITAPS Mesh Interface iMesh

The ITAPS Mesh Interface iMesh provides a common interface for accessing mesh and data associated with a mesh. Applications written to use this interface can use a variety of implementations, choosing the one that best meets its needs. They can also use tools written to this interface, for example mesh smoothing, adaptive mesh refinement, and parallel mesh support.

Data Model

The ITAPS interfaces use a data model composed of four basic data types:
Entity: basic topological entities in a mesh, e.g. vertices, triangles, hexahedra.
Entity Set: arbitrary grouping of other entities and sets. Entity sets also support parent/child relations with other sets which are distinct from entities contained in those sets. Parent/child links can be used to embed graph relationships between sets, e.g. to represent topological relationships between the sets.
Interface: the object with which mesh is associated and on which functions in iMesh are called.
Tag: application data associated with objects of any of the other data types. Each tag has a designated name, size, and data type.

Entity Type, Topology

Each entity has a specific Entity Type and Entity Topology. The Entity Type is one of VERTEX, EDGE, FACE, and REGION, and is synonymous with the topological dimension of the entity. The Entity Topology denotes the specific shape, for example TRIANGLE, QUADRILATERAL, TETRAHEDRON, and HEXAHEDRON. Entity Type and Entity Topology exist as enumerated types, Entity Type in the iBase_EntityType enumeration, and Entity Topology in the iMesh_EntityTopology enumeration.

Entity-, Array-, and Iterator-Based Access

The iMesh interface provides functions for accessing entities individually, as arrays of entities, or using iterators. These access methods have different memory versus execution time tradeoffs, depending on the implementation.

Lists Passed Through Interface

Many of the functions in iMesh have arguments corresponding to lists of objects. In-type arguments for lists consist of a pointer to an array and a list size. Lists returned from functions are passed in three arguments, a pointer to the array representing the list, and pointers to the allocated and occupied lengths of the array. These three arguments are inout-type arguments, because they can be allocated by the application and passed into the interface to hold the results of the function. Lists which are pre-allocated must be large enough to hold the results of the function; if this is not the case, an error is generated. Otherwise, the occupied size is changed to the size output from the function. If a list argument is unallocated (the list pointer points to a NULL value) or if the incoming value of the allocated size is zero, the list storage will be allocated by the implementation. IN ALL CASES, MEMORY ALLOCATED BY ITAPS INTERFACE IMPLEMENTATIONS IS DONE USING THE C MALLOC FUNCTION, AND CAN BE DE-ALLOCATED USING THE C FREE FUNCTION.
Generated on Tue Jun 26 15:38:40 2007 for iMesh by doxygen 1.3.5