Installation
C++ Build
Dependencies
Library |
Purpose |
|---|---|
Multidimensional root-finding |
|
Input/output tables (C++ API) |
|
Configuration file parsing |
|
Delaunay triangulation |
|
OpenMP |
Parallel grid evaluation |
CMake >= 3.5, C++17 compiler |
Build toolchain |
Ubuntu / Debian
sudo apt install \
libgsl-dev \
libhdf5-dev \
libyaml-cpp-dev \
libcgal-dev libgmp-dev libmpfr-dev
macOS (Homebrew)
brew install gsl hdf5 yaml-cpp cgal libomp
On macOS the OpenMP runtime is provided by libomp, which Homebrew keeps
keg-only. Point CMake at it when configuring:
cmake -S . -B build -DOpenMP_ROOT="$(brew --prefix libomp)"
Building from source
From the repository root:
cmake -S . -B build
cmake --build build -j
The compiled binary is build/generate_eos_table.
To also build and run the unit tests:
cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build -j
cd build && ctest --output-on-failure
Docker
Build the image from the repository root:
docker build --platform linux/amd64 -t eos-inverter .
Run the inverter by mounting your input EoS directory and an output directory:
docker run --rm \
--platform linux/amd64 --user $(id -u):$(id -g) \
-v /path/to/my/config:/opt/input \
-v /path/to/output:/opt/output \
eos-inverter \
./build/generate_eos_table input/config.yaml
Inside the container the working directory is /opt/. Ensure your config.yaml’s input.path points directly to the EoS table file, using a path relative to /opt (e.g. input.path: input/thermo.csv). If the table file lives in its own mounted directory, mount it separately (e.g. -v /path/to/my/eos:/opt/eos and set input.path: eos/thermo.csv).