GEOSX is a simulation framework for modeling coupled flow, transport, and geomechanics in the subsurface. The code provides advanced solvers for a number of target applications, including:
- carbon sequestration,
- geothermal energy,
- and similar systems.
A key focus of the project is achieving scalable performance on current and next-generation high performance computing systems. We do this through a portable programming model and research into scalable algorithms.
You may want to browse our publications page for more details on the HPC, numerics, and applied engineering components of this effort.
*Note - This is not an official repository of GEOSX
Official links:
- GEOSX documentation.
- GEOSX PDF documentation
- GEOSX Official website
- GEOSX official Github repository
- Dockerfile to build GEOSX (GEOSX Documentation — GEOSX documentation (readthedocs-hosted.com)) from source.
- The TPL base image (Image Layer Details - geosx/ubuntu20.04-gcc9:213-913 | Docker Hub) used contains prebuit TPL binaries for GEOSX.
- Prebuilt GEOSX image (using docker.cmake in this repository) is hosted at Docker-hub: pradhyumna85/geosx - Docker Image | Docker Hub, tag: pradhyumna85/geosx:0.2.0-hp-zbook-17-G6-xeon-x86
*Note - for the build guide below, it is recommended to use the latest TPL base image tag with latest GEOSX git commit or source code.
*Note - At the time of writing this, the above prebuilt image was built using git commit id: af23e1b4a. Browse files for th above commit version: tree - af23e1b4a.
Please refer the build ARGs in the Dockerfile and pass these to docker build according to your needs, like:
docker build --build-arg ORG=geosx --build-arg IMG=ubuntu20.04-gcc9 --build-arg CMAKE_BASE_VERSION=3.22 --build-arg CMAKE_SUB_VERSION=6 --build-arg VERSION=213-913 -t remote-dev-ubuntu20.04-gcc9:213-913 .
However for builing with default ARGs:
docker build -t remote-dev-ubuntu20.04-gcc9:213-913 .
The above base build image is available at: Image Layer Details - pradhyumna85/geosx:base-build-image-geosx-0.2.0 | Docker Hub
On windows cmd:
docker run -it -d --cap-add=SYS_PTRACE --name geosx-build-image -p 64000:22 -v "%cd%\home:/home/mpiuser" remote-dev-ubuntu20.04-gcc9:213-913
On powershell/bash:
docker run -it -d --cap-add=SYS_PTRACE --name geosx-build-image -p 64000:22 -v "${PWD}\home:/home/mpiuser" remote-dev-ubuntu20.04-gcc9:213-913
*Note: -v parameter is for bind mount and is optional
docker exec -it geosx-build-image bash
Cloning and setting up GEOSX repository. Starting with switching user
su mpiuser
cd /app
git clone https://github.com/GEOSX/GEOSX.git
cd GEOSX
git lfs install
git submodule init
git submodule deinit integratedTests
git submodule update
Place your platform cmake file at host-configs/your-platform.cmake. Example docker.cmake is available in this github repository.
cd /app/GEOSX
python scripts/config-build.py -hc host-configs/your-platform.cmake -bt Release
cd build-your-platform-release
In the above command build-your-platform-release
will be build-docker-release
if using docker.cmake
make -j16
In the above "16" is the number of cpu cores available, set it to maximum cores available to the container, eg "4"
make install
Testing the build
cd /app/GEOSX/build-your-platform-release
ctest -V
Ideally it should show 100% coverage
Built GEOSX binary now should be available at /app/GEOSX/install-your-platform-release/bin/geosx
, in the install-your-platform-release
will be install-docker-release
if used docker.cmake for building.
You can test the binary by the command:
/app/GEOSX/install-your-platform-release/bin/geosx --help
Done!
After successfully building GEOSX in the container you can commit that container as an image (and push to some container repository) for reusing later.
docker commit geosx-build-image <your_docker_repository_url>:<tag>
docker push <your_docker_repository_url>:<tag>
*Make sure you are authenticated before pushing. Build is already pushed and available at: Image Layer Details - pradhyumna85/geosx:0.2.0-hp-zbook-17-G6-xeon-x86 | Docker Hub.
You can also find the basic guilde on using GEOSX inside a docker container using this prebuilt image at my docker hub repository's readme/description: pradhyumna85/geosx - Docker Image | Docker Hub.