skip to navigation
skip to content

petgem 0.4

Parallel python code for electromagnetic modeling in geophysics

petgem is a parallel python code for 3D Controlled-Source Electromagnetic Method (3D CSEM) in geophysics using edge finite elements (Nedelec finite elements).


PETGEM is known to run on various flavors of Linux clusters. Its requirements are:

  • PETSc (builded version for COMPLEX-VALUED NUMBERS) for the use of direct/iterative parallel solvers
  • Python 3 (versions 3.5.2 and 3.6.3 have been tested)
  • Numpy for arrays manipulation
  • Scipy for numerical operations
  • Blessings for terminal styling and positioning
  • Sphinx and LaTeX (textlive) to generate documentation
  • Petsc4py for parallel computations on distributed-memory platforms. It allows the use of parallel direct/iterative solvers from PETSc

On Linux, consult the package manager of your preference. PETGEM can be used without any installation by running the kernel from the top-level directory of the distribution.


  • Following commands may require root privileges

  • Download PETSc (PETSc 3.7 and 3.8 have been tested)

  • Uncompress the PETSc archive (in this example, using PETSc 3.8.3):

    $ tar zxvf petsc-3.8.3.tar.gz
  • Configure and build PETSc. The configuration options depend on the calculations you want to perform (complex- or real-valued) as well as your compiler/MPI/Blas/Lapack setup. For PETGEM executions, PETSC MUST BE BUILD FOR COMPLEX-VALUED NUMBERS. In order to avoid incompatibilities between PETSC, petsc4py and PETGEM, we highly recommend the following configuration lines. Please, visit PETSc website for advanced configuration options. If you have a clean environment (not working MPI/Blas/Lapack), then run:

    $ cd petsc-3.8.3
    $ export PETSC_DIR=$PWD
    $ export PETSC_ARCH=arch-linux2-c-debug
  • If you do not want support for MUMPS, run following configure line:

    $ ./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran  --download-mpich --download-fblaslapack --with-scalar-type=complex
  • If you want support for MUMPS, please add following options to previous configure line:

    $ --download-mumps --download-scalapack --download-parmetis --download-metis --download-ptscotch --download-cmake
  • Then, build and install PETSc:

    $ make $PETSC_DIR $PETSC_ARCH all
    $ make $PETSC_DIR $PETSC_ARCH test
    $ make $PETSC_DIR $PETSC_ARCH streams
  • Ensure your mpicc compiler wrapper is on your search path:

    $ export PATH="${PETSC_DIR}/${PETSC_ARCH}/bin:${PATH}"
  • Ensure you have a Numpy installed:

    $ pip3 install numpy
  • And finally, install PETGEM with its dependencies (Scipy , Blessings, Sphinx, Petsc4py) by typing:

    $ pip3 install petgem


If petgem been significant to a project that leads to an academic publication, please acknowledge that fact by citing the project:

  • Castillo-Reyes, O., de la Puente, J., Cela, J.M. (2017). Three-Dimensional CSEM Modelling on Unstructured Tetrahedral Meshes Using Edge Finite Elements, Communications in Computer and Information Science, vol 697: 247-256. ISBN 978-3-319-57971-9 Springer, Cham.
File Type Py Version Uploaded on Size
petgem-0.4.tar.gz (md5) Source 2018-02-21 50MB