pylops.waveeqprocessing.UpDownComposition2D¶

pylops.waveeqprocessing.
UpDownComposition2D
(nt, nr, dt, dr, rho, vel, nffts=(None, None), critical=100.0, ntaper=10, scaling=1.0, dtype='complex128')[source]¶ 2D Updown wavefield composition.
Apply multicomponent seismic wavefield composition from its up and downgoing constituents. This input model required by the operator should be created by flattening the concatenated separated wavefields of size \(\lbrack n_r \times n_t \rbrack\) along the spatial axis.
Similarly, the data is also a concatenation of flattened pressure and vertical particle velocity wavefields.
Parameters:  nt :
int
Number of samples along the time axis
 nr :
int
Number of samples along the receiver axis
 dt :
float
Sampling along the time axis
 dr :
float
Sampling along the receiver array
 rho :
float
Density along the receiver array (must be constant)
 vel :
float
Velocity along the receiver array (must be constant)
 nffts :
tuple
, optional Number of samples along the wavenumber and frequency axes
 critical :
float
, optional Percentage of angles to retain in obliquity factor. For example, if
critical=100
only angles below the critical angle :math`frac{f(k_x)}{vel}` will be retained ntaper :
float
, optional Number of samples of taper applied to obliquity factor around critical angle
 scaling :
float
, optional Scaling to apply to the operator (see Notes for more details)
 dtype :
str
, optional Type of elements in input array.
Returns:  UDop :
pylops.LinearOperator
Updown wavefield composition operator
See also
WavefieldDecomposition
 Wavefield decomposition
Notes
Multicomponent seismic data (\(p(x, t)\) and \(v_z(x, t)\)) can be synthesized in the frequencywavenumber domain as the superposition of the up and downgoing constituents of the pressure wavefield (\(p^(x, t)\) and \(p^+(x, t)\)) as follows [1]:
\[\begin{split}\begin{bmatrix} \mathbf{p}(k_x, \omega) \\ \mathbf{v_z}(k_x, \omega) \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ \frac{k_z}{\omega \rho} &  \frac{k_z}{\omega \rho} \\ \end{bmatrix} \begin{bmatrix} \mathbf{p^+}(k_x, \omega) \\ \mathbf{p^}(k_x, \omega) \end{bmatrix}\end{split}\]which we can write in a compact matrixvector notation as:
\[\begin{split}\begin{bmatrix} \mathbf{p} \\ s*\mathbf{v_z} \end{bmatrix} = \begin{bmatrix} \mathbf{F} & 0 \\ 0 & s*\mathbf{F} \end{bmatrix} \mathbf{W} \begin{bmatrix} \mathbf{F}^H & 0 \\ 0 & \mathbf{F}^H \end{bmatrix} \mathbf{p^{\pm}}\end{split}\]where \(\mathbf{F}\) is the 2dimensional FFT (
pylops.signalprocessing.FFT2
), \(\mathbf{W}\) is a weighting matrix implemented viapylops.basicprocessing.Diagonal
, and \(s\) is a scaling factor that is applied to both the particle velocity data and to the operator has shown above. Such a scaling is required to balance out the different dynamic range of pressure and particle velocity when solving the wavefield separation problem as an inverse problem.As the operator is effectively obtained by chaining basic PyLops operators the adjoint is automatically implemented for this operator.
[1] Wapenaar, K. “Reciprocity properties of oneway propagators”, Geophysics, vol. 63, pp. 17951798. 1998.  nt :