计算均匀介质中的走时场
[1]:
import pyfmm
import numpy as np
import matplotlib.pyplot as plt
[2]:
xarr = np.arange(0, 100, 0.08)
yarr = np.arange(0, 50, 0.05)
zarr = np.array([0.0]) # 二维情况
# 慢度场
slw = np.ones((len(xarr), len(yarr), len(zarr)), dtype='f')
srcloc = [10, 20, 0.0]
# FMM解
TT = pyfmm.travel_time_source(
srcloc,
xarr, yarr, zarr, slw)
# 真实解
xx, yy, zz = srcloc
real_TT = np.sqrt(((xarr-xx)**2)[:,None,None] + ((yarr-yy)**2)[None,:,None] + ((zarr-zz)**2)[None,None,:])
[3]:
fig, ax = plt.subplots(1, 1)
cs = ax.contour(xarr, yarr, TT[:, :, 0].T, levels=30, linewidths=0.5)
_ = ax.contour(xarr, yarr, real_TT[:, :, 0].T, levels=30, linewidths=0.5, colors='k', linestyles='--')
ax.clabel(cs)
ax.set_aspect('equal')