pylops.waveeqprocessing.Demigration(z, x, t, srcs, recs, vel, wav, wavcenter, y=None, trav=None, mode='eikonal', name='D')[source]

Kirchhoff Demigration operator.

Traveltime based seismic demigration/migration operator.

z : numpy.ndarray

Depth axis

x : numpy.ndarray

Spatial axis

t : numpy.ndarray

Time axis for data

srcs : numpy.ndarray

Sources in array of size \(\lbrack 2 (3) \times n_s \rbrack\) The first axis should be ordered as (y,) x, z.

recs : numpy.ndarray

Receivers in array of size \(\lbrack 2 (3) \times n_r \rbrack\) The first axis should be ordered as (y,) x, z.

vel : numpy.ndarray or float

Velocity model of size \(\lbrack (n_y\,\times)\; n_x \times n_z \rbrack\) (or constant)

wav : numpy.ndarray


wavcenter : int

Index of wavelet center

y : numpy.ndarray

Additional spatial axis (for 3-dimensional problems)

mode : str, optional

Computation mode (analytic, eikonal or byot, see Notes for more details)

trav : numpy.ndarray, optional

Traveltime table of size \(\lbrack (n_y) n_x n_z \times n_r \rbrack\) (to be provided if mode='byot')

name : str, optional

New in version 2.0.0.

Name of operator (to be used by pylops.utils.describe.describe)

demop : pylops.LinearOperator

Demigration/Migration operator


If mode is neither analytic, eikonal, or byot


The demigration operator synthetizes seismic data given from a propagation velocity model \(v\) and a reflectivity model \(m\). In forward mode:

\[d(\mathbf{x_r}, \mathbf{x_s}, t) = w(t) * \int_V G(\mathbf{x_r}, \mathbf{x}, t) m(\mathbf{x}) G(\mathbf{x}, \mathbf{x_s}, t)\,\mathrm{d}\mathbf{x}\]

where \(m(\mathbf{x})\) is the model and it represents the reflectivity at every location in the subsurface, \(G(\mathbf{x}, \mathbf{x_s}, t)\) and \(G(\mathbf{x_r}, \mathbf{x}, t)\) are the Green’s functions from source-to-subsurface-to-receiver and finally \(w(t)\) is the wavelet. Depending on the choice of mode the Green’s function will be computed and applied differently:

  • mode=analytic or mode=eikonal: traveltime curves between source to receiver pairs are computed for every subsurface point and Green’s functions are implemented from traveltime look-up tables, placing the reflectivity values at corresponding source-to-receiver time in the data.
  • byot: bring your own table. Traveltime table provided directly by user using trav input parameter. Green’s functions are then implemented in the same way as previous options.

The adjoint of the demigration operator is a migration operator which projects data in the model domain creating an image of the subsurface reflectivity.