Skip to main content

Parallel python code for electromagnetic modeling in geophysics

Project description

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

Requirements

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.

Install

  • 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
    

Citations

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. https://doi.org/10.1007/978-3-319-57972-6_18

Project details


Release history Release notifications

This version
History Node

0.30.48

History Node

0.30.47

History Node

0.30.46

History Node

0.30.45

History Node

0.30.44

History Node

0.30.43

History Node

0.30.42

History Node

0.30.41

History Node

0.30.40

History Node

0.30.39

History Node

0.30.38

History Node

0.30.37

History Node

0.30.36

History Node

0.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
petgem-0.30.48.tar.gz (53.1 MB) Copy SHA256 hash SHA256 Source None Jan 31, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page