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:
- VZplus
numpy.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.- VZminus
numpy.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.- dt
float
, optional Sampling of time integration axis
- nt
float
, optional Number of samples in time (not required if
R
is in time)- dr
float
, optional Sampling of receiver integration axis
- nfmax
int
, optional Index of max frequency to include in deconvolution process
- wav
numpy.ndarray
, optional Wavelet to apply to direct arrival when created using
trav
- toff
float
, optional Time-offset to apply to traveltime
- nsmooth
int
, optional Number of samples of smoothing operator to apply to window
- dtype
bool
, optional Type of elements in input array.
- saveVt
bool
, optional Save
VZplus
andVZplus^H
(andVZminus
andVZminus^H
) to speed up the computation of adjoint ofpylops.signalprocessing.Fredholm1
(True
) or createVZplus^H
andVZminus^H
on-the-fly (False
) Note thatsaveVt=True
will be faster but double the amount of required memory- prescaled
bool
, optional Apply scaling to
Vzplus
andVZminus
(False
) or not (False
) when performing spatial and temporal summations within thepylops.waveeqprocessing.MDC
operator.
- VZplus
- Raises:
- TypeError
If
t
is notnumpy.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:
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