Repository navigation
PyGRT v0.18.0
This release expands PyGRT’s dynamic finite-fault modeling and Coulomb stress workflows, with new fault preparation tools, improved Green’s function interpolation, and more practical tutorials and examples.
Highlights
- Dynamic finite-fault synthesis: Use finite-fault sources with individual source time functions and rupture delays in both
synand the analyticallambmodule. Supports arbitrary receiver points and finite receiver faults. - Dynamic Coulomb stress: New
sprojandcoulombmodules turn dynamic stress tensors into normal, shear, and Coulomb stress histories on receiver fault planes. - Finite-fault preparation tools: Convert USGS/WISP PARAM and FSP models with
faultconvert, generate subfaults and rupture delays withfaultdiv, and export regular fault grids to NetCDF withfault2ncfor visualization. - Improved Green’s function libraries: Dynamic synthesis now supports interpolation between library nodes, with P-arrival alignment to reduce waveform smearing. FIM and SAFIM integration also include near-field terms.
- Extended Lamb solutions and source time functions: Isolate individual seismic phases, explore a moving vertical point force with
lamb1, and use asymmetric cosine source time functions.
New Examples and Tutorials
New Gallery examples demonstrate:
- Lamb phase ray paths and individual waveforms.
- Dynamic displacement approaching the corresponding static solution.
- How finite-fault subdivision affects synthetic waveforms.
- Dynamic displacement and Coulomb stress from a USGS finite-fault model.
- P-arrival-aligned interpolation compared with ordinary interpolation and direct calculations.
A new tutorial uses source animations to explain displacement versus velocity, connecting source time histories with integration and differentiation settings. Dynamic waveform examples now emphasize step-source responses and show how different source time functions shape displacement waveforms.
Tutorials have also been reorganized, with downloadable example archives for easier reproduction. The static finite-fault example now uses the same USGS layered model as the dynamic example.
Fixes and Compatibility
- Corrected convolution sample alignment and Lamb response handling when the output window begins after the response onset.
- Corrected the parabolic source time function to use a smooth, piecewise quadratic shape.
- Custom source time functions now support explicit time–amplitude samples with a different sampling interval, with automatic resampling and area normalization.
- Removed the NumPy
<2.0dependency restriction.
Upgrading
Trapezoidal time-function parameters now specify rise, plateau, and fall durations, rather than their ending times. The corrected parabolic function also changes results using -Dp.
Several CLI options have been standardized: tensor post-processing input uses -G, receiver faults use -U, and Lamb phase selection uses -L. Legacy Python stream-processing helpers and optional result-return behavior in file post-processing utilities have been removed.
Check the updated documentation (Chinese) when adapting existing scripts.
pip install --upgrade pygrt-kitWhat's Changed
- FIX: correct Lamb sliding-wave phase naming and reciprocity mapping by @Dengda98 in #363
- FEAT: in lamb1, add moving vertical point-force solution by @Dengda98 in #364
- FEAT: add phase-selective Lamb solutions and Gallery example by @Dengda98 in #365
- FEAT: warn when unsupported modules read Q values by @Dengda98 in #366
- FIX: reject reserved model name "command" by @Dengda98 in #367
- REFAC: centralize model name in MODEL1D by @Dengda98 in #368
- REFAC: remove unexpected macro from lamb1 and stream output by @Dengda98 in #369
- REFAC: remove redundant "GRT" prefixes from struct names by @Dengda98 in #370
- REFAC: rename receiver-fault option and lamb-phase option by @Dengda98 in #371
- FIX: pass large distance lists through temporary files in Python by @Dengda98 in #372
- REFAC: move
rcv_points.[hc]tocommon/, renamestatic_output.[hc]tostatic_nc.[hc]by @Dengda98 in #373 - REFAC: remove redundant cleanup before GRTRaiseError by @Dengda98 in #374
- REFAC: centralize indirect SAC header access and move rcvfn parameters to
respfields by @Dengda98 in #375 - REFAC: rewrite time function generation and unify discrete normalization by @Dengda98 in #376
- REFAC: remove redundant
isfinitechecks by @Dengda98 in #377 - REFAC: use
real_tfor waveform and signal processing by @Dengda98 in #378 - REFAC: unify static NetCDF receiver layouts and I/O by @Dengda98 in #379
- REFAC: rename file "rcv_points.[hc]" to "rcv_point.[hc]" by @Dengda98 in #380
- REFAC: use -G for dynamic tensor input directories by @Dengda98 in #381
- REFAC: simplify source naming, Python file APIs and validation by @Dengda98 in #382
- REFAC: share fault-plane stress projection and tighten Coulomb validation by @Dengda98 in #383
- FIX: unify zero-padded circular convolution and sample alignment by @Dengda98 in #384
- REFAC: centralize Green-function waveform output and SAC timing by @Dengda98 in #385
- FIX: prepare Lamb phase masks and preserve responses before output windows by @Dengda98 in #386
- FIX: enforce finite-source ZNE output and expose static synthesis threads by @Dengda98 in #387
- FEAT: add asymmetric cosine time function and redefine trapezoidal durations by @Dengda98 in #389
- REFAC: move coordinate conversion modules to
toolsand share core functions by @Dengda98 in #390 - REFAC: migrate package metadata to
pyproject.tomlby @Dengda98 in #391 - REFAC: pass depth arrays through temporary files and tidy module documentation by @Dengda98 in #394
- REFAC: unify fault source and receiver structures across static synthesis by @Dengda98 in #395
- FEAT: support finite-fault dynamic synthesis and GFs library interpolation by @Dengda98 in #397
- FEAT: support finite-fault sources and receiver geometries in Lamb synthesis by @Dengda98 in #398
- FEAT: add dynamic stress projection and Coulomb stress postprocessing by @Dengda98 in #399
- DOC: add gallery ex21, comparing dynamic and static displacements by @Dengda98 in #402
- REFAC: simplify module invocation tests by @Dengda98 in #401
- REFAC: remove legacy Python stream processing utilities by @Dengda98 in #403
- FIX: unify half-space model option for
okadaandlambby @Dengda98 in #404 - FIX: support custom time functions with different sampling intervals by @Dengda98 in #405
- DOC: fix explicit receiver fault subdivision in static tutorial by @Dengda98 in #406
- FEAT: support disabling finite-fault subdivision by @Dengda98 in #408
- FIX: treat the first Coulomb fault column as a placeholder by @Dengda98 in #409
- REFAC: normalize finite-fault source terms and mechanisms by @Dengda98 in #410
- DOC: centralize simplified-Coulomb finite-fault format documentation by @Dengda98 in #411
- REFAC: share file identity checks and simplify option parsing by @Dengda98 in #412
- FEAT: add
faultdivandfault2ncmodules by @Dengda98 in #413 - CI: use CentOS vault repositories and skip
yum makecacheby @Dengda98 in #414 - DOC: standardize finite-fault format naming as sCoulomb by @Dengda98 in #415
- DOC: add finite-fault subdivision gallery example by @Dengda98 in #416
- FEAT: use -G for static tensor input files by @Dengda98 in #417
- DOC: reorganize finite-fault tutorials and add Coulomb stress examples by @Dengda98 in #419
- FEAT: include near-field terms in FIM and SAFIM by @Dengda98 in #420
- DOC: reorganize tutorial examples and add downloadable archives by @Dengda98 in #421
- FIX: restore SAFIM sampling criteria while retaining near-field integrals by @Dengda98 in #422
- FEAT: add fault-plane metadata and rename
fault2ncgrid dimensions by @Dengda98 in #423 - FEAT: add USGS finite-fault conversion and dynamic Coulomb stress example by @Dengda98 in #424
- DOC: standardize module references and wording by @Dengda98 in #425
- FEAT: align P arrivals before dynamic Green-function interpolation by @Dengda98 in #426
- DOC: add gallery ex24, dynamic Green-function interpolation comparison example by @Dengda98 in #427
- FIX: remove NumPy 2 version restriction by @Dengda98 in #428
- DOC: use USGS layered model for static finite-fault example (gallery ex19) by @Dengda98 in #429
- DOC: explain displacement and velocity with source animations by @Dengda98 in #430
- FIX: use piecewise parabolic source time function by @Dengda98 in #431
- DOC: use step responses in dynamic waveform examples by @Dengda98 in #432
- DOC: add linked book covers to Lamb problem and introduction by @Dengda98 in #433
Full Changelog: v0.17.2...v0.18.0