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.lsqriterative 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
RandR^Hto speed up the computation of the adjoint ofpylops_distributed.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.- dtype :
bool, optional Type of elements in input array.
Raises: - TypeError
If
tis notnumpy.ndarray.
See also
MDC- Multi-dimensional convolution
Notes
Refer to
pylops.waveeqprocessing.Marchenkofor 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.cglssolver
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.cglssolver
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 :