pylops.waveeqprocessing.Marchenko¶
- class pylops.waveeqprocessing.Marchenko(R, dt=0.004, nt=None, dr=1.0, nfmax=None, wav=None, toff=0.0, nsmooth=10, saveRt=True, prescaled=False, fftengine='numpy', dtype='float64', kwargs_fft=None)[source]¶
Marchenko redatuming
Solve multi-dimensional Marchenko redatuming problem using
scipy.sparse.linalg.lsqriterative solver.- Parameters:
- R
numpy.ndarray Multi-dimensional reflection response in time or frequency domain of size \([n_s \times n_r \times n_t (n_{f_\text{max}})]\). If provided in time,
Rshould not be of complex type. Note that the reflection response should have already been multiplied by 2.- dt
float, optional Sampling of time integration axis
- nt
float, optional Number of samples in time (not required if
Ris 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
- saveRt
bool, optional Save
RandR.Hto speed up the computation of adjoint ofpylops.signalprocessing.Fredholm1(True) or createR.Hon-the-fly (False) Note thatsaveRt=Truewill be faster but double the amount of required memory- prescaled
bool, optional Apply scaling to
R(False) or not (False) when performing spatial and temporal summations within thepylops.waveeqprocessing.MDCoperator. In caseprescaled=True, theRis assumed to have been pre-scaled by the user.- fftengine
str, optional Added in version 1.17.0.
Engine used for fft computation (
numpy,scipyorfftw)- dtype
bool, optional Type of elements in input array.
- R
- Attributes:
- ns
int Number of samples along source axis.
- nr
int Number of samples along receiver axis.
- nt
int Number of samples along time axis.
- nt2
int Number of samples along the negative-mirrored time axis.
- t
numpy.ndarray Time axis.
- kwargs_fft
dict Keyword arguments to be passed to the selected fft method
- ncp
module Array module (
numpyorcupy)- Rtwosided_fft
numpy.ndarray Two-sided frequency-domain reflection response of size \([n_{f_\text{max}} \times n_s \times n_r]\).
- dims
tuple Shape of the array after the adjoint, but before flattening.
For example,
x_reshaped = (Op.H * y.ravel()).reshape(Op.dims).- dimsd
tuple Shape of the array after the forward, but before flattening.
For example,
y_reshaped = (Op * x.ravel()).reshape(Op.dimsd).- shape
tuple Operator shape.
- ns
- Raises:
- ValueError
If
ntis not provided whenRis in time domain.
Notes
Marchenko redatuming is a method that allows to produce correct subsurface-to-surface responses given the availability of a reflection data and a macro-velocity model [1].
The Marchenko equations can be written in a compact matrix form [2] and solved by means of iterative solvers such as LSQR:
\[\begin{split}\begin{bmatrix} \Theta \mathbf{R} \mathbf{f_d^+} \\ \mathbf{0} \end{bmatrix} = \mathbf{I} - \begin{bmatrix} \mathbf{0} & \Theta \mathbf{R} \\ \Theta \mathbf{R^*} & \mathbf{0} \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{g^-} \\ \mathbf{g^{+ *}} \end{bmatrix} = \mathbf{I} - \begin{bmatrix} \mathbf{0} & \mathbf{R} \\ \mathbf{R^*} & \mathbf{0} \end{bmatrix} \begin{bmatrix} \mathbf{f^-} \\ \mathbf{f^+} \end{bmatrix}\end{split}\]Here \(\mathbf{R}\) is the monopole-to-particle velocity seismic response (already multiplied by 2).
[1]Wapenaar, K., Thorbecke, J., Van der Neut, J., Broggini, F., Slob, E., and Snieder, R., “Marchenko imaging”, Geophysics, vol. 79, pp. WA39-WA57. 2014.
[2]van der Neut, J., Vasconcelos, I., and Wapenaar, K. “On Green’s function retrieval by iterative substitution of the coupled Marchenko equations”, Geophysical Journal International, vol. 203, pp. 792-813. 2015.
Methods
__init__(R[, dt, nt, dr, nfmax, wav, toff, ...])apply_multiplepoints(trav[, G0, nfft, rtm, ...])Marchenko redatuming for multiple points
apply_onepoint(trav[, G0, nfft, rtm, ...])Marchenko redatuming for one point