# 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:

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:

### Functions¶

 `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.