Recipes: Seismic Wave Propagation
The recipes package provides production-ready seismic wave propagation solvers built on top of Devito and DevitoPRO. It supports forward modeling, adjoint propagation, and gradient computation for a range of physics formulations, with a consistent API usable from the command line or inside a Python script.
Supported Physics
| Key | Class | Description |
|---|---|---|
iso-acoustic |
AcousticIsotropic |
2nd-order (or 1st-order) isotropic acoustic |
tti-zhang / vti-zhang |
ZhangTTI |
Zhang (2011) pseudo-acoustic TTI/VTI |
tti-fletcher / vti-fletcher |
FletcherTTI |
Fletcher–Du–Fowler (2009) TTI/VTI |
tti-selfadjoint / vti-selfadjoint |
SelfAdjointTTI |
Self-adjoint TTI/VTI (Bube et al.) |
iso-elastic |
ElasticIsotropic |
Isotropic elastic velocity–stress |
tti-elastic / vti-elastic |
ElasticTTI |
Anisotropic (TTI/VTI) elastic |
Viscoacoustic attenuation (SLS model) is available as a variant of iso-acoustic and tti-zhang by prefixing the physics key with visco- (e.g. visco-iso-acoustic) or by passing --visco on the CLI.
Quick Start
From the command line
python recipes/run.py \
-physics iso-acoustic \
-d 101 101 \
-s 10.0 10.0 \
-nt 500From a script
import numpy as np
from recipes import layered_model, recipes_registry
model = layered_model('iso-acoustic', shape=(101, 101), spacing=(10., 10.))
solver = recipes_registry['iso-acoustic'](model, {'nt': 500, 'space_order': 8})
summary = solver.forward()For the full CLI reference see CLI Usage. For scripting details see Scripting API. To build a custom solver see Extending the Framework.