fracspy.location.migration.diffstack#

fracspy.location.migration.diffstack(data, n_xyz, x, y, z, tt, dt, nforhc=10, output_type=None, stack_type=None, swsize=0, polcor_type=None, recs=None)[source]#

Diffraction stacking for microseismic source location.

This routine performs imaging of microseismic data by diffraction stacking with various stacking approaches and optional polarity correction.

Parameters:
datanumpy.ndarray

Data of shape \(n_r \times n_t\)

n_xyztuple

Number of grid points in X-, Y-, and Z-axes for the imaging area

xnumpy.ndarray

Imaging area grid vector in X-axis

ynumpy.ndarray

Imaging area grid vector in Y-axis

znumpy.ndarray

Imaging area grid vector in Z-axis

ttnumpy.ndarray

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

dtfloat

Time step

nforhcint, optional, default: 10

Number of points for hypocenter

output_typestr, optional, default: None

Defines the output type. In the default case of None it is set to max. Types: max (output 3D volume as a maximum of the image function through time), mean (output 3D volume as an average of the image function through time), sumsq (output 3D volume as a stack of the squared image function values through time), full (output full 4D image function: x,y,z,t). In this case hc is set to None.

stack_typestr, optional, default: None

Diffraction stacking type (imaging condition), default None is the same as squared. Types: absolute (absolute-value), squared (squared-value), semblance (semblance-based).

swsizeint, optional, default: 0

Sliding time window size for semblance-based type, amount of time steps

polcor_typestr, optional, default: None

Polarity correction type to be used for amplitudes. None is default: no polarity correction, mti is for polarity correction based on moment tensor inversion.

recsnumpy.ndarray, optional, default: None

Array of shape (3, nrec) containing receiver coordinates. Must be provided if polcor_type is not None

Returns:
ds_im_volnumpy.ndarray

Diffraction stack volume, returned if output_type is not “full”

hcnumpy.ndarray

Estimated hypocentral location, if output_type is not “full” is set to None

ds_fullnumpy.ndarray

Diffraction stack full array of shape (nt, n_xyz), returned if output_type is “full”

Raises:
ValueError

if data and grid sizes do not fit the traveltimes array

ValueError

if output_type value is unknown

ValueError

if stack_type value is unknown

ValueError

if polcor_type value is unknown

ValueError

if recs is None and polcor_type is not None

Notes

The subsurface volume is discretised and each grid node is considered to be a potential source position or a so-called image point. In other words, each image point represents a possible diffraction point from which seismic energy radiates. The term “diffraction stacking” dates back to the works of Claerbout (1971, 1985) [3], [4] and Timoshin (1972) [7]. The concept was initially related to seismic migration and imaging of reflectors as a set of diffraction points (in the context of the exploding reflector principle). Here, the diffraction stacking is related to imaging of real excitation sources.

Diffraction stacking is applied to data with corrected event moveout (EMO), and can be done in several ways:

  1. Absolute-value based

\[F(\mathbf{r},t) = \left| \sum_{R=1}^{N_R} A_R^{EMO}(t,\mathbf{r}) \right|,\]

where \(\mathbf{r}\) is a vector that defines a spatial position \((x, y, z)\) of the image point, \(A_R^{EMO}(t,\mathbf{r})\) represents the EMO-corrected data at the receiver \(R\), and \(N_R\) is a number of receivers [1].

  1. Squared-value based

Similarly, but the stack is taken to the power of 2:

\[E(\mathbf{r},t) = \left[ \sum_{R=1}^{N_R} A_R^{EMO}(t,\mathbf{r}) \right]^2,\]
  1. Semblance-based

Simple stacking can be further improved using a semblance-based approach.

The semblance is a coherency or similarity measure and can be understood as the ratio of the total energy (the square of sum of amplitudes) to the energy of individual traces (the sum of squares) [5]:

\[S(\mathbf{r},t) = \frac{\left[ \sum_{R=1}^{N_R} A_R^{EMO}(t,\mathbf{r}) \right]^2} {N_R \sum_{R=1}^{N_R} \left[ A_R^{EMO}(t,\mathbf{r}) \right]^2} \]

In order to suppress the effect of noise even better, it is possible to extend the semblance-based approach by introducing a sliding time window \(W\) over which the energy measures are summed:

\[S_W(\mathbf{r},t,W) = \frac{\sum_{k=it-W}^{it+W}\left[ \sum_{R=1}^{N_R} A_R^{EMO}(t,\mathbf{r}) \right]^2} {N_R \sum_{k=it-W}^{it+W}\sum_{R=1}^{N_R} \left[ A_R^{EMO}(t,\mathbf{r}) \right]^2}\]

