计算面波格林函数
根据留数定理,本征值处对波数积分的贡献可以解析地表达。将多个本征值得到的贡献叠加起来就得到面波格林函数, 这个方法也被称为 模态叠加法(Modal Summation Method) 。 姚振兴和谢小碧 (2026) 给出了推导过程和具体公式,这里不再重复。
C 模块为 modsum (Python函数将于后续版本增加), 计算将基于 eigenv 模块的频散结果以及模型路径。 modsum 模块保存的波形格式与 greenfn 模块一致。
示例程序
假设在 milrow 模型中,震源深度 2 km,接收点位于地表,震中距为 100 km,
对比位错源的全波解和不同阶面波解的波形。
其中面波波形的时域长度和间隔通过 eigenv 模块中频域的设置间接确定,
即 T = 1 / df , dt = 1 / (2*fmax) 。
M="milrow"
D="2/0"
R="100"
n="5"
# Calculate Full-wave
grt greenfn -M$M -D$D -R$R -N200/0.5+n$n -OGRN -e
# Calculate Surface-wave
grt eigenv -M$M -F0/1/0.01 -SR -N -Cphase_R.nc
grt eigenv -M$M -F0/1/0.01 -SL -N -Cphase_L.nc
# 0th order
grt modsum -Cphase_R.nc -D$D -R$R -N0 -OGRN_NM_0 -W$n -e
grt modsum -Cphase_L.nc -D$D -R$R -N0 -OGRN_NM_0 -W$n -e
# 1st order
grt modsum -Cphase_R.nc -D$D -R$R -N1 -OGRN_NM_1 -W$n -e
grt modsum -Cphase_L.nc -D$D -R$R -N1 -OGRN_NM_1 -W$n -e
# 2nd order
grt modsum -Cphase_R.nc -D$D -R$R -N2 -OGRN_NM_2 -W$n -e
grt modsum -Cphase_L.nc -D$D -R$R -N2 -OGRN_NM_2 -W$n -e
# all
grt modsum -Cphase_R.nc -D$D -R$R -N -OGRN_NM_all -W$n -e
grt modsum -Cphase_L.nc -D$D -R$R -N -OGRN_NM_all -W$n -e
compare_wave.py (虚线为全波解,实线为面波解)
0 阶面波
1 阶面波
2 阶面波
所有阶面波