Note
Go to the end to download the full example code.
Hunziker et al., 2015, Geophysics#
Reproducing Figure 3 of the manual from EMmod. This example does, as such,
not actually reproduce a figure of Hunziker et al., 2015, but of the manual
that comes with the software accompanying the paper. With the software comes an
example input file named simplemod.scr, and the corresponding result is
shown in the manual of the code in Figure 3.
If you are interested in reproducing the figures of the actual paper, have a look at the notebooks in the repo article-geo2017.
Reference
Hunziker, J., J. Thorbecke, and E. Slob, 2015, The electromagnetic response in a layered vertical transverse isotropic medium: A new look at an old problem: Geophysics, 80(1), F1–F18; DOI: 10.1190/geo2013-0411.1; Software: wiki.seg.org/wiki/Software:emmod.
import empymod
import numpy as np
import matplotlib.pyplot as plt
Compute the data#
Compute the electric field with the parameters defined in simplemod.scr.
# x- and y-offsets
x = np.arange(4000)*7 - 1999.5*7
y = np.arange(1500)*10 - 749.5*10
# Create 2D arrays of them
rx = np.tile(x[:, None], y.size).T
ry = np.tile(y[:, None], x.size)
# Compute the electric field
efield = empymod.dipole(
src=[0, 0, -150],
rec=[rx.ravel(), ry.ravel(), -200],
depth=[0, -200, -1000, -1200],
res=[2e14, 1/3, 1, 50, 1],
aniso=[1, 1, np.sqrt(10), 1, 1],
freqtime=0.5,
epermH=[1, 80, 17, 2.1, 17],
epermV=[1, 80, 17, 2.1, 17],
mpermH=[1, 1, 1, 1, 1],
mpermV=[1, 1, 1, 1, 1],
ab=11,
htarg={'pts_per_dec': -1},
).reshape(rx.shape)
:: empymod END; runtime = 0:00:01.532950 :: 1 kernel call(s)
Plot#
# Create a similar colormap as Hunziker et al., 2015.
cmap = plt.get_cmap("jet", 61)
fig, (ax1, ax2) = plt.subplots(
2, 1, figsize=(8, 7), sharex=True, constrained_layout=True)
# 1. Amplitude
ax1.set_title('Amplitude (V/m)')
cf1 = ax1.pcolormesh(
x/1e3, y/1e3, np.log10(efield.amp()),
cmap=cmap, vmin=-16, vmax=-7, shading='nearest',
)
plt.colorbar(cf1, ticks=np.array([-16, -14, -12, -10, -8]))
# 2. Phase
ax2.set_title('Phase (°)')
ax2.set_xlabel('Offset (km)')
cf2 = ax2.pcolormesh(
x/1e3, y/1e3, efield.pha(deg=False, unwrap=False, lag=True),
cmap=cmap, vmin=-np.pi, vmax=np.pi, shading='nearest',
)
plt.colorbar(cf2, ticks=np.array([-2, 0, 2]))
for ax in [ax1, ax2]:
ax.axis('equal')
ax.set_ylim([y.max(), y.min()])
ax.set_yticks([5, 0, -5])
ax.set_ylabel('Offset (km)')

Original Figure#
Figure 3 of the manual of EMmod.
empymod.Report()
Total running time of the script: (0 minutes 6.080 seconds)
Estimated memory usage: 926 MB