Wrapper for Devito to ease computation of elastic, acoustic, and acoustic anisotropic wave fields. Organize experiments in config files and save state for future reference.
Currently only 2D are solutions are supported. Extension to 3D is coming soon!
The solvers are based on the devito seismic examples with improvements (soon) to ease the development of wave propagation experiments in realistic media.
The primary requirement is devito which handles the discretization of the domain and the solver. It is recommended to follow the installation instructions on that repo.
More requirements updates and installation instructions coming soon.
An example is setup with a small verison of the Marmousi model.
Assuming you have a working devito environment setup run
cd acoustic
python3 acoustic_run.py
This will write 20 shot gathers to disk in numpy object arrays which contains the source coordinate, reciever coordinates, and pressure data.
To run with a different velocity model, acquisition geometry, source frequency, etc. edit the config file config.yaml
accordingly.
Some of the parameters in the config file are not yet implemented; these are noted as such.
Some guidelines for running:
- The velocity model and other physical parameters should be stored in numpy arrays with shape
(nx, nz)
nav.pkl
controls the source and reciever positions. Check the scriptprepare_geometry.py
to see how to prepare this file. Currently, simultaneous source acquisition is not supported.
The damping absorbing boundaries provided in the devito examples are unsatisfactory for many applications. I am working on rewriting the devito examples with PML absorbing boundaries. In the meantime, the velocity model is padded based on the two way travel time of straight rays from the source location to the model boundary so that the numeric reflections are largely removed. This is reasonably affordable in 2D. Note that the padding is not robust if e.g. there are high velocity regions in the shallow subsurface, so use a few damping layers as well.
Currently the solver is limited to 2nd order in time. I will try to include higher order time discretizations, improved spatial stencils, etc. as time permits.
- Parallelization over source location via dask ✅
- Complete acoustic ✅ and acoustic tti cases ✅
- Unfinished config features
- PML absorbing boundary conditions
- Extension to 3D
- GPU support
- Simultaneous sources