计算均匀介质中的走时场

[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')
../_images/examples_01_uniform_3_0.png