简介
PyGRT 是什么?
PyGRT 是一个用于计算半无限水平层状介质中理论地震图的 C/Python 程序包。 GRT 指代的是程序包的主要理论基础为广义反射透射系数矩阵法 (Generalized Reflection-Transmission coefficient matrix), 但不局限于该方法。同时 grt 也是 C 语言实现的可执行文件名。
目前, PyGRT 可实现:
计算位移及其空间导数 (动态解和静态解)
计算应力、应变、旋转张量 (动态解和静态解)
多个辅助计算模块,如保存核函数,求解Lamb问题等
PyGRT 可实现《理论地震图方法及其应用》中绝大部分的计算过程及算例。 该书为姚振兴院士和谢小碧研究员撰写的地震学著作, PyGRT 已成为该书推荐的开源程序包。
PyGRT 运行平台
PyGRT 发布了二进制安装包,支持在 Windows, Linux, MacOS 中直接下载使用,无需编译。
PyGRT 程序特点
C语言的高效 + Python语言的便捷
C 程序 grt
尽管程序包名以 Py 打头,但仍然使用 C 语言编译了可执行文件 grt , 支持以命令行传参的风格运行程序。 这使得用户既可以编写 Python 脚本,也可以在终端运行 grt 的形式来调用程序进行计算。
模块化
PyGRT 遵循模块化设计思想,不同计算模块和处理函数划分在不同模块中, 使用不同的源文件和头文件管理。方便后续代码维护和功能扩展。
受画图程序 GMT 的启发, grt 程序也以模块化的形式调用不同计算模块。
明确的中文注释
我在代码中对计算过程给出了明确的中文注释以及相关的公式索引, 所有公式索引(除非特别指明)均来自 姚振兴和谢小碧 (2026) 。 代码基本按照公式推导的计算逻辑,在不过多损失计算效率的前提下进行适当优化,保证了代码的可读性。 若你对具体实现过程感兴趣,尤其是对方法的具体实现流程困惑时,可以在运行程序的同时结合阅读相关 C代码 , 希望能给学习过程中的你提供一些参考,解答一些疑惑。仅是我浅薄的理解,仅作参考,欢迎指正。
多种优化的计算方法
当震中距 \(r\) 很大时 :
基于线性插值的Filon积分法 (纪晨和姚振兴, 1995; 姚振兴和谢小碧, 2026)
自适应Filon积分法 (Chen and Zhang, 2001; 张海明, 2021)
当震源深度和台站深度很接近时。
峰谷平均法 (Zhang et al., 2003; 张海明, 2021)
直接收敛法 (Zhu et al., 2025b)
含低速层模型的面波频散计算 :
自适应搜根策略 Zhu et al., 2026
开源透明,持续维护
PyGRT 开源在 Github ,将持续公开维护并扩展相关的计算功能。 欢迎用户提交 bug 报告、申请新功能等,也欢迎提交贡献。
参考文献
如果你的研究中使用了 PyGRT 程序,请引用以下相关文章:
PyGRT 程序包。 由于审稿过程中程序在不断扩展完善,目前程序的功能已超过该文章的叙述范围,具体功能详见本文档。
Zhu, D., Wang, J., Hao, J., Yao, S., Xu, Y., Xu, T., and Yao, Z. (2025a). PyGRT: An Efficient and Integrated Python Package for Computing Synthetic Seismograms in a Layered Half-Space Model. Seismological Research Letters, 97(3), 2138–2153. doi: 10.1785/0220250057
直接收敛法
Zhu, D., Xu, T., Hao, J., and Yao, Z. (2025b). A Direct Convergence Method for Computing Synthetic Seismograms for a Layered Half-space with Sources and Receivers at Close Depths. Bulletin of the Seismological Society of America, 116(2), 576–588. doi: 10.1785/0120250190
自适应搜根算法
Zhu, D., Xu, T., Hao, J., and Yao, Z. (2026). An Adaptive Strategy for Robust and Efficient Computation of Dispersion Curves in a Layered Half-Space. Bulletin of the Seismological Society of America. doi: 10.1785/0120260071
如果你对相关理论方法感兴趣, PyGRT 主要参考了以下文章和书籍:
Aki, Keiiti, and Richards P. G. 2009. Quantitative Seismology (2nd edition).
Kennett, B. L. N., and Kerry N. J., 1979. Seismic waves in a stratified half space. Geophysical Journal International, 57(3), 557–583. (link)
Bouchon M. 1981. A simple method to calculate Green’s functions for elastic layered media. Bulletin of the Seismological Society of America, 71(4), 959–971. (link)
Yao Z., and Harkrider, D. G. 1983. A generalized refelection-transmission coefficient matrix and discrete wavenumber method for synthetic seismograms. Bulletin of the Seismological Society of America, 73(6), 1685-1699. (link)
Chen, X., and Zhang, H., 2001. An Efficient Method for Computing Green’s Functions for a Layered Half-Space at Large Epicentral Distances. Bulletin of the Seismological Society of America, 91(4), 858–869. (link)
Zhang, H. M., Chen, X. F., and Chang, S. 2003. An efficient numerical method for computing synthetic seismograms for a layered half-space with sources and receivers at close or same depths. Seismic motion, lithospheric structures, earthquake and volcanic sources: The Keiiti Aki volume, 467-486. (link)
谢小碧, 姚振兴, 1989. 计算分层介质中位错点源静态位移场的广义反射、透射系数矩阵和离散波数方法[J]. 地球物理学报, 32(3): 270-280. (link)
纪晨, 姚振兴, 1995. 区域地震范围的宽频带理论地震图算法研究[J]. 地球物理学报, 38(4): 460-468. (link)
张海明 著. 2021. 地震学中的Lamb问题(上). 科学出版社. (link)
张海明, 冯禧 著. 2024. 地震学中的Lamb问题(下). 科学出版社. (link)
姚振兴, 谢小碧 著. 2026. 理论地震图方法及其应用. 科学出版社. (link)