pylops.avo.prestack.PrestackLinearModelling

pylops.avo.prestack.PrestackLinearModelling(wav, theta, vsvp=0.5, nt0=1, spatdims=None, linearization='akirich', explicit=False)[source]

Pre-stack linearized seismic modelling operator.

Create operator to be applied to elastic property profiles for generation of band-limited seismic angle gathers from a linearized version of the Zoeppritz equation.

Parameters:
wav : np.ndarray

Wavelet in time domain (must had odd number of elements and centered to zero)

theta : np.ndarray

Incident angles in degrees

vsvp : float or np.ndarray

VS/VP ratio (constant or time/depth variant)

nt0 : int, optional

number of samples (if vsvp is a scalar)

spatdims : int or tuple, optional

Number of samples along spatial axis (or axes) (None if only one dimension is available)

linearization : str, optional

choice of linearization, akirich: Aki-Richards, fatti: Fatti

explicit : bool, optional

Create a chained linear operator (False, preferred for large data) or a MatrixMult linear operator with dense matrix (True, preferred for small data)

Returns:
Preop : LinearOperator

pre-stack modelling operator.

Raises:
NotImplementedError

If linearization is not an implemented linearization

Notes

Pre-stack seismic modelling is the process of constructing seismic pre-stack data from three (or two) profiles of elastic parameters in time (or depth) domain arranged in an input vector \(\mathbf{m}\) of size \(nt0 \times N\). This can be easily achieved using the following forward model:

\[d(t, \theta) = w(t) * \sum_{i=1}^N G_i(t, \theta) m_i(t)\]

where \(w(t)\) is the time domain seismic wavelet. In compact form:

\[\mathbf{d}= \mathbf{G} \mathbf{m}\]

On the other hand, pre-stack inversion aims at recovering the different profiles of elastic properties from the band-limited seismic pre-stack data.

Examples using pylops.avo.prestack.PrestackLinearModelling