pymarchenko.raymarchenko.RayleighMarchenko#

class pymarchenko.raymarchenko.RayleighMarchenko(VZplus, VZminus, dt=0.004, nt=None, dr=1.0, nfmax=None, wav=None, toff=0.0, nsmooth=10, dtype='float64', saveVt=True, prescaled=False)[source]#

Rayleigh-Marchenko redatuming

Solve multi-dimensional Rayleigh-Marchenko redatuming problem using scipy.sparse.linalg.lsqr iterative solver.

Parameters:
VZplusnumpy.ndarray

Multi-dimensional downgoing particle velocity data in time or frequency domain of size \([n_s \times n_r \times n_t/n_{fmax}]\). If provided in time, VZplus should not be of complex type. If provided in frequency, VZpl should contain the positive time axis followed by the negative one.

VZminusnumpy.ndarray

Multi-dimensional upgoing particle velocity data in time or frequency domain of size \([n_s \times n_r \times n_t/n_{fmax}]\). If provided in time, VZminus should not be of complex type. If provided in frequency, VZminus should contain the positive time axis followed by the negative one.

dtfloat, optional

Sampling of time integration axis

ntfloat, optional

Number of samples in time (not required if R is in time)

drfloat, optional

Sampling of receiver integration axis

nfmaxint, optional

Index of max frequency to include in deconvolution process

wavnumpy.ndarray, optional

Wavelet to apply to direct arrival when created using trav

tofffloat, optional

Time-offset to apply to traveltime

nsmoothint, optional

Number of samples of smoothing operator to apply to window

dtypebool, optional

Type of elements in input array.

saveVtbool, optional

Save VZplus and VZplus^H (and VZminus and VZminus^H) to speed up the computation of adjoint of pylops.signalprocessing.Fredholm1 (True) or create VZplus^H and VZminus^H on-the-fly (False) Note that saveVt=True will be faster but double the amount of required memory

prescaledbool, optional

Apply scaling to Vzplus and VZminus (False) or not (False) when performing spatial and temporal summations within the pylops.waveeqprocessing.MDC operator.

Raises:
TypeError

If t is not numpy.ndarray.

Notes

Rayleigh-Marchenko redatuming is a method that allows to produce correct subsurface-to-surface responses given the availability of up- and down- separated particle velocity data and a macro-velocity model [1].

The Rayleigh-Marchenko equations can be written in a compact matrix form and solved by means of iterative solvers such as LSQR:

\[\begin{split}\begin{bmatrix} -\Theta \mathbf{V}_z^- \mathbf{f_d^+} \\ -\Theta \mathbf{V}_z^{+*} \mathbf{f_d^+} \end{bmatrix} = \begin{bmatrix} \Theta \mathbf{V}_z^+ & \Theta \mathbf{V}_z^- \\ \Theta \mathbf{V}_z^{-*} & \Theta \mathbf{V}_z^{+*} \end{bmatrix} \begin{bmatrix} \mathbf{f^-} \\ \mathbf{f_m^+} \end{bmatrix}\end{split}\]

Finally the subsurface Green’s functions can be obtained applying the following operator to the retrieved focusing functions

\[\begin{split}\begin{bmatrix} -\mathbf{p}^- \\ \mathbf{p}^{+*} \end{bmatrix} = \begin{bmatrix} \mathbf{V}_z^+ & \mathbf{V}_z^- \\ \mathbf{V}_z^{-*} & \mathbf{V}_z^{+*} \end{bmatrix} \begin{bmatrix} \mathbf{f^-} \\ \mathbf{f^+} \end{bmatrix}\end{split}\]
[1]

Ravasi, M., “Rayleigh-Marchenko redatuming for target-oriented, true-amplitude imaging”, Geophysics, vol. 82, pp. S439-S452. 2017.

Attributes:
nsint

Number of samples along source axis

nrint

Number of samples along receiver axis

shapetuple

Operator shape

explicitbool

Operator contains a matrix that can be solved explicitly (True) or not (False)

Methods

__init__(VZplus, VZminus[, dt, nt, dr, ...])

apply_multiplepoints(travsrc, travrec[, G0, ...])

Rayleigh-Marchenko redatuming for multiple points

apply_onepoint(travsrc, travrec[, G0, nfft, ...])

Rayleigh-Marchenko redatuming for one point

Examples using pymarchenko.raymarchenko.RayleighMarchenko#

4. Rayleigh-Marchenko redatuming

4. Rayleigh-Marchenko redatuming