Skip to content

strong attenuation may aggravate the slow convergence issue #215

@Dengda98

Description

@Dengda98

测试脚本和绘图脚本如下。

测试脚本强制未使用收敛算法。从振幅来看,两个模型计算出来的假信号大小基本一致。如果使用了收敛算法,假信号会小很多,但在强衰减模型中依然很明显。从核函数分析来看,这是由于强衰减导致震相到时附近的振幅下降导致积分慢收敛造成的信号尾段假象更显著。因此对于强衰减模型需要更高的积分上限来“压制”假信号。

#!/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

Image 2 Image 2

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")
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions