计算静态格林函数
本页文档示例下载
static_gfunc.tar.gz |
解压后进入示例目录,运行 bash run.sh 即可复现本页示例。
Python 中计算静态格林函数的主函数为 static_greenfn(),
命令行中使用 static_greenfn 模块。
建议先阅读完 计算动态格林函数 部分。静态情况与动态情况采取的计算方法一致,只是推导细节会有不同,详见 姚振兴和谢小碧 (2026) 。
不论是动态解还是静态解,在模型、源点深度和场点深度确定的情况下,格林函数仅与震中距相关。
实际建立静态格林函数库时,通常直接指定一维震中距序列;Python 接口中对应
dists,grt 模块中对应 -R。这是静态格林函数建库的常用方式。
示例程序
假设在 milrow 模型中,震源深度2km,接收点位于地表。
grt static greenfn -Mmilrow -D2/0 -R0/10/0.1 -Ostgrn.nc
结果输出为 NetCDF 文件。如下使用 ncdump -h 命令可查看文件的
基本信息。输出文件仍保留 north 和 east 两个水平维度,这是为了兼容。
netcdf stgrn {
dimensions:
depsrc = 1 ;
deprcv = 1 ;
north = 1 ;
east = 101 ;
layer = 9 ;
model_param = 6 ;
variables:
double model(layer, model_param) ;
double depsrc(depsrc) ;
double deprcv(deprcv) ;
double north(north) ;
double east(east) ;
double src_va(depsrc) ;
double src_vb(depsrc) ;
double src_rho(depsrc) ;
double rcv_va(deprcv) ;
double rcv_vb(deprcv) ;
double rcv_rho(deprcv) ;
double EXZ(depsrc, deprcv, north, east) ;
double EXR(depsrc, deprcv, north, east) ;
double VFZ(depsrc, deprcv, north, east) ;
double VFR(depsrc, deprcv, north, east) ;
double HFZ(depsrc, deprcv, north, east) ;
double HFR(depsrc, deprcv, north, east) ;
double HFT(depsrc, deprcv, north, east) ;
double DDZ(depsrc, deprcv, north, east) ;
double DDR(depsrc, deprcv, north, east) ;
double DSZ(depsrc, deprcv, north, east) ;
double DSR(depsrc, deprcv, north, east) ;
double DST(depsrc, deprcv, north, east) ;
double SSZ(depsrc, deprcv, north, east) ;
double SSR(depsrc, deprcv, north, east) ;
double SST(depsrc, deprcv, north, east) ;
// global attributes:
:calc_upar = 0 ;
}
import numpy as np
import pygrt
pymod = pygrt.PyModel1D(stgrn="stgrn.nc", modelpath="milrow")
pymod.static_greenfn(depsrc=2.0, deprcv=0.0, dists=np.arange(0.0, 10.0 + 1e-8, 0.1))
结果写入构造 PyModel1D 时 stgrn= 指定的 NetCDF 文件。需要读回时调用
pygrt.io.read_nc_variables(),返回 {变量名: 数组} 字典。
如需完整的维度与属性信息,可使用 pygrt.io.read_nc()。