pylops_distributed.waveeqprocessing.Marchenko¶
-
class
pylops_distributed.waveeqprocessing.
Marchenko
(R, nt, dt=0.004, dr=1.0, wav=None, toff=0.0, nsmooth=10, saveRt=False, prescaled=False, dtype='float32')[source]¶ Marchenko redatuming
Solve multi-dimensional Marchenko redatuming problem using
scipy.sparse.linalg.lsqr
iterative solver.Parameters: - R :
dask.array
Multi-dimensional reflection response in frequency domain of size \([n_{fmax} \times n_s \times n_r]\). Note that the reflection response should have already been multiplied by 2.
- nt :
float
, optional Number of samples in time
- dt :
float
, optional Sampling of time integration axis
- dr :
float
, optional Sampling of receiver integration axis
- 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
R
andR^H
to speed up the computation of the adjoint ofpylops_distributed.signalprocessing.Fredholm1
(True
) or createR^H
on-the-fly (False
) Note thatsaveRt=True
will 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.MDC
operator. In caseprescaled=True
, theR
is assumed to have been pre-scaled by the user.- dtype :
bool
, optional Type of elements in input array.
Raises: - TypeError
If
t
is notnumpy.ndarray
.
See also
MDC
- Multi-dimensional convolution
Notes
Refer to
pylops.waveeqprocessing.Marchenko
for implementation details.Attributes: Methods
__init__
(R, nt[, dt, dr, wav, toff, …])Initialize self. apply_multiplepoints
(trav[, dist, G0, nfft, …])Marchenko redatuming for multiple points apply_onepoint
(trav[, dist, G0, nfft, rtm, …])Marchenko redatuming for one point -
apply_onepoint
(trav, dist=None, G0=None, nfft=None, rtm=False, greens=False, dottest=False, **kwargs_cgls)[source]¶ Marchenko redatuming for one point
Solve the Marchenko redatuming inverse problem for a single point given its direct arrival traveltime curve (
trav
) and waveform (G0
).Parameters: - trav :
numpy.ndarray
Traveltime of first arrival from subsurface point to surface receivers of size \([n_r \times 1]\)
- dist: :obj:`numpy.ndarray`, optional
Distance between subsurface point to surface receivers of size \(\lbrack nr \times 1 \rbrack\) (if provided the analytical direct arrival will be computed using a 3d formulation)
- G0 :
numpy.ndarray
, optional Direct arrival in time domain of size \([n_r \times n_t]\) (if None, create arrival using
trav
)- nfft :
int
, optional Number of samples in fft when creating the analytical direct wave
- rtm :
bool
, optional Compute and return rtm redatuming
- greens :
bool
, optional Compute and return Green’s functions
- dottest :
bool
, optional Apply dot-test
- **kwargs_cgls
Arbitrary keyword arguments for
pylops_distributed.optimization.cg.cgls
solver
Returns: - f1_inv_minus :
dask.array
Inverted upgoing focusing function of size \([n_r \times n_t]\)
- f1_inv_plus :
dask.array
Inverted downgoing focusing function of size \([n_r \times n_t]\)
- p0_minus :
dask.array
Single-scattering standard redatuming upgoing Green’s function of size \([n_r \times n_t]\)
- g_inv_minus :
dask.array
Inverted upgoing Green’s function of size \([n_r \times n_t]\)
- g_inv_plus :
dask.array
Inverted downgoing Green’s function of size \([n_r \times n_t]\)
- trav :
-
apply_multiplepoints
(trav, dist=None, G0=None, nfft=None, rtm=False, greens=False, dottest=False, **kwargs_cgls)[source]¶ Marchenko redatuming for multiple points
Solve the Marchenko redatuming inverse problem for multiple points given their direct arrival traveltime curves (
trav
) and waveforms (G0
).Parameters: - trav :
numpy.ndarray
Traveltime of first arrival from subsurface points to surface receivers of size \([n_r \times n_{vs}]\)
- dist: :obj:`numpy.ndarray`, optional
Distance between subsurface point to surface receivers of size \([n_r \times n_{vs}]\) (if provided the analytical direct arrival will be computed using a 3d formulation)
- G0 :
numpy.ndarray
, optional Direct arrival in time domain of size \([n_r \times n_{vs} \times n_t]\) (if None, create arrival using
trav
)- nfft :
int
, optional Number of samples in fft when creating the analytical direct wave
- rtm :
bool
, optional Compute and return rtm redatuming
- greens :
bool
, optional Compute and return Green’s functions
- dottest :
bool
, optional Apply dot-test
- **kwargs_cgls
Arbitrary keyword arguments for
pylops_distributed.optimization.cg.cgls
solver
Returns: - f1_inv_minus :
numpy.ndarray
Inverted upgoing focusing function of size \([n_r \times n_{vs} \times n_t]\)
- f1_inv_plus :
numpy.ndarray
Inverted downgoing focusing functionof size \([n_r \times n_{vs} \times n_t]\)
- p0_minus :
numpy.ndarray
Single-scattering standard redatuming upgoing Green’s function of size \([n_r \times n_{vs} \times n_t]\)
- g_inv_minus :
numpy.ndarray
Inverted upgoing Green’s function of size \([n_r \times n_{vs} \times n_t]\)
- g_inv_plus :
numpy.ndarray
Inverted downgoing Green’s function of size \([n_r \times n_{vs} \times n_t]\)
- trav :
- R :