ElasticTTISG¶
sweep.equations.ElasticTTISG ¶
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=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/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'/ 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'.
prepare_models_for_c
class-attribute
¶
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.