Package: petgem
petgemis a parallel python code for 3D Controlled-Source
Electromagnetic Method (3D CSEM) in geophysics using high-order edge finite
elements (Nédélec finite elements).Requirementspetgemis known to run on various flavors of Linux clusters. Its requirements are:PETSc(builded version forCOMPLEX-VALUED NUMBERS) for the use of direct/iterative parallel solversPython 3(versions 3.5.2, 3.6.3 and 3.6.9 have been tested)Numpyfor arrays manipulationScipyfor numerical operationsSingleton-decoratorSphinxandLaTeX(textlive) to generate documentationPetsc4pyfor parallel computations on distributed-memory platforms. It allows the use of parallel direct/iterative solvers fromPETScMpi4pyfor parallel computations on distributed-memory platforms.h5pyfor input/output tasks.On Linux, consult the package manager of your preference.petgemcan be
used without any installation by running the kernel from the top-level
directory of the distribution.InstallFollowing commands may require root privilegesDownloadPETSc(PETSc 3.7, 3.8, 3.9, 3.12, and 3.14 have been tested)Uncompress the PETSc archive (in this example, using PETSc 3.14.0):$ tar zxvf petsc-3.14.0.tar.gzConfigure 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. Forpetgemexecutions,PETSC MUST BE BUILD FOR COMPLEX-VALUED NUMBERS. In order to avoid incompatibilities between PETSC, petsc4py andpetgem, 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.14.0
$ export PETSC_DIR=$PWD
$ export PETSC_ARCH=arch-linux2-c-debugIf 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=complexIf you want support for MUMPS, please add following options to previous configure line:$ --download-mumps --download-scalapack --download-parmetis --download-metis --download-ptscotch --download-cmakeFurther, to activate GPUs support, please add following options to previous configure line:$ --with-cuda=1 --with_cuda_dir=PATHwherePATHis the directory of your CUDA libraries.Then, build and install PETSc:$ make $PETSC_DIR $PETSC_ARCH all
$ make $PETSC_DIR $PETSC_ARCH test
$ make $PETSC_DIR $PETSC_ARCH streamsEnsure yourmpicccompiler wrapper is on your search path:$ export PATH="${PETSC_DIR}/${PETSC_ARCH}/bin:${PATH}"Ensure you have a Numpy installed:$ pip3 install numpyAnd finally, installpetgemwith its dependencies (Scipy,Blessings,Sphinx,Petsc4py) by typing:$ pip3 install **petgem**CitationsIfpetgembeen 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., García-Castillo, L. E., Cela, J. M. (2019).Parallel 3D marine controlled-source electromagnetic modeling using high-order
tetrahedral Nédélec elements. Geophysical Journal International, ggz285,
vol 219: 39-65. ISSN 0956-540X.https://doi.org/10.1093/gji/ggz285Castillo-Reyes, O., de la Puente, J., Cela, J. M. (2018).*petgem: A parallel code for 3D CSEM forward modeling using edge finite
elements*. Computers & Geosciences, vol 119: 123-136. ISSN 0098-3004,
Elsevier.https://doi.org/10.1016/j.cageo.2018.07.005Castillo-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