Other functions

empymod.kernel Module

empymod.kernel – Kernel calculation

Kernel of empymod, calculates the wavenumber-domain electromagnetic response. Plus analytical full- and half-space solutions.

The functions wavenumber(), angle_factor(), fullspace(), greenfct(), reflections(), and fields() are based on source files (specified in each function) from the source code distributed with [HuTS15], which can be found at software.seg.org/2015/0001. These functions are (c) 2015 by Hunziker et al. and the Society of Exploration Geophysicists, https://software.seg.org/disclaimer.txt. Please read the NOTICE-file in the root directory for more information regarding the involved licenses.

Functions

wavenumber(zsrc, zrec, lsrc, lrec, depth, …)

Calculate wavenumber domain solution.

angle_factor(angle, ab, msrc, mrec)

Return the angle-dependent factor.

fullspace(off, angle, zsrc, zrec, etaH, …)

Analytical full-space solutions in the frequency domain.

greenfct(zsrc, zrec, lsrc, lrec, depth, …)

Calculate Green’s function for TM and TE.

reflections(depth, e_zH, Gam, lrec, lsrc)

Calculate Rp, Rm.

fields(depth, Rp, Rm, Gam, lrec, lsrc, zsrc, …)

Calculate Pu+, Pu-, Pd+, Pd-.

halfspace(off, angle, zsrc, zrec, etaH, …)

Return frequency- or time-space domain VTI half-space solution.

empymod.transform Module

empymod.transform – Hankel and Fourier Transforms

Methods to carry out the required Hankel transform from wavenumber to frequency domain and Fourier transform from frequency to time domain.

The functions for the QWE and DLF Hankel and Fourier transforms are based on source files (specified in each function) from the source code distributed with [Key12], which can be found at software.seg.org/2012/0003. These functions are (c) 2012 by Kerry Key and the Society of Exploration Geophysicists, https://software.seg.org/disclaimer.txt. Please read the NOTICE-file in the root directory for more information regarding the involved licenses.

Functions

hankel_dlf(zsrc, zrec, lsrc, lrec, off, …)

Hankel Transform using the Digital Linear Filter method.

hankel_qwe(zsrc, zrec, lsrc, lrec, off, …)

Hankel Transform using Quadrature-With-Extrapolation.

hankel_quad(zsrc, zrec, lsrc, lrec, off, …)

Hankel Transform using the QUADPACK library.

fourier_dlf(fEM, time, freq, ftarg)

Fourier Transform using the Digital Linear Filter method.

fourier_qwe(fEM, time, freq, ftarg)

Fourier Transform using Quadrature-With-Extrapolation.

fourier_fftlog(fEM, time, freq, ftarg)

Fourier Transform using FFTLog.

fourier_fft(fEM, time, freq, ftarg)

Fourier Transform using the Fast Fourier Transform.

dlf(signal, points, out_pts, filt, pts_per_dec)

Digital Linear Filter method.

qwe(rtol, atol, maxint, inp, intervals[, …])

Quadrature-With-Extrapolation.

get_dlf_points(filt, inp, nr_per_dec)

Return calculation points required for DLF.

get_fftlog_input(rmin, rmax, n, q, mu)

Return parameters required for FFTLog.

empymod.filters Module

empymod.filters – Digital Linear Filters

Filters for the Digital Linear Filter (DLF) method for the Hankel [Ghos70]) and the Fourier ([Ande75]) transforms.

To calculate the dlf.factor I used

np.around(np.average(dlf.base[1:]/dlf.base[:-1]), 15)

The filters kong_61_2007 and kong_241_2007 from [Kong07], and key_101_2009, key_201_2009, key_401_2009, key_81_CosSin_2009, key_241_CosSin_2009, and key_601_CosSin_2009 from [Key09] are taken from DIPOLE1D, [Key09], which can be downloaded at https://marineemlab.ucsd.edu/Projects/Occam/1DCSEM (1DCSEM). DIPOLE1D is distributed under the license GNU GPL version 3 or later. Kerry Key gave his written permission to re-distribute the filters under the Apache License, Version 2.0 (email from Kerry Key to Dieter Werthmüller, 21 November 2016).

