pylops_distributed.waveeqprocessing.MDD

pylops_distributed.waveeqprocessing.MDD(G, d, dt=0.004, dr=1.0, nfmax=None, wav=None, twosided=True, adjoint=False, dottest=False, saveGt=False, add_negative=True, **kwargs_cgls)[source]

Multi-dimensional deconvolution.

Solve multi-dimensional deconvolution problem using scipy.sparse.linalg.lsqr iterative solver.

Parameters:
G : dask.array.ndarray

Multi-dimensional convolution kernel in frequency domain of size \([n_{f,max} \times n_s \times n_r]\)

d : dask.array.ndarray

Data in time domain \([n_t \times n_s (\times n_vs)]\) if twosided=False or twosided=True and add_negative=True (with only positive times) or size \([2*n_t-1 \times n_s (\times n_vs)]\) if twosided=True

dt : float, optional

Sampling of time integration axis

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 convolve to the inverted model and psf (must be centered around its index in the middle of the array). If None, the outputs of the inversion are returned directly.

twosided : bool, optional

MDC operator and data both negative and positive time (True) or only positive (False)

add_negative : bool, optional

Add negative side to MDC operator and data (True) or not (False)- operator and data are already provided with both positive and negative sides. To be used only with twosided=True.

adjoint : bool, optional

Compute and return adjoint(s)

dottest : bool, optional

Apply dot-test

saveGt : bool, optional

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

**kwargs_cgls

Arbitrary keyword arguments for pylops_distributed.optimization.cg.cgls solver

Returns:
minv : dask.array.ndarray

Inverted model of size \([n_t \times n_r (\times n_{vs})]\) for twosided=False or \([2*n_t-1 \times n_r (\times n_vs)]\) for twosided=True

madj : dask.array.ndarray

Adjoint model of size \([n_t \times n_r (\times n_{vs})]\) for twosided=False or \([2*n_t-1 \times n_r (\times n_r) ]\) for twosided=True

See also

MDC
Multi-dimensional convolution

Notes

Refer to pylops.waveeqprocessing.MDD for implementation details. Note that this implementation is currently missing the wav and causality_precond=False options.

Examples using pylops_distributed.waveeqprocessing.MDD