Changelog
PyGRT v0.12.0
Support inpute distance file, like
grt greenfn -R<file> ...Add the exact closed-form solution the first-kind Lamb problem.
Fix some typos in comments of test shell scripts.
Update documents, fix some typos.
CI: use macos-15 for intel and arm64 arch by @Dengda98 in #111
FEAT: exact closed-form solution for the Lamb problem of the first kind by @Dengda98 in #117
DOC: add lamb1 (the first-kind Lamb problem) by @Dengda98 in #119
Full Changelog: v0.11.0…v0.12.0
PyGRT v0.11.0
In this version, I have made lots of enhancements for future developments. From the user’s perspective, mainly including:
support 4-column model (ignore Qp and Qs).
save static results in NetCDF format.
remove argument
prefixto simplify the I/O ofsyn,strain,stressandrotation.update usage of
-Land-K.add modules manual in Chinese.
rearrange the core code of R/T matrix.
STYLE: add macro
GRT_SAFE_FREE_PTR(_ARRAY)to safely free allocated memory by @Dengda98 in #63FEAT: support 4-column model and use layer depth by @Dengda98 in #64
REFAC: split R/T functions into P-SV and SH by @Dengda98 in #65
DOC: fix some description typo in formula by @Dengda98 in #66
REFAC: Split source coefs into P-SV and SH by @Dengda98 in #67
FEAT: replace
sprintftoasprintf, and define a macro by @Dengda98 in #68REFAC: use struct and wrapped functions to organize FFTW behaviors by @Dengda98 in #69
FEAT: support upsampling factor in
greenfn -Nby @Dengda98 in #70FEAT: support upsampling factor in
greenfn -N(part 2) by @Dengda98 in #71FIX: remove redundant process for last frequency point by @Dengda98 in #73
REFAC: move headers to directory
include/grt/and rename all public functions with prefixgrtby @Dengda98 in #78FEAT: remove struct
PYMODEL1D, use structGRT_MODEL1Dglobally by @Dengda98 in #79REFAC: rename macros and global variables with prefix
GRTby @Dengda98 in #80REFAC: use macro for comment head ‘#’, and add related helper function by @Dengda98 in #81
FEAT: rearange functions in
search.h/candmatrix.h, with X macros by @Dengda98 in #82FEAT: use
cinstead ofkin definition of vertical wavenumberaandbby @Dengda98 in #84FEAT: split delay matrix into a function by @Dengda98 in #88
FIX: fillup the elastic params before returning the reading model function by @Dengda98 in #89
FEAT: split delay matrix into a function (static) by @Dengda98 in #90
REFAC: rename some functions for better development by @Dengda98 in #92
STYLE: rename
b2aandk2a, and move their.cfiles tosrc/tools/directory by @Dengda98 in #93FEAT: update usage of -K, -L, -G, remove -V by @Dengda98 in #97
FEAT: save static results in NetCDF format by @Dengda98 in #98
FEAT: remove
-P<prefix>, and simplify the input argument ofstrain,stressandrotationby @Dengda98 in #103FEAT: remove
-P<prefix>(Part 2, static case) by @Dengda98 in #104
Full Changelog: v0.10.0…v0.11.0
PyGRT v0.10.0
This is a major update before releasing a stable version, primarily concerning the execution style of the C program (the Python interface remains unaffected). Recognizing that compiling multiple executables would significantly hinder future maintenance and feature expansion, and considering the current early-stage program isn’t too complex yet, I decided to implement this change promptly.
Inspired by Git and GMT programs, PyGRT will now compile into just one executable — grt — starting with this version. Similar to GMT, it will invoke different modules to perform various computational functions, for example:
## Calculate Green's functions (equivalent to the old 'grt' command)
grt greenfn [arg1] [arg2] ...
## Synthesize theoretical seismograms (equivalent to the old 'grt.syn' command)
grt syn [arg1] [arg2] ...
## Calculate static Green's functions (equivalent to the old 'stgrt' command)
grt static greenfn [arg1] [arg2] ...
...
grt and each module’s help documentation can be printed using -h. The online documentation has been updated accordingly, and all example scripts have been modified to reflect these changes.
DOC: update installation and remove some unused
*.pofiles by @Dengda98 in #52FIX: allow zero Q^-1, and relevant attenuation scale equals 1.0 by @Dengda98 in #53
FIX: update new command in
example/scripts by @Dengda98 in #57CI: add CFLAGS=”-fPIC” in fftw builds in centos 7 docker by @Dengda98 in #58
FIX: update new command in
docs/scripts, and update their description in doc by @Dengda98 in #59
Full Changelog: v0.9.2…v0.10.0
PyGRT v0.9.2
In Github Actions, use CentOS 7 docker to compile PyGRT, to support glibc >= 2.17 (ensure compatibility as much as possible).
Full Changelog: v0.9.1…v0.9.2
PyGRT v0.9.1
Bugfix release addressing issues in v0.9.0’s source located in liquid. Update recommended: pip install --upgrade pygrt-kit
DOC: add note about near-field in FIM and SAFIM by @Dengda98 in #46
FIX: add some warning about source in liquid by @Dengda98 in #48
Full Changelog: v0.9.0…v0.9.1
PyGRT v0.9.0
I’m very excited to announce the new release of PyGRT v0.9.0 has supported for computing synthetic seismograms with liquid layers, with results validated against CPS330’s rspec96 module for accuracy. The documentation has been updated to include the corresponding formulas. This release is particularly useful for studies involving ocean.
Upgrade via pip install --upgrade pygrt-kit.
REFAC: update temp var for
R_EVLto improve code readability by @Dengda98 in #31TEST: add compare_results_liquid example by @Dengda98 in #36
allow zero vs for computing sythetic seismogram and stress by @Dengda98 in #38
FIX: raise error if receiver located on the interface where liquid exist by @Dengda98 in #39
DOC: add description about liquid layer supporting by @Dengda98 in #43
Full Changelog: v0.8.0…v0.9.0
PyGRT v0.8.0
I’m excited to announce that now PyGRT supports Self-Adaptive Filon’s Integration Method(SAFIM), a powerful tool to efficiently compute Green’s Functions at large epicentral distances.

