✍️ 朱邓达  •  📅 2025-09-22

static_greenfn

简介:

使用广义反射透射系数矩阵法 + 离散波数法计算静态格林函数

语法

grt static greenfn -Mmodel -Ddepsrc/deprcv -Xx1/x2/dx -Yy1/y2/dy -Ooutdir [ -Llength[+lFlength][+aFtol][+ooffset] ] [ -Cd|p|n ] [ -K[+kk0][+ekeps] ] [ -S ] [ -e ] [ -h ]

描述

static greenfn 模块将震源置于原点 (0,0) ,计算由 -X (北向)和 -Y (东向) 定义的 2D 网格点上的静态格林函数。与动态情况的 greenfn 模块指定 1D 的震中距数组不同, 这里使用 2D 网格可能会在某些特殊的对称情况下增加重复计算,但会方便其它模块的数据交互。 输出结果使用 NetCDF 网格保存,其中变量命名方法与 greenfn 模块一致。

必选选项

-Mmodel

半空间层状模型文件的路径。模型格式如下:

Thickness(km)    Vp(km/s)    Vs(km/s)   Rho(g/cm^3)   [Qp]   [Qs]

后两列的 Qp, Qs 可省略。

  • 如果首列首行的值为正数,则首列表示 每层厚度 (km) ,最后一层为半空间,其厚度设置为 0 即可(不会被使用)。

  • 如果首列首行的值为 0,则首列表示 每层层顶深度 (km)

  • 如果某层设置 Vs = 0,则该层为液体层。

-Ddepsrc/deprcv

震源深度 depsrc (km) 和台站深度 deprcv (km)。 如果是在使用波数积分法求解格林函数,则当二者深度差小于 1 km 时,自动使用快速收敛算法。

-Xx1/x2/dx

指定北向等距网格点。 x1,x2 分别为最小、最大值, dx 为间隔。

-Yy1/y2/dy

指定东向等距网格点。 y1,y2 分别为最小、最大值, dy 为间隔。

-Ooutgrid

输出网格文件,若同名文件已存在,则销毁后新建。

可选选项

-Llength[+lFlength][+aFtol][+ooffset]

控制波数积分间隔。默认使用传统的离散波数积分,自动确定 length , 准则详见 (Bouchon, 1981) 或代码源文件, 对应波数间隔 \(\Delta k =\frac{2\pi}{\textit{<length>}\cdot R_{\text{max}}}\) , 其中 \(R_{\text{max}}\) 为多个震中距的最大值。

支持以下子选项:

  • +lFlength - 使用 固定间隔的Filon积分法 ,间隔由 Flength 按相同公式给定。

  • +aFtol - 使用 自适应Filon积分法 , 收敛精度 Ftol 一般取 1e-2 即可。

  • +ooffset - 将积分区间 \([0, k_{\text{max}}]\) 划分为两段, \([0, k^*]\)\([k^*, k_{\text{max}}]\) , 其中 \(k^*=\frac{\text{<offset>}}{R_{\text{max}}}\) 前段仍使用离散波数法求解积分,间隔由 length 控制, 后段则使用以上用户设置的方法。默认 offset 为0。

例如:

  • -L20 - 手动设置离散波数积分间隔。

  • -L+a1e-2 - 在全区间 \([0, k_{\text{max}}]\) 使用自适应Filon积分。

  • -L20+a1e-2+o10 - 分两段计算积分。

备注

固定间隔和自适应 Filon 积分不计算近场项,即 计算动态格林函数 中介绍的 \(p=1\) 对应的积分项。

-K[+kk0][+ekeps]

控制波数积分上限 \(k_0 \cdot \dfrac{\pi}{\Delta h}\)

  • +kk0 - 控制零频的积分上限 [5.0],其中深度差 \(\Delta h = \max(|z_s - z_r|, 1.0)\)

  • +ekeps - 用于判断提前结束波数积分的收敛精度[0.0, 默认不使用],详见 Yao and Harkrider (1983) 和 控制波数积分上限

-Cd|p|n

设置波数积分收敛方法。默认当 \(|z_s - z_r| <= 1.0\) km 时,自动使用直接收敛法。 支持以下子选项:

-S

输出波数积分过程中的核函数文件,保存目录为 stgrtstats 。 关于文件格式及其读取详见 积分收敛性

注意:

  • 如果使用了波数积分收敛方法(-C),输出的核函数会有变动。 使用 -Cd 会保存改动后的核函数;使用 -Cp 会额外输出应用 PTAM 过程中的核函数和积分峰谷值。

  • 如果使用 -e 计算格林函数空间导数,则输出核函数对 z 的偏导。

-e

在计算格林函数的同时,也计算其空间导数 \(\dfrac{\partial (u_z, u_r, u_\theta)}{\partial (z, r)}\) 。 偏导对应在文件名/变量名开头添加了 zr 。 关于 \(\theta\) 的偏导与方向因子有关,这将由 synstatic_syn 模块计算。

不同震源的格林函数空间导数单位为:

  • 爆炸源: \(10^{-25} \, /\text{dyne} \cdot \text{cm}\)

  • 单力源: \(10^{-20} \, /\text{dyne}\)

  • 剪切源: \(10^{-25} \, /\text{dyne} \cdot \text{cm}\)

-h

打印帮助文档。

示例

详见教程: