准备工作
PyGRT 程序包由C和Python两个编程语言的代码组成,目的是兼并高效性和便捷性。
底层复杂运算由C语言编写,编译链接成动态库 libgrt.so 供Python调用。Python通过 ctypes 库导入动态库以使用外部函数,以此兼并了C语言的高效和Python语言的便捷。
除了Python脚本式运行, PyGRT 保留传统命令行式运行C程序 grt 。
受 GMT 的启发, grt 程序对多个计算功能使用模块化管理,
可使用类似于以下格式来运行程序。每个模块可使用 -h 查看帮助。
grt <module-name> [<module-options>]
C程序的运行独立于Python,不需要Python环境,从而满足了更多计算场景。
入门部分包含一些示例与说明,可快速上手。Github主页的 example/ 文件夹中有更多示例,可在 Github Releases 中下载。
建立模型文件
这里的选项卡 C 不代表内部是C语言代码,而是 使用C程序 grt 。后续的选项卡沿用此设定,不再解释。
PyGRT 以如下自由格式定义模型中每层的物性参数,每列之间以空格隔开(最后两列的 Qp, Qs 可省略)
Thickness(km) Vp(km/s) Vs(km/s) Rho(g/cm^3) [Qp] [Qs]
例如 milrow 模型(假设文本文件名为 milrow )
0.2 3.4 1.7 2.3
0.6 3.7 1.9 2.4
0.5 4.2 2.1 2.4
0.5 4.6 2.3 2.5
0.7 4.9 2.8 2.6
0.5 5.1 2.9 2.7
6.0 5.9 3.3 2.7
28 6.9 4.0 2.8
0.0 8.2 4.7 3.2
模型格式与C一致,在Python中可以使用 np.loadtxt() 导入文本文件,或者手动定义数组
import numpy as np
import pygrt
# option 1:
# modarr = np.loadtxt("milrow")
# option 2
modarr = np.array([
[0.2, 3.4, 1.7, 2.3, 9e10, 9e10],
[0.6, 3.7, 1.9, 2.4, 9e10, 9e10],
[0.5, 4.2, 2.1, 2.4, 9e10, 9e10],
[0.5, 4.6, 2.3, 2.5, 9e10, 9e10],
[0.7, 4.9, 2.8, 2.6, 9e10, 9e10],
[0.5, 5.1, 2.9, 2.7, 9e10, 9e10],
[6.0, 5.9, 3.3, 2.7, 9e10, 9e10],
[28., 6.9, 4.0, 2.8, 9e10, 9e10],
[0., 8.2, 4.7, 3.2, 9e10, 9e10],
])
备注
最后一行表示半空间,对应厚度值不会被使用。
备注
Vs 设置为 0 表示该层为液体层。