pylops_distributed.waveeqprocessing.MDC

class pylops_distributed.waveeqprocessing.MDC(G, nt, nv, dt=1.0, dr=1.0, twosided=True, saveGt=False, conj=False, prescaled=False, chunks=(None, None), compute=(False, False), todask=(False, False), dtype=None)[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

dtype : str, optional

Type of elements in input array. If None, automatically inferred from G

Notes

Refer to pylops.waveeqprocessing.MDC for implementation details.

Methods

__init__(G, nt, nv[, dt, dr, twosided, …]) Initialize this LinearOperator.
adjoint() Hermitian adjoint.
apply_columns(cols) Apply subset of columns of operator
cond([uselobpcg]) Condition number of linear operator.
conj() Complex conjugate operator
div(y[, niter]) Solve the linear problem \(\mathbf{y}=\mathbf{A}\mathbf{x}\).
dot(x) Matrix-vector multiplication.
eigs([neigs, symmetric, niter, uselobpcg]) Most significant eigenvalues of linear operator.
matmat(X) Matrix-matrix multiplication.
matvec(x) Matrix-vector multiplication.
rmatmat(X) Adjoint matrix-matrix multiplication.
rmatvec(x) Adjoint Matrix-vector multiplication.
todense() Return dense matrix.
tosparse() Return sparse matrix.
transpose() Transpose this linear operator.

Examples using pylops_distributed.waveeqprocessing.MDC