Main modelling routines

Electromagnetic modeller to model electric or magnetic responses due to a three-dimensional electric or magnetic source in a layered-earth model with vertical transverse isotropic (VTI) resistivity, VTI electric permittivity, and VTI magnetic permeability, from very low frequencies (DC) to very high frequencies (GPR). The calculation is carried out in the wavenumber-frequency domain, and various Hankel- and Fourier-transform methods are included to transform the responses into the space-frequency and space-time domains.

empymod.model Module

empymod.model – Model EM-responses

EM-modelling routines. The implemented routines might not be the fastest solution to your specific problem. Use these routines as template to create your own, problem-specific modelling routine!

Principal routines:

The main routine is bipole(), which can model bipole source(s) and bipole receiver(s) of arbitrary direction, for electric or magnetic sources and receivers, both in frequency and in time. A subset of bipole() is dipole(), which models infinitesimal small dipoles along the principal axes x, y, and z. The third routine, loop(), can be used if the source or the receivers are loops instead of dipoles.

Further routines are:

  • analytical(): Calculate analytical fullspace and halfspace solutions.

  • dipole_k(): Calculate the electromagnetic wavenumber-domain solution.

  • gpr(): Calculate the Ground-Penetrating Radar (GPR) response.

The dipole_k() routine can be used if you are interested in the wavenumber-domain result, without Hankel nor Fourier transform. It calls straight the empymod.kernel. The gpr()-routine convolves the frequency-domain result with a wavelet, and applies a gain to the time-domain result. This function is still experimental.

The modelling routines make use of the following two core routines:

  • fem(): Calculate wavenumber-domain electromagnetic field and carry out the Hankel transform to the frequency domain.

  • tem(): Carry out the Fourier transform to time domain after fem().


bipole(src, rec, depth, res, freqtime[, …])

Return EM fields due to arbitrary rotated, finite length EM dipoles.

dipole(src, rec, depth, res, freqtime[, …])

Return EM fields due to infinitesimal small EM dipoles.

loop(src, rec, depth, res, freqtime[, …])

Return EM fields due to a magnetic source loop.

analytical(src, rec, res, freqtime[, …])

Return analytical full- or half-space solution.

gpr(src, rec, depth, res, freqtime, cf[, …])

Return Ground-Penetrating Radar signal.

dipole_k(src, rec, depth, res, freq, wavenumber)

Return electromagnetic wavenumber-domain field.

fem(ab, off, angle, zsrc, zrec, lsrc, lrec, …)

Return electromagnetic frequency-domain response.

tem(fEM, off, freq, time, signal, ft, ftarg)

Return time-domain response of the frequency-domain response fEM.