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``.