where \(k\) an index of the time-discretised signal within a sliding time interval consisting of the \(2W + 1\) samples, and \(it\) is the index of time \(t\) [8].

Depending on the desired output, the function can output either a 3D volume and a location, or a full 4D array (time dimension + 3 spatial dimensions).

By default, a 3D image volume obtained as a maximum of the 4D image function, e.g.:

\[F_s(\mathbf{r}) = \max_t F(\mathbf{r},t).\]

Optionally, one can output a 3D image volume obtained as a mean of the 4D image function over time, e.g.:

\[F_s(\mathbf{r}) = \underset{t}{\text{mean}}~F(\mathbf{r}, t).\]

Another option is to output a 3D image volume obtained as a sum of squared values of the 4D image function over time, e.g.:

\[F_s(\mathbf{r}) = \sum_t F^2(\mathbf{r},t).\]

The full 4D output is useful for subsequent detection of multiple events.

Polarity correction, if requested, is done using moment tensor inversion [2]:

\[F_{pc}(\mathbf{r},t) = \left|\sum_{R=1}^{N_R} \phi_R(\mathbf{r}) A_R^{EMO+PC} \right|,\]

where

\[A_R^{EMO+PC}(t,\mathbf{r}) = \phi_R(\mathbf{r}) A_R \left(t + T_R(\mathbf{r})\right),\]

and \(\phi_R(\mathbf{r})\) are the defined through the \(\mathrm{sign}\) function:

\[\phi_R(\mathbf{r})=\mathrm{sign}(\mathbf{M}(\mathbf{r})\mathbf{G}_R^{\phantom{T}}(\mathbf{r})),\quad R=1\dots N_R,\]

where \(\mathbf{M}(\mathbf{r})\) is the vectorized moment tensor derived [6] as

\[\mathbf{M}(\mathbf{r}) = \left(\sum_{R=1}^{N_R} \mathbf{G}_R^T(\mathbf{r})\mathbf{G}_R^{\phantom{T}}(\mathbf{r})\right)^{-1} \mathbf{d}(\mathbf{r}),\]

where \(\mathbf{G}_R^{\phantom{T}}(\mathbf{r})\) is the vectorized derivative of Green’s function for receiver \(R\) and \(\mathbf{d}(\mathbf{r})\) is a vector obtained from amplitudes of the corresponding waveforms:

\[\mathbf{d}(\mathbf{r}) = \sum_{R=1}^{N_R} A_R(t+T_R(\mathbf{r})) \mathbf{G}_R^{\phantom{T}}(\mathbf{r}).\]

More details on the described inversion including stability issues can be found in Zhebel & Eisner (2014) [9].

References

[1]

Anikiev, D. (2015). Joint detection, location and source mechanism determination of microseismic events (Doctoral dissertation). St. Petersburg State University. St. Petersburg. https://disser.spbu.ru/files/phdspsu2015/Anikiev_PhD_web_final.pdf

[2]

Anikiev, D., Valenta, J., Staněk, F. & Eisner, L. (2014). Joint location and source mechanism inversion of microseismic events: Benchmarking on seismicity induced by hydraulic fracturing. Geophysical Journal International, 198(1), 249–258. https://doi.org/10.1093/gji/ggu126

[3]

Claerbout, J. F. (1971). Toward a unified theory of reflector mapping. Geophysics, 36(3), 467-481. https://doi.org/10.1190/1.1440185

[4]

Claerbout, J. (1985). Imaging the earth’s interior. Oxford, England: Blackwell Scientific Publications. https://sepwww.stanford.edu/sep/prof/iei2/

[5]

Neidell, N. S., & Taner, M. T. (1971). SEMBLANCE AND OTHER COHERENCY MEASURES FOR MULTICHANNEL DATA. Geophysics, 36(3), 482–497. https://doi.org/10.1190/1.1440186

[6]

Sipkin, S. A. (1982). Estimation of earthquake source parameters by the inversion of waveform data: synthetic waveforms. Physics of the Earth and Planetary Interiors, 30(2–3), 242–259. https://doi.org/10.1016/0031-9201(82)90111-x

[7]

Timoshin Yu. V. (1972). Fundamentals of diffraction conversion of seismic recordings. Moscow: Nedra. [In Russian].

[8]

Trojanowski, J., & Eisner, L. (2016). Comparison of migration‐based location and detection methods for microseismic events. Geophysical Prospecting, 65(1), 47–63. https://doi.org/10.1111/1365-2478.12366

[9]

Zhebel, O., & Eisner, L. (2014). Simultaneous microseismic event localization and source mechanism determination. Geophysics, 80(1), KS1–KS9. https://doi.org/10.1190/geo2014-0055.1