VMAP Standard Specifications is at the core of the software architecture shown in the figure. The specification document acts as a guideline for the standard implementation. The documentation takes the user through the C++ library descriptions, the data structure, a short preview of the API documentation, installation process of the API, the storage structure definitions, other additional support libraries and finally some tutorials and test cases. This document is maintained and updated regularly by the VMAP Standards Community.
There are two different ways to implement the VMAP Standard Specification – using the reference solution ‘VMAP Standard I/O Library’, or implementing all IO routines oneself. Since, the VMAP Standard is an open source and the document is available for download from the VMAP website, any independent software vendor (ISV) or academic software developer can implement their own I/O library and will be conformant to VMAP if the input and output is fully compatible with the data-structure defined in the VMAP Standards Specifications. VMAP file format is based on the HDF5 data format, explained in section 6.2. This is an obligatory file format necessary to conform with the VMAP Standard. The VMAP file can be viewed using the publically available open source HDF5 viewer tools or any proprietary viewer tools which support the HDF5 file format.
VMAP Standard IO Library
Although the VMAP I/O Library is written in C++ and it is linked to the HDF5 C++ libraries, there is obviously the possibility to connect it with solver scripts which are offered in Python or Java. Many of the popular CAE codes offer APIs which can be used to create libraries to carry out user specific tasks. These APIs could be programming languages other than C++ like Python, Java; here we can make use of SWIG (Simplified Wrapper & Interface Generator) which connects high-level languages like python & Java to low- level languages like C++/C. SWIG is typically used to parse C/C++ interfaces and generate the ‘glue code’ required for the above target languages to call into the C/C++ code.