pylops_distributed.waveeqprocessing.MDC

pylops_distributed.waveeqprocessing.MDC(G, nt, nv, dt=1.0, dr=1.0, twosided=True, saveGt=True, conj=False, prescaled=False, compute=(False, False), todask=(False, False))[source]

Multi-dimensional convolution.

Apply multi-dimensional convolution between two datasets. Model and data should be provided after flattening 2- or 3-dimensional arrays of size \([n_t \times n_r (\times n_{vs})]\) and \([n_t \times n_s (\times n_{vs})]\) (or \(2*n_t-1\) for twosided=True), respectively.

Parameters:
G : dask.array.ndarray

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

nt : int

Number of samples along time axis

nv : int

Number of samples along virtual source axis

dt : float, optional

Sampling of time integration axis

dr : float, optional

Sampling of receiver integration axis

twosided : bool, optional

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

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

conj : str, optional

Perform Fredholm integral computation with complex conjugate of G

prescaled : bool, optional

Apply scaling to kernel (False) or not (False) when performing spatial and temporal summations. In case prescaled=True, the kernel is assumed to have been pre-scaled when passed to the MDC routine.

compute : tuple, optional

Compute the outcome of forward and adjoint or simply define the graph and return a dask.array

todask : tuple, optional

Apply dask.array.from_array to model and data before applying forward and adjoint respectively

Notes

Refer to pylops.waveeqprocessing.MDC for implementation details.