Skip to content

ElasticTTISG3D

sweep.equations.ElasticTTISG3D

ElasticTTISG3D(spatial_order=4, device='cpu', backend='torch')

Bases: sweep.equations.base.FirstOrderEquation

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

Velocity-stress formulation for a tilted transversely isotropic 3-D medium: the 8 raw model parameters (Thomsen-style VTI constants plus tilt theta and azimuth phi) are reduced to the full 21 independent stiffness components C11…C66 via the 3-D Bond rotation, and the six stresses couple to all six Voigt strain rates. Derivatives use the Virieux staggered grid shared with :class:~sweep.equations.elastic3d.Elastic; mixed-location stiffness couplings are used directly without interpolation, making this the 3-D companion of :class:ElasticTTISG. CPML follows the staggered-grid cpmls convention (12 profiles).

With isotropic parameters (epsilon=delta=gamma=theta=phi=0) the stiffness collapses to lambda/mu and the update is numerically identical to the isotropic 3-D elastic equation.

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 the x direction; default receiver.
  • vy (aliases: velocity_y): Particle velocity in the y direction; default receiver.
  • vz (aliases: velocity_z): Particle velocity in the z direction; default receiver.
  • sxx (aliases: stress_xx): Normal stress in the x direction; default source.
  • syy (aliases: stress_yy): Normal stress in the y direction; default source.
  • szz (aliases: stress_zz): Normal stress in the z direction; default source.
  • sxy (aliases: stress_xy, shear_xy): Shear stress component.
  • sxz (aliases: stress_xz, shear_xz): Shear stress component.
  • syz (aliases: stress_yz, shear_yz): Shear stress component.
  • m_vxx: CPML memory variable for dvx/dx (internal).
  • m_vxy: CPML memory variable for dvx/dy (internal).
  • m_vxz: CPML memory variable for dvx/dz (internal).
  • m_vyx: CPML memory variable for dvy/dx (internal).
  • m_vyy: CPML memory variable for dvy/dy (internal).
  • m_vyz: CPML memory variable for dvy/dz (internal).
  • m_vzx: CPML memory variable for dvz/dx (internal).
  • m_vzy: CPML memory variable for dvz/dy (internal).
  • m_vzz: CPML memory variable for dvz/dz (internal).
  • m_sxxx: CPML memory variable for dsxx/dx (internal).
  • m_szzz: CPML memory variable for dszz/dz (internal).
  • m_sxyx: CPML memory variable for dsxy/dx (internal).
  • m_sxyy: CPML memory variable for dsxy/dy (internal).
  • m_sxzx: CPML memory variable for dsxz/dx (internal).
  • m_sxzz: CPML memory variable for dsxz/dz (internal).
  • m_syyy: CPML memory variable for dsyy/dy (internal).
  • m_syzy: CPML memory variable for dsyz/dy (internal).
  • m_syzz: CPML memory variable for dsyz/dz (internal).

Defaults

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

Build the 3-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_sg3d/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 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'.

C_HAS_RECURSIVE_CKPT class-attribute

C_HAS_RECURSIVE_CKPT = False

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.

C_NAME class-attribute

C_NAME = 'elastic_tti_sg3d'

str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.str() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.

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.

supports_free_surface class-attribute

supports_free_surface = False

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.