pylops.avo.prestack.PrestackLinearModelling(wav, theta, vsvp=0.5, nt0=1, spatdims=None, linearization='akirich', explicit=False, kind='centered', name=None)[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. The input model must be arranged in a vector of size \(n_m \times n_{t_0}\,(\times n_x \times n_y)\) for explicit=True and \(n_{t_0} \times n_m \,(\times n_x \times n_y)\) for explicit=False. Similarly the output data is arranged in a vector of size \(n_{\theta} \times n_{t_0} \,(\times n_x \times n_y)\) for explicit=True and \(n_{t_0} \times n_{\theta} \,(\times n_x \times n_y)\) for explicit=False.


Wavelet in time domain (must had odd number of elements and centered to zero). Note that the dtype of this variable will define that of the operator


Incident angles in degrees. Must have same dtype of wav (or it will be automatically casted to it)

vsvpfloat or np.ndarray

\(V_S/V_P\) ratio (constant or time/depth variant)

nt0int, optional

number of samples (if vsvp is a scalar)

spatdimsint or tuple, optional

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

linearization{“akirich”, “fatti”, “PS”} or callable, optional
explicitbool, optional

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

kindstr, optional

Derivative kind (forward or centered).

namestr, optional

New in version 2.0.0.

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


pre-stack modelling operator.


If linearization is not an implemented linearization


If kind is not forward nor centered


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. This can be easily achieved using the following forward model:

\[d(t, \theta) = w(t) * \sum_{i=1}^{n_m} 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.