ITAPS Interfaces

Interface Specifications

The next step to creating interoperable technologies is to define common interfaces that support the abstract data model. A key aspect of our approach is that we do not enforce any particular data structure or implementation with our interfaces, requiring only that certain questions about the geometry, mesh, or field data can be answered through calls to the interface. One of the most challenging aspects of this effort remains balancing performance of the interface with the flexibility needed to support a wide variety of data types. Performance is critical for kernel computations involving mesh and geometry access, and to address this need, we provide a number of different access patterns including individual iterator-based and agglomerated array-based requests. Further challenges arise when considering the support of many different scientific programming languages which we address using a two-pronged approach. First, we provde a C-language binding for our interfaces that is compatible with most needs in scientific computing. Additional flexibility, albeit at a somewhat higher cost, is supported through the use of the SIDL/Babel technology provided by the Common Component Architecture Forum (CCA).

There are five ITAPS interfaces, four that correspond to the core data model components, Geometry (iGeom), Mesh (iMesh), Fields (iField), and Data Relation Managers (iRel) and one that contains the utilities and definitions used by more than one of the core interface (iBase). These interfaces are developed primarily by the ITAPS research team, but the discussion is open (for more information, contact ). In the table below, each of the interfaces is briefly described and links to the interface specification and user guides are given.

Interface Specifications
Interface
Description
Documentation
iBase
Utilities and definitions used in multiple ITAPS core interfaces such as entity type and topology defintions, creation status, tag value types, error functions. Also contains basic sets and tags functionality definitions.
User Guide
Documentation
C Specification v0.7
SIDL Specification v0.7
iMesh
Basic mesh services to manage a discrete mesh composed of sets of entities, such as nodes, edges, faces and volumes, modifications to these entities and tags and tag data associated sets of entities.
User Guide
Documentation
C Specification v0.7
SIDL Specification v0.7
iGeom
Continuum, geometric services such as pointwise interrogations, parametric and geometric model representations
User Guide
Documentation
C Specification
SIDL Specification v0.7
iField

Under development.
User Guide
Documentation
C Specification
SIDL Specification
iRel
Manage the relationships among two or more of the core data types, resolve cross references between entities in different groups, and provide additional functionality that depends on multiple core data types
User Guide
Documentation
C Specification
SIDL Specification


ITAPS API's are C-like and the C-specification can be called directly from C, Fortran, C++. Arguments are passed by value (in arguments) or by reference (inout, out) and Fortran users will need to use the %VAL extension. Memory allocation for lists and arrays are done either in the application or in the implementation. If inout list comes in allocated, the length must be long enough to store results of call. By definition, allocation/deallocation is done using C malloc/free and the application is required to free memory returned by implementation. Fortran users will need to use the "cray pointer" extension. Handle types are typedef'd to size_t (iBase_EntityHandle, iBase_EntitySetHandle, iBase_TagHandle, iMesh_Instance). For string arguments, we use char * with the length passed by value after all other arguments. For enumerated types, the values (iBase_SUCCESS, etc.) are available for comparison operations, but passed as integer arguments in C and C++ and as named parameters in Fortran.

Interface Implementations

The tables below list the implementations of the ITAPS interfaces that are currently available, their status, and distinguishing characteristics. For more information on a given interface implementation, please contact the ITAPS research listed in the POC column.

We believe that the software provided here is compliant with v0.7 of the ITAPS iMesh, iGeom, and iRel interfaces. All are believed to compile under Linux gcc/g++-3.2.3. If you have any problems with the software download, build or use process, please do not hesitate to contact us.

Implementations of the ITAPS iMesh Interface
Software Name
POC
Status
Distinguishing Characteristics
MOAB - Mesh-Oriented Data Base
More Information / Download
, ANL
Complete
All mesh region topologies except Septahedron, all upward and downward adjacencies (varying cost), 2D/3D, full implementation
GRUMMP - Generation and Refinment of Unstructured, Mixed-Element Meshes in Parallel
More Information / Download
, UBC
Complete
Supports triangles, quadrilaterals and tetrahdra, upward and downward adjacencies for vertex, face and region, 2D/3D, full implementation
FMDB - Flexible Distributed Mesh Database
More Information / Download
, RPI
Complete
Supports triangles, quadrilaterals, tetrahedron, hexahedron, and prisms, all upward and downward adjacencies (varying costs), 2D/3D, full implementation
NWGrid
More Information / Download
, PNNL
Partial
Unstructured mixed element, 2D/3D
Frontier
More Information / Download
, SUNY SB
Partial
Supports triangles, quadrilaterals, tetrahedron, hexahedron, all downward adjacenies plus vertex to face upward adjacency, 2D/3D, partial implementation (set functionality incomplete)

Implementations of the ITAPS iGeom Interface
Software Name
POC
Status
Distinguishing Characteristics
CGM Common Geometry Module
More Information / Download
, ANL
Complete
FMDB - Flexible Distributed Mesh Database
More Information / Download
, RPI
Partial
Does not include sets for the iGeom interface

Implementations of the ITAPS iRel Interface
Software Name
POC
Status
Distinguishing Characteristics
LASSO
More Information / Download
, ANL
Complete
Supports relations for all Mesh/Geom Impls

Useful links:

Compliance Testing

To ensure that your implementations are working as expected we provide a compliance testing software tool suite. As you develop your interface wrappers, please check for code correctness to ensure you are interface compliant before attempting to link with an ITAPS service. If you have confirmed you are compliant with these tests, but still have a problem with the use of an ITAPS implementation or service, please contact the ITAPS POC.

iMesh Coming soon.

Simple Examples

Hello iMesh