eigenfn
- 简介:
基于面波频散结果,计算面波本征函数、能量积分、群速度、敏感核
语法
grt eigenfn -Cpath [ -Ff1[/f2][/df][+p] ] [ -N[n1][/n2][/dn] ] [ -Wpath[+zz1[/z2/dz]] ] [ -Upath ] [ -K[+cpath][+upath][+xpath][+zdz] ] [ -h ]
描述
基于 eigenv 模块计算的相速度频散结果, 以及其结果文件中保存的模型路径, eigenfn 模块可计算出多个物理量,各个量之间的依赖关系为
flowchart LR
V(["Phase-Velocity Dispersion<br/> (Eigenvalues)"])
F(["Eigenfunctions"])
E(["Energy Integrals"])
G(["Group-Velocity Dispersion"])
K(["Phase/Group-Velocity Sensitivity"])
V --> F
F --> E
E --> G
E --> K
classDef cmdcls fill:#f9f2d9,stroke:#e8d174,stroke-width:2px,color:#333;
class V cmdcls
各个量的结果均以 NetCDF 网格格式保存,涉及的选项如下,其中公式符号的定义详见 姚振兴和谢小碧 (2026) :
本征函数(Eigenfunctions): -W
ncdump -h命令查看本征函数结果,输出类似于:netcdf egn_R { dimensions: freq = 1 ; mode = 11 ; z = 61 ; w = 8 ; variables: double freq(freq) ; int mode(mode) ; double z(z) ; int cnum(freq) ; double c(freq, mode) ; c:_FillValue = 0. ; double eigfn(freq, mode, z, w) ; eigfn:_FillValue = 0. ; // global attributes: :isRayl = 1 ; }
维度(dimensions)
freq- 频率点数mode- 阶数点数z- 深度点数w- 本征函数个数 [1]
变量(variables)
freq- 频率数组 (Hz)mode- 阶数数组z- 深度数组 (km)cnum- 不同频率下的相速度点数c- 不同频率不同阶的相速度 (km/s)eigfn- 不同频率不同阶不同深度的本征函数
全局属性(global attributes)
isRayl- 是否为Rayleigh波结果
群速度频散(Group-Velocity Dispersion): -U
ncdump -h命令查看群速度频散结果,输出类似于:netcdf group_R { dimensions: freq = 1000 ; mode = 49 ; variables: double freq(freq) ; int mode(mode) ; int cnum(freq) ; double c(freq, mode) ; c:_FillValue = 0. ; double u(freq, mode) ; u:_FillValue = 0. ; // global attributes: :isRayl = 1 ; }
维度(dimensions)
freq- 频率点数mode- 阶数点数
变量(variables)
freq- 频率数组 (Hz)mode- 阶数数组cnum- 不同频率下的相速度点数c- 不同频率不同阶的相速度 (km/s)u- 不同频率不同阶的群速度 (km/s)
全局属性(global attributes)
isRayl- 是否为Rayleigh波结果
能量积分(Energy Integrals):-K+x
ncdump -h命令查看能量积分结果,输出类似于:netcdf egy_R { dimensions: freq = 500 ; mode = 1 ; e = 10 ; variables: double freq(freq) ; int mode(mode) ; int cnum(freq) ; double c(freq, mode) ; c:_FillValue = 0. ; double egyint(freq, mode, e) ; egyint:_FillValue = 0. ; // global attributes: :isRayl = 1 ; }
维度(dimensions)
freq- 频率点数mode- 阶数点数e- 能量积分个数 [2]
变量(variables)
freq- 频率数组 (Hz)mode- 阶数数组cnum- 不同频率下的相速度点数c- 不同频率不同阶的相速度 (km/s)egyint- 能量积分结果
全局属性(global attributes)
isRayl- 是否为Rayleigh波结果
[2] 能量积分结果始终为 10 个,分别对应 \(\text{Re}[I_1],\text{Im}[I_1],\text{Re}[I_2],\text{Im}[I_2],\text{Re}[I_3],\text{Im}[I_3],\text{Re}[I_4],\text{Im}[I_4],\text{Re}[\varepsilon],\text{Im}[\varepsilon]\), 其中 \(\varepsilon = \omega^2 I_1 - k^2 I_2 + k I_3 - I_4\) 为能量积分的验证项,应极接近 0。对于 Love 波, \(I_3\) 为 0 。
相/群速度敏感核(Phase/Group-velocity Sensitivity): -K+c , -K+u
ncdump -h命令查看相/群速度敏感核结果,输出类似于:netcdf csens_R { dimensions: freq = 500 ; mode = 1 ; z = 31 ; k = 3 ; variables: double freq(freq) ; int mode(mode) ; double z(z) ; int cnum(freq) ; double c(freq, mode) ; c:_FillValue = 0. ; double csens(freq, mode, z, k) ; csens:_FillValue = 0. ; // global attributes: :isRayl = 1 ; }
维度(dimensions)
freq- 频率点数mode- 阶数点数z- 深度点数k- 敏感核个数 [3]
变量(variables)
freq- 频率数组 (Hz)mode- 阶数数组z- 深度数组 (km)cnum- 不同频率下的相速度点数
对于相速度敏感核,变量包括:
c- 不同频率不同阶的相速度 (km/s)csens- 不同频率不同阶不同深度的相速度敏感核
对于群速度敏感核,变量包括:
u- 不同频率不同阶的群速度 (km/s)usens- 不同频率不同阶不同深度的群速度敏感核
全局属性(global attributes)
isRayl- 是否为Rayleigh波结果
[3] 敏感核个数始终为3个,分别对应相/群速度对于 \(\alpha,\beta,\rho\) 的无量纲化偏导; 对于 Love 波结果,相/群速度对于 \(\alpha\) 的偏导为 0 。
必选选项
- -Cpath
eigenv 模块计算的相速度频散结果保存文件路径。
可选选项
- -Ff1[/f2][/df][+p]
从频散结果中挑选特定频率进行处理(默认全部),有以下几种用法:
-Ff1 - 单点频率 f1 ,单位 Hz
-Ff1/f2 - 选择频率范围 [f1, f2] ,单位 Hz
-Ff1/f2/df - 从频率 f1 到 f2 ,间距 df 的一系列等距频率,单位 Hz
在以上用法后加上 +p ,则 f1,f2,df 均变为周期,单位 secs。 例如 -F0/10/2+p 表示计算周期 2s, 4s, 6s, 8s, 10s 处的频散。
注: 在使用 f1/f2/df 定义等距频率点时,为了方便,用户可以设置 f1=0, 此时程序会自动跳到下一个频率点 (df)。
- -N[n1][/n2][/dn]
从频散结果中挑选特定阶数进行处理(默认仅基阶),0 对应基阶,有以下几种用法:
-N - 所有阶
-Nn1 - 仅阶数 n1
-Nn1/n2 - 选择阶数范围 [n1, n2]
-Nn1/n2/dn - 从阶数 n1 到 n2 ,间距 dn 的一系列等距阶数
- -Wpath[+zz1[/z2/dz]]
计算不同深度上的本征函数,以 NetCDF 格式输出到路径 path 。 关于 +z,有以下几种用法:
如果不指定 +z,则计算模型界面深度上的本征函数;
+zz1 - 单点深度 z1 ,单位 km
+zz1/z2/dz - 从深度 z1 到 z2 ,间距 dz 的一系列等距深度,单位 km
- -Upath
计算相速度频散对应的群速度频散,以 NetCDF 格式输出到路径 path 。
- -K[+cpath][+upath][+xpath][+zdz]
计算能量积分和相/群速度敏感核,以 NetCDF 格式输出到路径 path 。
+cpath - 输出相速度敏感核(无量纲化) \(\dfrac{\alpha}{c}\dfrac{\partial c}{\partial \alpha}, \dfrac{\beta}{c}\dfrac{\partial c}{\partial \beta}, \dfrac{\rho}{c}\dfrac{\partial c}{\partial \rho}\)
+upath - 输出群速度敏感核(无量纲化) \(\dfrac{\alpha}{U}\dfrac{\partial U}{\partial \alpha}, \dfrac{\beta}{U}\dfrac{\partial U}{\partial \beta}, \dfrac{\rho}{U}\dfrac{\partial U}{\partial \rho}\)
+xpath - 输出能量积分 \(I_1,I_2,I_3,I_4\) 以及验证项 \(\omega^2 I_1 - k^2 I_2 + k I_3 - I_4\)
+zdz - 计算能量积分和相/群速度敏感核时使用的深度间隔(km), 这相当于将层状模型进行阶梯式插值后再进行计算 [默认直接基于模型各层厚度]。
- -h
打印帮助文档。