Full Changelog: v0.7.0…v0.8.0
PyGRT v0.7.0
Full Changelog: v0.6.0…v0.7.0
PyGRT v0.6.0
DOC: add “strain and stress calculation” in Tutorial, and fix some typos by @Dengda98 in #16
Update stats file (kernel functions value in integration ) format, python reading functions, add
grt.k2acommand by @Dengda98 #17FEAT: add dist in output of function
pygrt.utils.read_statsfile_ptamby @Dengda98 #19DOC: Refactor tutorial scripts and documentation for clarity and consistency by @Dengda98 #20
add
read_kernels_freqs()function, add “kernel frequency response” in Tutorial by @Dengda98 #22Support rotation tensor calculation in both dynamic and static case by @Dengda98 #23
Full Changelog: v0.5.1…v0.6.0

PyGRT v0.5.1
Now both Python and C can compute displacement, strain and stress in dynamic and static cases.
Fix some math error and text error, such as, unit mixing (
kmandcm) in spatial derivatives in Python, coordinate of moment tensor is NED (North, East, Downward) , …Chinese document is available, see here. Thanks @xichaoqiang for revision.
Support static displacements, strain and stress calculations in Python by @Dengda98 in #14
Build online docs, and upload to ReadtheDocs by @Dengda98 in #15
docs/folder has been removed from the following*.tar.gz
Full Changelog: v0.4.0…v0.5.1
PyGRT v0.4.0
Now in C-level, PyGRT can compute displacements, strain and stress in both dynamic and static case. Python-level will follow up in later minor version.
FIX: segfault when call
write_statsinptam.cby @Dengda98 in #7FEAT: support spatial derivatives of displacements by @Dengda98 in #9
add simple tool
grt.b2ato convert waveforms data in SAC file into ASCII file. by @Dengda98 in #10Add some features and fix some bugs about source signals by @Dengda98 in #11
Big update: Support static displacements calculation, Support strain and stress calculation for dynamic and static case by @Dengda98 in #13
Full Changelog: v0.2.0…v0.4.0
PyGRT v0.2.0
Support Linux, MacOS and Windows
[x] Linux
[x] MacOS
[x] Windows
Pre-compiled binary programs and Libraries on Linux, MacOS and Windows. You can simply run
pip install pygrt-kitto install the new version.Linux and MacOS. Dynamic library of
OpenMPis needed, while in general it has already been included inGNUcompiler. So if program complain that “libgomp.so not found” or python said “you may need other dependency”, just add one step to installOpenMP.Native Windows!!
Different from Linux and MacOS,OpenMPare statically linked. You can just open acmd(notPowerShell) orAnaconda Prompt, directly run the program.
Full Changelog: v0.2.0