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 500

From 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.

Back to top