# POET [POET](https://doi.org/10.5281/zenodo.4757913) is a coupled reactive transport simulator implementing a parallel architecture and a fast, original MPI-based Distributed Hash Table. ![POET's Coupling Scheme](./docs/Scheme_POET_en.svg) ## Parsed code documentiation A parsed version of POET's documentation can be found at [Gitlab pages](https://naaice.git-pages.gfz-potsdam.de/poet). ## External Libraries The following external libraries are shipped with POET: - **argh** - https://github.com/adishavit/argh (BSD license) - **IPhreeqc** with patches from GFZ - https://github.com/usgs-coupled/iphreeqc - https://git.gfz-potsdam.de/naaice/iphreeqc - **tug** - https://git.gfz-potsdam.de/naaice/tug ## Installation ### Requirements To compile POET you need following software to be installed: - C/C++ compiler (tested with GCC) - MPI-Implementation (tested with OpenMPI and MVAPICH) - CMake 3.9+ - Eigen3 3.4+ (required by `tug`) - *optional*: `doxygen` with `dot` bindings for documentation - R language and environment including headers or `-dev` packages (distro dependent) The following R packages (and their dependencies) must also be installed: - [Rcpp](https://cran.r-project.org/web/packages/Rcpp/index.html) - [RInside](https://cran.r-project.org/web/packages/RInside/index.html) - [qs](https://cran.r-project.org/web/packages/qs/index.html) This can be simply achieved by issuing the following commands: ```sh # start R environment $ R # install R dependencies (case sensitive!) > install.packages(c("Rcpp", "RInside","qs")) > q(save="no") ``` ### Compiling source code POET is built with CMake. You can generate Makefiles by running the usual: ```sh mkdir build && cd build cmake .. ``` This will create the directory `build` and processes the CMake files and generate Makefiles from it. You're now able to run `make` to start build process. If everything went well you'll find the executables at `build/src/poet`, but it is recommended to install the POET project structure to a desired `CMAKE_INSTALL_PREFIX` with `make install`. During the generation of Makefiles, various options can be specified via `cmake -D