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
travandamp.- Parameters:
- z
numpy.ndarray Depth axis
- x
numpy.ndarray Spatial axis
- t
numpy.ndarray Time axis for data
- recs
numpy.ndarray Receivers in array of size \(\lbrack 2 (3) \times n_r \rbrack\) The first axis should be ordered as (
y,)x,z.- vel
numpy.ndarrayorfloat Velocity model of size \(\lbrack (n_y\,\times)\; n_x \times n_z \rbrack\) (or constant)
- wav
numpy.ndarray Wavelet.
- wavcenter
int Index of wavelet center
- y
numpy.ndarray Additional spatial axis (for 3-dimensional problems)
- wavfilter
bool, optional Apply wavelet filter (
True) or not (False)- trav
numpy.ndarrayortuple, optional Traveltime table of size \(\lbrack (n_y) n_x n_z \times n_r \rbrack\).
- amp
numpy.ndarray, optional Amplitude table of size \(\lbrack (n_y) n_x n_z \times n_r \rbrack\).
- engine
str, optional Engine used for computations (
numpyornumba).- dtype
str, optional Type of elements in input array.
- name
str, optional Name of operator (to be used by
pylops.utils.describe.describe)
- z
- Attributes:
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()