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'.
C_HAS_RECURSIVE_CKPT
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.
C_NAME
class-attribute
¶
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
¶
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.