构建静态格林函数库与应用有限断层
本页文档示例下载
stlib.tar.gz |
解压后进入示例目录,运行 bash run.sh 即可复现本页示例。
静态格林函数库同样可以反复用于不同震源机制和接收位置的合成, 所有采样结果保存在一个 NetCDF 文件中。
构建静态格林函数库
本节先考虑台站位于地表的情况,接收深度固定为 0 km, 因此只在 震源深度 和 震中距 两个维度上采样。
使用同一模型,计算所选震源深度和震中距采样的全部组合。 库的范围须覆盖所有子源的深度,以及各子源到地表接收点的实际震中距; 采样间隔应足够小,以保证插值精度。
本例计算震源深度 2~6 km、震中距 0~36 km 的所有组合, 同时计算位移空间导数,供后续计算应力等物理量。
使用 static_greenfn 模块一次建库,-Dr0 固定地表接收点, -Ds/-R 指定震源深度和震中距采样, -e 同时计算空间导数。
# 接收点位于地表,-e 增加位移空间偏导数
grt static greenfn -Mmod3 -Ds2/6/1 -Dr0 -R0/36/2 -Ostgrn.nc -e
调用 static_greenfn()
一次计算全部深度和距离组合。
pymod = pygrt.PyModel1D(stgrn="stgrn.nc", modelpath="mod3")
pymod.static_greenfn(
depsrc=np.arange(2, 6+1e-8, 1), deprcv=0.0, dists=np.arange(0, 36+1e-8, 2), calc_upar=True
)
结果保存为 stgrn.nc,包含多震源深度和一维震中距采样,接收深度固定为 0 km。
静态合成自动按震源深度和源台震中距进行线性插值。
目标值不必与采样节点重合,但不能超出库的范围。
应用有限断层震源
使用有限断层震源时,输出只能采用 ZNE 坐标系。
有限震源由 sCoulomb 格式的断层文件描述,合成时叠加各子断层中心点源的结果。 静态解只取决于最终滑动量,不需要破裂时间函数和延迟。本例使用以下断层:
# X-start Y-start X-fin Y-fin Kode rt.lat reverse dip top bot
--- -------- -------- -------- -------- ---- -------- -------- -------- -------- --------
1 -4.000 0.000 4.000 0.000 100 2.000 0.000 60.000 2.000 5.464
震源断层的水平投影和三维展布
本例沿走向、倾向均按 1 km 剖分,在地表网格上计算 ZNE 位移及空间导数。
static_syn 模块的 -C 指定有限震源,+i 设置剖分尺寸。 -X/-Y 分别指定北向、东向接收网格。
# 使用有限震源,地表二维网格输出 ZNE 位移及偏导数
grt static syn -Gstgrn.nc -Cfault.inp+i1/1 -Dr0 -N -X-20/20/1 -Y-20/20/1 -Ostsyn_ff.nc -e
通过 static_syn() 的 src_fault
读取有限震源。
pymod.static_syn(
norths=(-20, 20, 1), easts=(-20, 20, 1), deprcv=0.0,
src_fault="fault.inp", src_fault_size=[1, 1], output_path="stsyn_ff.nc", zne=True, calc_upar=True
)
结果保存到 stsyn_ff.nc。应力、投影及库伦应力的计算与点源相同,
这里同样取等效摩擦系数 0.4,流程见 计算静态应变、旋转、应力张量。
依次使用 static_stress 模块、static_sproj 模块和 static_coulomb 模块。
grt static stress -Gstsyn_ff.nc
grt static sproj -Gstsyn_ff.nc -M90/60/0
grt static coulomb -Gstsyn_ff.nc -F0.4
依次调用 static_stress()、
static_sproj() 和
static_coulomb()。
pygrt.tensor.static_stress("stsyn_ff.nc")
pygrt.tensor.static_sproj("stsyn_ff.nc", strike=90, dip=60, rake=0)
pygrt.tensor.static_coulomb("stsyn_ff.nc", friction=0.4)
颜色表示垂直位移 Z,箭头表示水平位移 E、N,黑线表示震源断层顶边
依次为剪应力、法向应力和库伦应力变化
应用有限断层接收
static_syn 模块和 static_syn()
也支持传入有限接收断层,本质上是批量定义多个接收点。
可以在整条断层中心接收,也可剖分后在各子断层中心接收。
上述格林函数库的接收深度固定为 0 km。若接收断层包含地下接收点, 就必须在“接收点深度”维度上扩增格林函数库,覆盖所有接收点的深度, 形成震源深度、接收深度和震中距三个维度的采样组合。 同时仍需确保各子源到接收点的实际震中距位于库的范围内。
接收断层与震源断层使用相同的 sCoulomb 文件格式,但仅支持 Kode=100。 滑动量不参与位移计算,行末的震源时间函数和延迟会被忽略。 几何和滑动角随结果保存,供后续应力投影使用; 若滑动角未定义,须在投影阶段补充,也可用 rake 格式预先给定。
同一次合成也可同时使用有限震源和有限接收断层,后处理方式与点源相同。