a dash of

empymod, revisited

20 June 2017

My postdoc project around the electromagnetic Python modeller empymod grew bigger than anticipated, and lives on even after the postdoc finished last January. Here a short summary of what happened since my previous blog entry.


Most importantly, empymod got its own home at empymod.github.io, with its own GitHub repository available under github.com/empymod.


The feature list grew a lot bigger. Current features:

  • Calculates the complete (diffusion and wave phenomena) 3D electromagnetic field in a layered-earth model including vertical transverse isotropic (VTI) resistivity, VTI electric permittivity, and VTI magnetic permeability, for electric and magnetic sources as well as electric and magnetic receivers.
  • Modelling routines:
    • bipole: arbitrary oriented, finite length bipoles with given source strength; space-frequency and space-time domains.
    • dipole: infinitesimal small dipoles oriented along the principal axes, normalized field; space-frequency and space-time domains.
    • wavenumber: as dipole, but returns the wavenumber-frequency domain response.
    • gpr: calculates the ground-penetrating radar response for given central frequency, using a Ricker wavelet (experimental).
    • analytical: interface to the analytical, space-frequency and space-time domain solutions.
  • Hankel transforms (wavenumber-frequency to space-frequency transform)
    • Adaptive quadrature
    • Fast Hankel transform (includes 9 different filters between 51 and 801 points; own ones can be provided)
    • Quadrature with extrapolation
  • Fourier transforms (space-frequency to space-time transform)
    • Sine/Cosine-transforms (includes 5 different filters between 81 and 241 points; own ones can be provided)
    • Quadrature with extrapolation
    • Fast Fourier Transform
    • Logarithmic Fast Fourier Transform
  • Analytical, space-frequency and space-time domain solutions
    • Complete full-space (electric and magnetic sources and receivers); space-frequency domain
    • Diffusive half-space (electric sources and receivers); space-frequency and space-time domains
      • Direct wave (= diffusive full-space solution)
      • Reflected wave
      • Airwave (semi-analytical in the case of step responses)

More is planned for the future, have a look at the Roadmap if you are interested.


There are two publications regarding empymod. The first one is in the journal Geophysics, about empymod as such:

Werthmüller, D., 2017, An open-source full 3D electromagnetic modeler for 1D VTI media in Python: empymod: Geophysics, 82, WB9-WB19; DOI: 10.1190/geo2016-0626.1.

The second one is a Geophysical Tutorial using empymod as forward modeller in The Leading Edge.

Werthmüller, D., 2017, Getting started with controlled-source electromagnetic 1D modeling: The Leading Edge, 36, 352-355; 10.1190/tle36040352.1.

The second article is Open Access, and freely available. Either way, you find both articles either on my research page or on the empymod project-page if you are interested.


Together with its own website and its own GitHub page empymod got as well its own, simple logo in two versions:

logo-empymod-plain.png logo-empymod.png

Final words

Three things remained the same: The manual can still be found on empymod.readthedocs.io, and the notebook repository at empymod/example-notebooks contains more and more examples of the usage of empymod. And, of course, it remained open-source under the lax permissive Apache License, Version 2.0.

Please get in touch if you would like to contribute some additional code to empymod or additional examples of its usage, encountered a bug, or simply have a question regarding its usage. Just make a pull-request or open an issue on GitHub. Have a look at the Roadmap if you need an idea on what to work.