-
Notifications
You must be signed in to change notification settings - Fork 8
Description
Environment
- OS: Linux (HPC cluster)
- Compiler: GCC 7.5.0 (attempting to build volna2hdf5)
- OP2 Built With: GCC 12.4 (C++17 default)
- OP2 Version: Latest from OP2-Common repository
- Build Target: volna2hdf5 utility in sp-volna/volna2hdf5
- Dependencies:
- OP2-Common (built with GCC 12.4, requires C++17)
- HDF5 1.14.3 (sequential)
- OpenMPI 4.1.6
- ParMETIS (32-bit indices)
- PT-SCOTCH 7.0.4
Problem Summary
The volna2hdf5 utility cannot be built due to incompatible C++ standards:
- OP2 libraries were built with GCC 12.4 (defaults to C++17/C++20)
- VOLNA's bundled dependencies (Eigen2, old Boost, YAC) are ancient and incompatible with modern C++ standards
- The Makefile in volna2hdf5/ originally specified -std=c++11, which is insufficient for OP2 and incompatible with the legacy libraries
This creates an unresolvable dependency triangle.
Build Errors
Error 1: With -std=c++98 (to satisfy Eigen2/Boost/YAC)
OP2-Common/op2/include/op_lib_core.h:414:1: error: 'constexpr' does not name a type
constexpr size_t round32(size_t x) { return (x + 31) & ~31; }OP2 headers use C++11+ features.
Error 2: With -std=c++11 (Makefile default)
Eigen2 template parsing error:
volna/volna_init/external/eigen2/Eigen/src/Array/BooleanRedux.h:142:34:
error: expected primary-expression before 'int'
return this->cast<bool>().cast<int>().sum();After patching Eigen2 with template keyword, YAC/Boost errors:
volna/volna_init/external/yac/yac_virtual_machine.cpp:379:63:
error: use of deleted function 'yac::sys_function_node::sys_function_node(const yac::sys_function_node&)'
/scratch/yogeshs/VOLNA/volna/volna_init/external/boost/smart_ptr/shared_ptr.hpp:305:9:
error: use of deleted function 'boost::shared_ptr<yac::function>::shared_ptr(...)'Questions for Maintainers
-
When was VOLNA last successfully built against modern OP2?
- What compiler version was used?
- Was OP2 built with an older GCC that still defaulted to C++98/C++03?
-
Are the bundled external libraries (Eigen2, Boost, YAC) still necessary?
- Can they be upgraded to modern versions?
- is YAC still actively used in VOLNA?
-
Is volna2hdf5 actively maintained?
- Is it a critical tool or legacy utility?
-
What is the complete data workflow?
- Can .h5 files be generated directly without volna2hdf5?
- Are there example/test .h5 files available?
Should I rebuild OP2 with an older GCC (e.g., GCC 7.5) that defaults to C++11?
Thank you for maintaining VOLNA! Looking forward to guidance on resolving this.