✍️ 朱邓达  •  🗓️ 2026-05-20 (创建时间)

计算本征函数、群速度、频散敏感核

本征值对应的位移应力解被称为本征函数,再基于变分理论计算出能量积分后可计算出群速度和频散敏感核 (Aki and Richards, 2009; 姚振兴和谢小碧, 2026)。

C 模块为 eigenfn (Python函数将于后续版本增加), 计算将基于 eigenv 模块的频散结果以及模型路径。

以下示例基于 计算频散曲线 部分计算的相速度频散结果。

本征函数

计算频率 1 Hz 时不同阶的本征函数,深度范围 [0, 50] km,间隔 0.1 km :

# Calculate Rayleigh-wave eigenfunction
grt eigenfn -Cphase_R.nc -F1 -N -Wegn_R.nc+z0/50/0.1
# Calculate Love-wave eigenfunction
grt eigenfn -Cphase_L.nc -F1 -N -Wegn_L.nc+z0/50/0.1

plot_eigenfunction.py

../../_images/eigenfunction.svg

群速度

计算所有阶的相速度对应的群速度 :

# Calculate Rayleigh-wave group velocity
grt eigenfn -Cphase_R.nc -N -Ugroup_R.nc
# Calculate Love-wave group velocity
grt eigenfn -Cphase_L.nc -N -Ugroup_L.nc

计算频散曲线 中介绍的一致, disp2asc 模块也可将 NetCDF 格式的频散转为文本格式。 以下同样提供两种方式的简易绘图脚本。

plot_dispersion_group.py (基于 Matplotlib)

../../_images/dispersion_py_group.svg

plot_dispersion_group.sh (基于 GMT)

../../_images/dispersion_sh_group.svg

频散敏感核

计算不同频率下基阶频散曲线的相/群速度频散敏感核,深度间隔 0.2 km :

# Calculate Rayleigh-wave dispersion sensitivity
grt eigenfn -Cphase_R.nc -F0/0.5/0.1 -N0 -K+ccsens_R.nc+uusens_R.nc+z0.2
# Calculate Love-wave dispersion sensitivity
grt eigenfn -Cphase_L.nc -F0/0.5/0.1 -N0 -K+ccsens_L.nc+uusens_L.nc+z0.2

plot_sensitivity.py

  • 相速度频散敏感核

../../_images/csens_R.svg
../../_images/csens_L.svg
  • 群速度频散敏感核

../../_images/usens_R.svg
../../_images/usens_L.svg

备注

这里值得一提的是,根据群速度和相速度的关系,

\[U = \dfrac{c^2}{c - \omega \dfrac{\text{d} c}{\text{d} \omega}}\]

群速度敏感核表达式为(其中 \(X\) 表示 \(\alpha/\beta/\rho\) ),

\[\dfrac{\text{d} U}{\text{d} X} = \dfrac{U}{c} \left(2 - \dfrac{U}{c} \right) \dfrac{\text{d} c}{\text{d} X} + \omega \left( \dfrac{U}{c} \right)^2 \dfrac{\text{d}}{\text{d} \omega} \left(\dfrac{\text{d} c}{\text{d} X} \right)\]

其中可以看到计算群速度敏感核需要相速度敏感核在频率上的差分,因此无法完全解析地得到群速度敏感核。 若频率间隔不够小,群速度敏感核计算精度就会下降。