The filters anderson_801_1982 from [Ande82] and key_51_2012, key_101_2012, key_201_2012, key_101_CosSin_2012, and key_201_CosSin_2012, all from [Key12], are taken from the software distributed with [Key12] and available at https://software.seg.org/2012/0003 (SEG-2012-003). These filters are distributed under the SEG license.

The filter wer_201_2018 was designed with the add-on fdesign, see https://github.com/emsig/article-fdesign.

Functions

kong_61_2007()

Kong 61 pt Hankel filter, as published in [Kong07].

kong_241_2007()

Kong 241 pt Hankel filter, as published in [Kong07].

key_101_2009()

Key 101 pt Hankel filter, as published in [Key09].

key_201_2009()

Key 201 pt Hankel filter, as published in [Key09].

key_401_2009()

Key 401 pt Hankel filter, as published in [Key09].

anderson_801_1982()

Anderson 801 pt Hankel filter, as published in [Ande82].

key_51_2012()

Key 51 pt Hankel filter, as published in [Key12].

key_101_2012()

Key 101 pt Hankel filter, as published in [Key12].

key_201_2012()

Key 201 pt Hankel filter, as published in [Key12].

wer_201_2018()

Werthmüller 201 pt Hankel filter, 2018.

key_81_CosSin_2009()

Key 81 pt CosSin filter, as published in [Key09].

key_241_CosSin_2009()

Key 241 pt CosSin filter, as published in [Key09].

key_601_CosSin_2009()

Key 601 pt CosSin filter, as published in [Key09].

key_101_CosSin_2012()

Key 101 pt CosSin filter, as published in [Key12].

key_201_CosSin_2012()

Key 201 pt CosSin filter, as published in [Key12].

Classes

DigitalFilter(name[, savename, filter_coeff])

Simple Class for Digital Linear Filters.

empymod.utils Module

empymod.utils – Utilites

Utilities for empymod.model such as checking input parameters.

This module consists of four groups of functions:
  1. General settings

  2. Class EMArray

  3. Input parameter checks for modelling

  4. Internal utilities

Functions

check_time_only(time, signal, verb)

Check time and signal parameters.

check_time(time, signal, ft, ftarg, verb)

Check time domain specific input parameters.

check_model(depth, res, aniso, epermH, …)

Check the model: depth and corresponding layer parameters.

check_frequency(freq, res, aniso, epermH, …)

Calculate frequency-dependent parameters.

check_hankel(ht, htarg, verb)

Check Hankel transform parameters.

check_loop(loop, ht, htarg, verb)

Check loop parameter.

check_dipole(inp, name, verb)

Check dipole parameters.

check_bipole(inp, name)

Check di-/bipole parameters.

check_ab(ab, verb)

Check source-receiver configuration.

check_solution(solution, signal, ab, msrc, mrec)

Check required solution with parameters.

get_abs(msrc, mrec, srcazm, srcdip, recazm, …)

Get required ab’s for given angles.

get_geo_fact(ab, srcazm, srcdip, recazm, …)

Get required geometrical scaling factor for given angles.

get_azm_dip(inp, iz, ninpz, intpts, …)

Get angles, interpolation weights and normalization weights.

get_off_ang(src, rec, nsrc, nrec, verb)

Get depths, offsets, angles, hence spatial input parameters.

get_layer_nr(inp, depth)

Get number of layer in which inp resides.

printstartfinish(verb[, inp, kcount])

Print start and finish with time measure and kernel count.

conv_warning(conv, targ, name, verb)

Print error if QWE/QUAD did not converge at least once.

set_minimum([min_freq, min_time, min_off, …])

Set minimum values of parameters.

get_minimum()

Return the current minimum values.

Classes

EMArray(data)

Create an EM-ndarray: add amplitude <amp> and phase <pha> methods.

Report([add_pckg, ncol, text_width, sort])

Print date, time, and version information.