Installation

Dependencies

SOUPy depends on FEniCS version 2019.1. and hIPPYlib version 3.0.0 or above.

FEniCS needs to be built with the following dependencies enabled:

  • numpy, scipy, matplotlib, mpi4py

  • PETSc and petsc4py (version 3.10.0 or above)

  • SLEPc and slepc4py (version 3.10.0 or above)

  • PETSc dependencies: parmetis, scotch, suitesparse, superlu_dist, ml, hypre

  • (optional): gmsh, mshr, jupyter

Installation with Docker

SOUPy (and hIPPYlib) can be used with a Docker image built with FEniCS/dolfin. The FEniCS documentation provides installation instructions for FEniCS’s official images (note these are built on older versions of python). Alternatively, a customized docker image built on the FEniCS 2019.1.0 image with hIPPYlib pre-installed is available here

More recent builds of the docker images with FEniCS that are compatible with the [Frontera(https://frontera-portal.tacc.utexas.edu/) HPC system] at the Texas Advanced Computing Center can be found under the hippylib/tacc-containers repository. The repository also provides instructions for usage on Frontera using Apptainer. Here, we will summarize the procedure for using the image on local machines with Docker.

  1. Pull one the docker images

docker pull uvilla/fenics-2019.1-tacc-mvapich2.3-ib:latest
  1. Under the desired working directory, clone hIPPYlib and SOUPy

git clone https://github.com/hippylib/hippylib.git
git clone https://github.com/hippylib/soupy.git
  1. The images are built for the MPI implementations on TACC systems. When running locally, the environment variables MV2_SMP_USE_CMA=0 and MV2_ENABLE_AFFINITY=0 need to be set.

docker run -e MV2_SMP_USE_CMA=0 -e MV2_ENABLE_AFFINITY=0 -ti -v $(pwd):/home1/ uvilla/fenics-2019.1-tacc-mvapich2.3-ib:latest /bin/bash

This will run the container and bind the current working directory to /home1. The running container should now have /home1/hippylib and /home1/soupy.

  1. With the container running, first set the path to hippylib export HIPPYLIB_PATH=/home1/hippylib. The examples in the SOUPy repository can then be executed as

cd /home1/soupy/examples/poisson
python3 driver_poisson_mean.py

Note: benign MPI warning messages may show up when running on ARM machines.

Building the SOUPy documentation using Sphinx

Documentation for SOUPy can be built using sphinx, along with extensions myst_nb and sphinx_rtd_theme. These can be installed via pip.

To build simply run make html from doc folder.