Skip to content

v0.3.3 — ViscoElastic: 2-D visco-elastic with Qp and Qs

Choose a tag to compare

@GeophyAI GeophyAI released this 02 Oct 10:12
· 128 commits to dev since this release

sweep-solver 0.3.3

A feature release on top of 0.3.2: a 2-D visco-elastic equation. Upgrade with pip install -U sweep-solver; sweepx 0.3.3 requires it, so pip install -U sweepx brings it too.

Added

  • ViscoElastic: 2-D visco-elastic propagation with Qp and Qs, on eager and impl='c'. (#103)
    • Rheology: the one SPECFEM2D (and SeisFlows) uses, a generalized standard linear solid. n_sls Zener bodies (default 3) with relaxation times fixed by the band.
    • Models: vp, vs, rho, Qp, Qs, all five with gradients. Velocities are phase velocities at a reference frequency f_ref.
    • Constant-Q fit: a least-squares fit holds Q within ~5% of target over the band for Q ≥ 10. Q = inf reproduces Elastic.
    • Free surface: on any subset of the four edges, with the traction kept zero through the memory variables.
    • Memory strategies: full, chunk and recursive checkpointing, bitwise equal to each other. Boundary saving is refused, because the attenuation is dissipative; the default falls back to full storage.
    • CFL: ViscoElastic.unrelaxed_velocities() gives the velocities to check it against.
    • Accuracy: checked against the exact 2-D Green's function and against SPECFEM2D. Compiled and eager gradients agree at Elastic's own level (≤ 8.8e-5 over 72 source × receiver × geometry × free-surface combinations).
    • New notebook: Wavefield · Visco-elastic · GSLS (Qp, Qs).

The CUDA cores are rebuilt for the new equation (manylinux_2_28, ABI 2): cu12 68a9e84e, cu13 91ac17e4.

Full changelog: v0.3.2...v0.3.3