The CHLone CGNS/HDF5 implementation
Its main product is a library with four interface levels available for CGNS application developpers:
A CGNS/HDF5 file has an HDF5 layout that can be read or write by any application using CGNS/MLL functions as well as CHLone functions. The resulting file you obtain using CHLone is the same as a file obtained using CGNS/MLL, the change is the actual implementation of the HDF5 function calls performed.
The features CHLone (CGNS HDF5 Library only node edition) wants to change or add comparing to CGNS/MLL are:
- path-based load/save of nodes
- retrieve tree structure and data size without actual data load
- thread-safe & multi-threading support
- no-buffer read/write, data read/write only if explicitely required
- full int32/int64/float32/float64 support
- memory contiguous load/save of arrays
- optional checks (also remove useless extra checks)
- HDF5 physical driver independence
- test suites with coverage
The reason why CHLone has been developped is to provide the CGNS community with another way to build and check their files. Today, the CGNS standard defines a data model for CFD and comes with a example implementation library, so-called the CGNS/MLL.
The data model is a tree composed of atomic nodes, the document so-called CGNS/SIDS is the specification for this data model which physical representation is made by means of a ‘mapping’. There are a SIDS-to-ADF mapping, SIDS-to-HDF5 and SIDS-to-Python. These mappings have actual implementations, these provide the users with functions calls that manipulates a single node or a sub-tree of nodes. The unique implementation of SIDS-to-ADF, SIDS-to-HDF5 and SIDS-to-XML is the so-called CGNS/MLL, that stands for Mid-Level Library.
There is no other implementation, thus the only way to be sure your data is CGNS/SIDS compliant is the fact that you can read and write it using CGNS/MLL. CHLone wants to dissociate the compliance to the use of CGNS/MLL. The CHLone library is not better than the CGNS/MLL library, it is something different.
- In this document, cgns.org refers to the official CGNS web site and by extension to its contents. For example, the cgns.org documentation is the official documentation found on this web site. CGNS stands for CFD General Notation System.
- The specification of the CGNS data model. This cgns.org document is the reference for the specification of a CGNS compliant tree at the conceptual level. The implementation is achieved once a mapping has been selected (e.g. CGNS/ADF, CGNS/HDF or CGNS/Python). SIDS stands for Standard Interface Data Structures.
- The implementation of the CGNS/ADF and CGNS/HDF specifications. This librarie and its C and Fortran APIs are available on cgns.org web site. MLL stands for mid-level library’ (ADF and HDF5 are the `low-level libraries).
- The cgns.org mapping document describing the implementation of SIDS on the ADF storage layer. This doesn’t include the C or fortran actual implementation which is available only in the CGNS/MLL librarie. ADF stands for Advanced Data Format developed by Boeing and NASA.
- The cgns.org mapping document describing the implementation of SIDS on the HDF5 storage layer. This doesn’t include the C or fortran actual implementation which is available only in the CGNS/MLL librarie. HDF stands for Hierarchical Data Format developed by the hdf group.
- The HDF5 object identifier. It is an integer which is unique and is used by the HDF5 functions to find an object. When you create or read a HDF5 object, you get such a hid_t, then you use it in following functions calls to refer to this object.