AcousticLSRTM¶
sweep.equations.AcousticLSRTM ¶
Bases: sweep.equations.base.SecondOrderEquation
Second-order 2-D acoustic Born / LSRTM wave equation.
Two coupled scalar wave equations: a background pressure-like field
h1 propagating through the smooth velocity vp, and a
scattered pressure-like field sh1 driven by the reflectivity
perturbation mp acting on the background Laplacian (linearised
Born scattering). Both fields share an independent set of CPML
memory variables. Defaults: source on the background field h1,
receivers on the scattered field sh1 — the standard layout for
least-squares reverse-time migration.
Models (constructor input order)
vp(m/s): Background acoustic velocity model.mp: Acoustic reflectivity perturbation used for LSRTM.
Wavefields
h1(aliases:pressure,p,background): Background acoustic pressure-like wavefield; default source.h2(aliases:pressure_prev,background_prev): Previous-step background wavefield (internal).psix: Background CPML memory variable for the x-derivative term (internal).psiz: Background CPML memory variable for the z-derivative term (internal).zetax: Background CPML auxiliary wavefield for the x-direction update (internal).zetaz: Background CPML auxiliary wavefield for the z-direction update (internal).sh1(aliases:scattered,scattered_pressure,data): Scattered acoustic wavefield used for LSRTM data prediction; default receiver.sh2(aliases:scattered_prev): Previous-step scattered wavefield (internal).spsix: Scattered-wave CPML memory variable for the x-derivative term (internal).spsiz: Scattered-wave CPML memory variable for the z-derivative term (internal).szetax: Scattered-wave CPML auxiliary wavefield for the x-direction update (internal).szetaz: Scattered-wave CPML auxiliary wavefield for the z-direction update (internal).
Defaults
source_type:['h1']receiver_type:['sh1']pml_type:'cpmlr'
Build the 2-D acoustic LSRTM equation operator.
Parameters:
-
spatial_order–FD accuracy order of the spatial Laplacians applied to both the background and scattered fields — e.g.
spatial_order=4is fourth-order accurate. Internally the half-stencil width isM = spatial_order // 2(used for loop bounds and PML padding). Must be an even integer (2, 4, 6, 8, 10, …). Performance note (impl='c'on CUDA): the compiled kernels ship template specialisations only forspatial_order ∈ {2, 4, 6, 8}. Above 8 the dispatcher drops to a generic runtime path (order = -1insrc/sweep/csrc/cuda/equations/acoustic_lsrtm2d/forward.cu) which uses more registers and runs noticeably slower. The PyTorch eager path is unaffected. Defaults to 4. -
device–Device for the operator's static kernels. Use
'cuda'/ atorch.devicefor GPU runs so the propagator can follow without a host↔device copy. Defaults to'cpu'. -
backend–Array / programming backend,
'torch'or'jax'. When you later wantimpl='c', leave this on'torch'. Defaults to'torch'.