Installation ============ C++ Build --------- Dependencies ~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 30 70 * - Library - Purpose * - GCC ≥ 11 (C++20) - Compiler * - `CGAL `_ - Delaunay triangulation for 2D interpolation * - `GSL `_ - Cubic spline derivatives * - `Ceres Solver `_ - Non-linear least squares and root-finding * - `yaml-cpp `_ - YAML configuration parsing * - gflags / glog - Ceres runtime dependencies * - `GoogleTest `_ - Unit tests only On Debian/Ubuntu: .. code-block:: bash apt-get install g++ make libcgal-dev libgsl-dev libceres-dev libyaml-cpp-dev libgtest-dev Building from source ~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash cd src make The compiled binary is ``src/bulk``. Docker ------ A pre-built image is available on the MUSES GitLab registry: .. code-block:: bash docker pull registry.gitlab.com/nsf-muses/saturation-properties:latest docker run -v $(pwd)/input:/opt/input -v $(pwd)/output:/opt/output \ registry.gitlab.com/nsf-muses/saturation-properties:latest /bin/bash -c "cd src && ./bulk" To build locally from the provided Dockerfile instead: .. code-block:: bash docker build -t saturation-properties . docker run -v $(pwd)/input:/opt/input -v $(pwd)/output:/opt/output \ saturation-properties /bin/bash -c "cd src && ./bulk" Python utilities (optional) --------------------------- The config validation and generation scripts require Python: .. code-block:: bash pip install -r requirements.txt Required packages: ``openapi-core==0.19.4``, ``pyyaml``.