Skip to content

ElasticTTISG

sweep.equations.ElasticTTISG

ElasticTTISG(spatial_order=8, device='cpu', backend='torch')

Bases: sweep.equations.elastic_tti.ElasticTTI

First-order 2-D three-component elastic TTI wave equation (axis-aligned SG).

Same physics as :class:ElasticTTI (Bond-rotated TTI stiffness, 8 raw model parameters) but with derivatives taken on an axis-aligned standard staggered grid (forward / backward FD pairs along x and z). Mixed-location stiffness couplings are used directly without interpolation — this is a clean no-interpolation SG reference companion to the RSG implementation. CPML follows the staggered-grid cpmls convention (8 profiles).

Models (constructor input order)

  • vp0 (m/s): VTI-frame vertical P velocity.
  • vs0 (m/s): VTI-frame vertical S velocity.
  • rho (kg/m^3): Density.
  • epsilon: Thomsen epsilon.
  • delta: Thomsen delta.
  • gamma: Thomsen gamma.
  • theta (rad): Tilt angle.
  • phi (rad): Azimuth angle.

Wavefields

  • vx (aliases: velocity_x): Particle velocity in x; default receiver.
  • vy (aliases: velocity_y): Particle velocity in y.
  • vz (aliases: velocity_z): Particle velocity in z; default receiver.
  • sxx (aliases: stress_xx): Normal stress xx; default source.
  • szz (aliases: stress_zz): Normal stress zz; default source.
  • syz (aliases: stress_yz): Shear stress yz.
  • sxz (aliases: stress_xz): Shear stress xz.
  • sxy (aliases: stress_xy): Shear stress xy.
  • m_vxx: CPML memory for dvx/dx (internal).
  • m_vxz: CPML memory for dvx/dz (internal).
  • m_vyx: CPML memory for dvy/dx (internal).
  • m_vyz: CPML memory for dvy/dz (internal).
  • m_vzx: CPML memory for dvz/dx (internal).
  • m_vzz: CPML memory for dvz/dz (internal).
  • m_txxx: CPML memory for dsxx/dx (internal).
  • m_txzz: CPML memory for dsxz/dz (internal).
  • m_txyx: CPML memory for dsxy/dx (internal).
  • m_tyzz: CPML memory for dsyz/dz (internal).
  • m_txzx: CPML memory for dsxz/dx (internal).
  • m_tzzz: CPML memory for dszz/dz (internal).

Defaults

  • source_type: ['sxx', 'szz']
  • receiver_type: ['vx', 'vz']
  • pml_type: 'cpmls'

Build the 2-D-3C elastic TTI equation operator (axis-aligned SG).

Parameters:

  • spatial_order

    FD accuracy order of the staggered first-derivative operator — e.g. spatial_order=4 is fourth-order accurate. Internally the half-stencil width is M = 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 for spatial_order ∈ {2, 4, 6, 8}. Above 8 the dispatcher drops to a generic runtime path (order = -1 in src/sweep/csrc/cuda/equations/elastic_tti_sg2d/forward.cu) which uses more registers and runs noticeably slower. The PyTorch eager path is unaffected. Defaults to 8.

  • device

    Device for the operator's static gradient kernels. Use 'cuda' / a torch.device for 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 want impl='c', leave this on 'torch'. Defaults to 'torch'.

prepare_models_for_c class-attribute

prepare_models_for_c = True

bool(x) -> bool

Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.