合成静态位移
本页文档示例下载
static_syn.tar.gz |
解压后进入示例目录,运行 bash run.sh 即可复现本页示例。
Python 中合成静态位移的主函数为 static_syn(),
命令行中使用 static_syn 模块。
使用上节计算的格林函数,我们可以指定 点源的震源机制 以及 接收点位置 来合成静态位移。
为方便画图,以下结果都使用ZNE分量。
目标震源深度、接收深度和源台震中距须在库的范围内,
无需与采样节点重合,静态合成会自动进行线性插值。
若仅使用已算好的静态格林函数,构造 PyModel1D 时只需指定 stgrn,无需再传 modelpath:
# 若仅使用已算好的静态格林函数做合成,构造时只需指定 stgrn,无需 modelpath
pymod = pygrt.PyModel1D(stgrn="stgrn.nc")
指定二维接收网格
我们可以通过设置北向坐标和东向坐标来定义一个二维的水平网格点,然后计算这些规则网格点上的静态位移。
# 爆炸源
grt static syn -Gstgrn.nc -S1e24 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_ex.nc -N
# 单力源
grt static syn -Gstgrn.nc -S1e16 -F1/-0.5/2 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_sf.nc -N
# 剪切源
grt static syn -Gstgrn.nc -S1e24 -M33/50/120 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_dc.nc -N
# 剪切源
grt static syn -Gstgrn.nc -S1e24 -M33/90/0 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_dc2.nc -N
# 张裂源
grt static syn -Gstgrn.nc -S1e24 -M33/50 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_ts.nc -N
# 张裂源
grt static syn -Gstgrn.nc -S1e24 -M33/90 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_ts2.nc -N
# 矩张量源
grt static syn -Gstgrn.nc -S1e24 -T0.1/-0.2/1.0/0.3/-0.5/-2.0 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_mt.nc -N
# 矩张量源
grt static syn -Gstgrn.nc -S1e24 -T0/-0.2/0/0/0/0 -X-3/3/0.15 -Y-2.5/2.5/0.15 -Ostsyn_mt2.nc -N
通过 static_syn 模块的 -X/-Y 指定二维接收网格。
norths = [-3.0, 3.0, 0.15]
easts = [-2.5, 2.5, 0.15]
# 爆炸源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, output_path="stsyn_ex.nc", zne=True
)
# 单力源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e16, force=(1, -0.5, 2), output_path="stsyn_sf.nc", zne=True
)
# 剪切源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, strike=33, dip=50, rake=120, output_path="stsyn_dc.nc", zne=True
)
# 剪切源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, strike=33, dip=90, rake=0, output_path="stsyn_dc2.nc", zne=True
)
# 张裂源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, strike=33, dip=50, output_path="stsyn_ts.nc", zne=True
)
# 张裂源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, strike=33, dip=90, output_path="stsyn_ts2.nc", zne=True
)
# 矩张量源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, moment_tensor=(0.1, -0.2, 1.0, 0.3, -0.5, -2.0), output_path="stsyn_mt.nc", zne=True,
)
# 矩张量源
pymod.static_syn(
norths=norths, easts=easts,
scale=1e24, moment_tensor=(0, -0.2, 0, 0, 0, 0), output_path="stsyn_mt2.nc", zne=True,
)
通过 static_syn() 的
norths/easts 指定二维接收网格。
黑色箭头表示水平位移,颜色表示垂直位移
指定任意点
我们也可以通过给定一个记录有任意点坐标的文件来计算这些点上的位移, 这个文件要求前三列分别为北向坐标、东向坐标以及深度,单位均为 km, 以 “#” 开头的行会被忽略。
下面只以一个走滑源 -M33/90/0 为例。 我们示意性的在震中水平面上取半径为 5 km 的圆环, 均匀生成 72 个接收点,然后计算各点的静态位移。 此时该文件内部大概看起来像这样:
# north east depth (km)
5.00000000 0.00000000 0.00000000
4.98097349 0.43577871 0.00000000
4.92403877 0.86824089 0.00000000
4.82962913 1.29409523 0.00000000
4.69846310 1.71010072 0.00000000
4.53153894 2.11309131 0.00000000
4.33012702 2.50000000 0.00000000
4.09576022 2.86788218 0.00000000
3.83022222 3.21393805 0.00000000
...
# 使用 -Q 来传入任意点坐标文件
grt static syn -Gstgrn.nc -S1e24 -M33/90/0 -Qrcv_pts.txt -Ostsyn_points.nc -N
# 设置 rcv_points 来传入任意点坐标文件
pymod.static_syn(
rcv_points="rcv_pts.txt",
scale=1e24, strike=33, dip=90, rake=0, output_path="stsyn_points.nc", zne=True,
)
实际研究中,点的分布不同(例如通常会要计算沿着某条断层线上的位移以及衍生的物理量), 合适的呈现形式也要进行修改。
黑色箭头表示水平位移,颜色表示垂直位移