fracspy.modelling.trueamp_kirchhoff.TAKirchhoff#

class fracspy.modelling.trueamp_kirchhoff.TAKirchhoff(z, x, t, recs, wav, wavcenter, y=None, wavfilter=False, trav=None, amp=None, engine='numpy', dtype='float64', name='K')[source]#

True-amplitude Kirchhoff single-sided, demigration operator.

True-amplitude Kirchhoff-based demigration/migration operator for single-sided propagation (from subsurface to surface). Uses a high-frequency approximation of Green’s function propagators based on trav and amp.

Parameters:
znumpy.ndarray

Depth axis

xnumpy.ndarray

Spatial axis

tnumpy.ndarray

Time axis for data

recsnumpy.ndarray

Receivers in array of size \(\lbrack 2 (3) \times n_r \rbrack\) The first axis should be ordered as (y,) x, z.

velnumpy.ndarray or float

Velocity model of size \(\lbrack (n_y\,\times)\; n_x \times n_z \rbrack\) (or constant)

wavnumpy.ndarray

Wavelet.

wavcenterint

Index of wavelet center

ynumpy.ndarray

Additional spatial axis (for 3-dimensional problems)

wavfilterbool, optional

Apply wavelet filter (True) or not (False)

travnumpy.ndarray or tuple, optional

Traveltime table of size \(\lbrack (n_y) n_x n_z \times n_r \rbrack\).

ampnumpy.ndarray, optional

Amplitude table of size \(\lbrack (n_y) n_x n_z \times n_r \rbrack\).

enginestr, optional

Engine used for computations (numpy or numba).

dtypestr, optional

Type of elements in input array.

namestr, optional

Name of operator (to be used by pylops.utils.describe.describe)

Attributes:
shapetuple

Operator shape

explicitbool

Operator contains a matrix that can be solved explicitly (True) or not (False)

Notes

The True-amplitude Kirchhoff single-sided demigration operator synthesizes seismic data given a propagation velocity model \(v\) and a source distribution \(m\).

In forward mode:

\[d(\mathbf{x_r}, \mathbf{x_s}, t) = \widetilde{w}(t) * \int_V G(\mathbf{x_r}, \mathbf{x_s}, t) m(\mathbf{x_s})\,\mathrm{d}\mathbf{x_s}\]

where \(m(\mathbf{x_s})\) represents the source distribution at every location in the subsurface, \(G(\mathbf{x_r}, \mathbf{x_s}, t)\) is the Green’s function from source-to-receiver, and finally \(\widetilde{w}(t)\) is a filtered version of the wavelet \(w(t)\) [1] (or the wavelet itself when wavfilter=False). In our implementation, the following high-frequency approximation of the Green’s functions is adopted:

\[G(\mathbf{x_r}, \mathbf{x}, \omega) = a(\mathbf{x_r}, \mathbf{x}) e^{j \omega t(\mathbf{x_r}, \mathbf{x})}\]

where \(a(\mathbf{x_r}, \mathbf{x})\) is the amplitude and \(t(\mathbf{x_r}, \mathbf{x})\) is the traveltime. These must be pre-computed and passed directly to the operator.

Finally, the adjoint of the demigration operator is a migration operator which projects the data in the model domain creating an image of the source distribution.

[1]

Safron, L. “Multicomponent least-squares Kirchhoff depth migration”, MSc Thesis, 2018.

Methods

__init__(z, x, t, recs, wav, wavcenter[, y, ...])

adjoint()

apply_columns(cols)

Apply subset of columns of operator

cond([uselobpcg])

Condition number of linear operator.

conj()

Complex conjugate operator

div(y[, niter, densesolver])

Solve the linear problem \(\mathbf{y}=\mathbf{A}\mathbf{x}\).

dot(x)

Matrix-matrix or matrix-vector multiplication.

eigs([neigs, symmetric, niter, uselobpcg])

Most significant eigenvalues of linear operator.

matmat(X)

Matrix-matrix multiplication.

matvec(x)

Matrix-vector multiplication.

reset_count()

Reset counters

rmatmat(X)

Matrix-matrix multiplication.

rmatvec(x)

Adjoint matrix-vector multiplication.

todense([backend])

Return dense matrix.

toimag([forw, adj])

Imag operator

toreal([forw, adj])

Real operator

tosparse()

Return sparse matrix.

trace([neval, method, backend])

Trace of linear operator.

transpose()