-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
测试脚本和绘图脚本如下。
测试脚本强制未使用收敛算法。从振幅来看,两个模型计算出来的假信号大小基本一致。如果使用了收敛算法,假信号会小很多,但在强衰减模型中依然很明显。从核函数分析来看,这是由于强衰减导致震相到时附近的振幅下降导致积分慢收敛造成的信号尾段假象更显著。因此对于强衰减模型需要更高的积分上限来“压制”假信号。
#!/bin/bash
# 不使用任何收敛算法,仅做测试
rm halfspace* -rf
cat > mod0 <<EOF
1.0 0.7 0.3 1.3 80 20
EOF
grt greenfn -Mmod0 -N2000/0.001 -D0/0 -Ohalfspace1 -R0.2 -Gh -Cn -S
sac <<EOF
r halfspace1/*/*;
p1
saveimg test1.pdf
q
EOF
pdf2svg test1.pdf test1.svg
# 如果没有衰减,震相到时处的高振幅会压制尾部的伪影,所以看似是平的
cat > mod0 <<EOF
1.0 0.7 0.3 1.3
EOF
grt greenfn -Mmod0 -N2000/0.001 -D0/0 -Ohalfspace2 -R0.2 -Gh -Cn -S
sac <<EOF
r halfspace2/*/*;
p1
saveimg test2.pdf
q
EOF
pdf2svg test2.pdf test2.svg
import matplotlib.pyplot as plt
import numpy as np
import pygrt
statsdata1 = pygrt.utils.read_statsfile("./halfspace1_grtstats/mod0_0_0/K_0866_*")
statsdata2 = pygrt.utils.read_statsfile("./halfspace2_grtstats/mod0_0_0/K_0866_*")
def plot1(ax, statsdata):
karr = statsdata['k']
data = statsdata['VF_q']
ax.plot(karr, np.real(data))
ax.grid()
ax.set_xmargin(0)
ax.set_xlim(xmin=0)
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 4), sharex=True, gridspec_kw=dict(hspace=0))
plot1(ax1, statsdata1)
ax1.text(0.01, 0.9, "With attenuation", transform=ax1.transAxes, ha='left', va='top', bbox=dict(fc='w'))
plot1(ax2, statsdata2)
ax2.text(0.01, 0.9, "No attenuation", transform=ax2.transAxes, ha='left', va='top', bbox=dict(fc='w'))
ax2.set_xlabel("Wavenumber")
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels