analytical

empymod.model.analytical(src, rec, res, freqtime, solution='fs', signal=None, ab=11, aniso=None, epermH=None, epermV=None, mpermH=None, mpermV=None, **kwargs)[source]

Return analytical full- or half-space solution.

Calculate the electromagnetic frequency- or time-domain field due to infinitesimal small electric or magnetic dipole source(s), measured by infinitesimal small electric or magnetic dipole receiver(s); sources and receivers are directed along the principal directions x, y, or z, and all sources are at the same depth, as well as all receivers are at the same depth.

In the case of a halfspace the air-interface is located at z = 0 m.

You can call the functions empymod.kernel.fullspace() and empymod.kernel.halfspace() in empymod.kernel directly. This interface is just to provide a consistent interface with the same input parameters as for instance for dipole().

This function yields the same result if solution=’fs’ as dipole(), if the model is a fullspace.

Included are:

  • Full fullspace solution (solution=’fs’) for ee-, me-, em-, mm-fields, only frequency domain, [HuTS15].

  • Diffusive fullspace solution (solution=’dfs’) for ee-fields, [SlHM10].

  • Diffusive halfspace solution (solution=’dhs’) for ee-fields, [SlHM10].

  • Diffusive direct- and reflected field and airwave (solution=’dsplit’) for ee-fields, [SlHM10].

  • Diffusive direct- and reflected field and airwave (solution=’dtetm’) for ee-fields, split into TE and TM mode [SlHM10].

Parameters
src, reclist of floats or arrays

Source and receiver coordinates [x, y, z] (m):

  • The x- and y-coordinates can be arrays, z is a single value.

  • The x- and y-coordinates must have the same dimension.

resfloat

Horizontal resistivity rho_h (Ohm.m).

Alternatively, res can be a dictionary. See the main manual of empymod too see how to exploit this hook to re-calculate etaH, etaV, zetaH, and zetaV, which can be used to, for instance, use the Cole-Cole model for IP.

freqtimearray_like

Frequencies f (Hz) if signal==None, else times t (s); (f, t > 0).

solutionstr, optional

Defines which solution is returned:

  • ‘fs’ : Full fullspace solution (ee-, me-, em-, mm-fields); f-domain.

  • ‘dfs’ : Diffusive fullspace solution (ee-fields only).

  • ‘dhs’ : Diffusive halfspace solution (ee-fields only).

  • ‘dsplit’ : Diffusive direct- and reflected field and airwave (ee-fields only).

  • ‘dtetm’ : as dsplit, but direct fielt TE, TM; reflected field TE, TM, and airwave (ee-fields only).

signal{None, 0, 1, -1}, optional

Source signal, default is None:

  • None: Frequency-domain response

  • -1 : Switch-off time-domain response

  • 0 : Impulse time-domain response

  • +1 : Switch-on time-domain response

abint, optional

Source-receiver configuration, defaults to 11.

electric source

magnetic source

x

y

z

x

y

z

electric

receiver

x

11

12

13

14

15

16

y

21

22

23

24

25

26

z

31

32

33

34

35

36

magnetic

receiver

x

41

42

43

44

45

46

y

51

52

53

54

55

56

z

61

62

63

64

65

66

anisofloat, optional

Anisotropy lambda = sqrt(rho_v/rho_h) (-); defaults to one.

epermH, epermVfloat, optional

Relative horizontal/vertical electric permittivity epsilon_h/epsilon_v (-). If epermH is provided but not epermV, isotropic behaviour is assumed. Default is one; ignored for the diffusive solution.

mpermH, mpermVfloat, optional

Relative horizontal/vertical magnetic permeability mu_h/mu_v (-); #mpermH = #mpermV = #res. If mpermH is provided but not mpermV, isotropic behaviour is assumed. Default is one; ignored for the diffusive solution.

verb{0, 1, 2, 3, 4}, optional

Level of verbosity, default is 2:

  • 0: Print nothing.

  • 1: Print warnings.

  • 2: Print additional runtime

  • 3: Print additional start/stop, condensed parameter information.

  • 4: Print additional full parameter information

Returns
EMEMArray, (nfreqtime, nrec, nsrc)

Frequency- or time-domain EM field (depending on signal):

  • If rec is electric, returns E [V/m].

  • If rec is magnetic, returns H [A/m].

EMArray is a subclassed ndarray with .pha and .amp attributes (only relevant for frequency-domain data).

The shape of EM is (nfreqtime, nrec, nsrc). However, single dimensions are removed.

If solution=’dsplit’, three ndarrays are returned: direct, reflect, air.

If solution=’dtetm’, five ndarrays are returned: direct_TE, direct_TM, reflect_TE, reflect_TM, air.

Examples

>>> import empymod
>>> import numpy as np
>>> src = [0, 0, 0]
>>> rec = [np.arange(1, 11)*500, np.zeros(10), 200]
>>> res = 50
>>> EMfield = empymod.analytical(src, rec, res, freqtime=1, verb=0)
>>> print(EMfield)
[  4.03091405e-08 -9.69163818e-10j   6.97630362e-09 -4.88342150e-10j
   2.15205979e-09 -2.97489809e-10j   8.90394459e-10 -1.99313433e-10j
   4.32915802e-10 -1.40741644e-10j   2.31674165e-10 -1.02579391e-10j
   1.31469130e-10 -7.62770461e-11j   7.72342470e-11 -5.74534125e-11j
   4.61480481e-11 -4.36275540e-11j   2.76174038e-11 -3.32860932e-11j]