MACH-Aero
MACH-Aero copied to clipboard
Investigate switching to HDF5 for use with CGNS
Type of issue
What types of issue is it? Select the appropriate type(s) that describe this issue
- Maintenance
Description
Right now we build CGNS with ADF, but CGNS recommends HDF5 which is also becoming more popular within the scientific community. Investigate switching to use HDF5, understand the build process, pros/cons, and make a decision whether to switch. Can be done in conjunction with upgrading to CGNS 4.x
I looked into this, and the process is fairly straightforward. Installing HDF5 can be done in one of several ways
- build from source (both
makeandcmakeare supported, process is pretty straightforward but unclear if we need zlib and szip support) - install via system packages such as Debian. Unclear what the version requirements are from CGNS so may not be compatible.
- install via PETSc. Again unclear what version they install and whether it would work with CGNS
The different config files will also have to be updated to link to HDF5 appropriately. This is not necessary if we install via PETSc since the PETSc linker flags will include everything in that case.
Finally, we will also have to convert all existing meshes to use HDF5 format. CGNS comes with a utility to do this but it will still take some time (analogous to the py2/3 transition with pyoptsparse history files).
To add to this, I have used HDF5 + CGNS in the past on Ubuntu with the following installation process (this comes from the code "DUST"):
HDF5 can be found packed in many distribution.
However it can be easily built with the following procedure:
* clone the desired version of HDF5 fromt the git repositories:
git clone -b hdf5-1_10_5 https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git
* move into the folder, and build an install folder
cd hdf5
mkdir install
*configure the installation
./configure --prefix=/absolute/path/to/install --enable-fortran
*build & install
make
make install
CGNS can be found packed in some distributions, however tends to be outdated,
and since CGNS tend to change radically the API behaviour it is advised to
build it from the git repositories
* clone the stable release from the git repositories
git clone -b v3.3.1 https://github.com/CGNS/CGNS.git
* move into folder, create the installation folders
cd CGNS
mkdir build install
cd build
* configure the installation
export HDF5_ROOT=/path/to/hdf5/installation (should not be necessary when employing system libraries)
cmake -D CGNS_ENABLE_FORTRAN=ON -D CGNS_ENABLE_HDF5=ON -D CMAKE_INSTALL_PREFIX=../install ../
* build & install
make
make install
We can adapt this as needed for our specific versions.