static_greenfn
- 简介:
使用广义反射透射系数矩阵法 + 离散波数法计算静态格林函数
语法
grt static greenfn -Mmodel -Ddepsrc/deprcv -Xx1/x2/dx -Yy1/y2/dy -Ooutdir [ -Largs ] [ -K[+kk0][+ekeps][+vvmin] ] [ -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
输出网格文件,若同名文件已存在,则销毁后新建。
可选选项
- -Largs
控制波数积分步长 \(\Delta k =\frac{2\pi}{\textit{<length>}\cdot R_{\text{max}}}\) 。 其中 \(R_{\text{max}}\) 为多个震中距的最大值。 具体设置有以下几种情况:
若不使用 -L ,则积分步长中的 length 参数自动确定,其准则详见 Bouchon (1981) 或代码源文件 。
-Llength ,手动设置 length ,例如 -L20 。
-Lllength/Flength/Fcut ,手动设置三个参数, 例如 -Ll20/10/10 。 此时原本波数积分区间 \([0, k_{\text{max}}]\) 被划分为两段, \([0, k^*]\) 和 \([k^*, k_{\text{max}}]\) , 其中 \(k^*=\frac{\textit{<Fcut>}}{R_{\text{max}}}\) 。 前段仍使用离散波数法求解积分,步长由 length 控制, 后段则使用 固定间隔的Filon积分法 , 对应步长由 Flength 控制 (仍为上述 \(\Delta k\) 公式)。
-Lalength/Ftol/Fcut ,手动设置三个参数,例如 -La20/1e-3/0 。 与上个情况类似,但后段使用 自适应Filon积分法 。 这在大震中距情况下能显著减少计算时间。
备注
固定间隔和自适应 Filon 积分不计算近场项,即 计算动态格林函数 中介绍的 \(p=1\) 对应的积分项。
- -K[+kk0][+ekeps][+vvmin]
控制波数积分上限 \(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) 和 控制波数积分 。
+vvmin - 参考最小速度,默认 \(\max{(\min\limits_{i} (\alpha_i \cup \beta_i), 0.1)}\) 。
只要设置了 vmin ,不论正负, 是否启用快速收敛算法不再受 \(\Delta h\) 控制 (见 -D ), 相当于改为由 +vvmin 手动控制。
当 vmin 为负数时,使用快速收敛算法(这个用法更多是用于 debug 测试)。
- -S
输出波数积分过程中的核函数文件,保存目录为
stgrtstats。 关于文件格式及其读取详见 积分收敛性 。
- -e
在计算格林函数的同时,也计算其空间导数 \(\dfrac{\partial (u_z, u_r, u_\theta)}{\partial (z, r)}\) 。 偏导对应在文件名/变量名开头添加了
z和r。 关于 \(\theta\) 的偏导与方向因子有关,这将由 syn 和 static_syn 模块计算。不同震源的格林函数空间导数单位为:
爆炸源: \(10^{-25} \, /\text{dyne} \cdot \text{cm}\)
单力源: \(10^{-20} \, /\text{dyne}\)
剪切源: \(10^{-25} \, /\text{dyne} \cdot \text{cm}\)
- -h
打印帮助文档。
示例
详见教程: