Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SeisRTM: Transmitted Surface Wave Reverse Time Migration

License: MIT Paper Python

Research code for "Ambient Noise Surface Wave Reverse Time Migration for Fault Imaging" (Li, Li, Gu, Gao & Zhang, JGR: Solid Earth, 2020).

Surface waves that cross a fault are partly transmitted and partly reflected, and the transmitted waves carry the velocity contrast across it. Transmitted surface wave RTM images the fault by propagating the source wavefield in a source-side velocity model, back-propagating the recorded data (e.g. ambient noise cross-correlations) in a receiver-side velocity model, and cross-correlating the two wavefields. The elastic wave equation is solved with Deepwave.

Repository structure

tsw-rtm/
├── seisrtm/
│   ├── model/        ElasticModel (vp, vs, rho) on a regular 2D grid
│   ├── survey/       Source, Receiver, Survey, SeismicData
│   ├── propagator/   ElasticPropagator (Deepwave) + Hicks source/receiver interpolation
│   ├── signal/       Butterworth filters, f-k analysis and filtering
│   └── utils/        wavelets, smoothing, wavefield animation
└── examples/         RTM.ipynb tutorial + example observed data

Installation

git clone https://github.com/subsurface4d/tsw-rtm.git
cd tsw-rtm
conda create -n seisrtm python=3.10 -y && conda activate seisrtm
pip install -e .

A CUDA GPU speeds up the propagator but is not required; the example runs on CPU.

Usage

from seisrtm.model import ElasticModel
from seisrtm.survey import Survey, Source, Receiver
from seisrtm.propagator import ElasticPropagator
from seisrtm.utils import wavelet

model = ElasticModel(ox, oz, dx, dz, nx, nz, vp=vp, vs=vs, rho=rho, free_surface=True, nabc=20)
source = Source(nt=nt, dt=dt, f0=f0)
source.add_source([x_src, z_src], wavelet(nt, dt, f0), 'vz')
receiver = Receiver(nt=nt, dt=dt)
receiver.add_receiver([x_rec, z_rec], 'vz')

F = ElasticPropagator(model, Survey(source=source, receiver=receiver, device='cpu'))
data = F(save_wavefield=True)   # data.data['vz'], data.data['wavefields_vz']

The full workflow — observed data, forward and backward propagation, imaging condition, and stacking over shots — is in examples/RTM.ipynb; see examples/README.md.

Citation

@article{Li2020TSWRTM,
  title   = {Ambient Noise Surface Wave Reverse Time Migration for Fault Imaging},
  author  = {Li, Haipeng and Li, J. and Gu, N. and Gao, J. and Zhang, H.},
  journal = {Journal of Geophysical Research: Solid Earth},
  volume  = {125}, number = {12}, pages = {e2020JB020381}, year = {2020},
  doi     = {10.1029/2020JB020381}
}

License

MIT — see LICENSE. Built on Deepwave.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages