PETGEM’s documentation
PETGEM (Parallel Edge-element Toolkit for General Electromagnetic Modeling) is an open-source code for 3D forward and inverse modeling in the frequency domain. It discretizes the electric field with high-order Nédélec (edge) finite elements of polynomial order 1 to 6 on unstructured tetrahedral meshes, and is written in C on top of PETSc and MPI.
The repository builds two kernels and a dispatcher:
fm.csem- forward modeling: computes the CSEM response of a given conductivity model.im.csem- inverse modeling: recovers a per-material conductivity model from observed data with L-BFGS and adjoint-state gradients.petgem- a dispatcher that selects either kernel (petgem fm/petgem im).
Pre- and post-processing are handled by a small Python package under utils/
(importable as petgem), which assembles the HDF5 input bundle the kernels
read.
More information
See our publication list at Publications
Getting started:
Forward modeling:
Inverse modeling:
Reference:
- Numerical formulation
- Data formats
- Mesh generation
- Solver options
- Troubleshooting
- Python API
- API Reference
- Assembly module (assembly.h)
- Common module (common.h)
- Constants module (constants.h)
- Fe_nedelec module (fe_nedelec.h)
- Fe_nodal module (fe_nodal.h)
- Fem module (fem.h)
- Grid module (grid.h)
- Inversion module (inversion.h)
- Io module (io.h)
- Kernels module (kernels.h)
- Mms module (mms.h)
- Postprocessing module (postprocessing.h)
- Receiver_interp module (receiver_interp.h)
- Solver module (solver.h)
- Transmitter module (transmitter.h)
- Version module (version.h)
Development:
About: