geoana.em.tdem.ElectricDipoleWholeSpace.magnetic_field_time_deriv#
- ElectricDipoleWholeSpace.magnetic_field_time_deriv(xyz)#
Time-derivative of the magnetic field for the transient current dipole at a set of gridded locations.
For an electric current dipole oriented in the \(\hat{u}\) direction with dipole moment \(I ds\), this method computes the time-derivative of the transient magnetic field at the set of observation times for the gridded xyz locations provided.
The analytic solution is adapted from Ward and Hohmann (1988). For a transient electric current dipole oriented in the \(\hat{x}\) direction, the solution at vector distance \(\mathbf{r}\) from the current dipole is:
\[\frac{\partial \mathbf{h}}{\partial t} = - \frac{2 \, \theta^5 Ids}{\pi^{3/2} \mu \sigma} e^{-\theta^2 r^2} \big ( - z \, \mathbf{\hat y} + y \, \mathbf{\hat z} \big )\]where
\[\theta = \Bigg ( \frac{\mu\sigma}{4t} \Bigg )^{1/2}\]- Parameters:
- xyz(…, 3) numpy.ndarray
Gridded xyz locations
- Returns:
- (n_time, …, 3) numpy.ndarray of float
Time-derivative of the transient magnetic field at all times for the gridded locations provided.
Examples
Here, we define a z-oriented electric dipole and plot the time-derivative of the magnetic field on the xy-plane that intercepts z=0.
>>> from geoana.em.tdem import ElectricDipoleWholeSpace >>> from geoana.utils import ndgrid >>> from geoana.plotting_utils import plot2Ddata >>> import numpy as np >>> import matplotlib.pyplot as plt
Let us begin by defining the electric current dipole.
>>> time = np.logspace(-6, -2, 3) >>> location = np.r_[0., 0., 0.] >>> orientation = np.r_[0., 0., 1.] >>> current = 1. >>> sigma = 1.0 >>> simulation = ElectricDipoleWholeSpace( >>> time, location=location, orientation=orientation, >>> current=current, sigma=sigma >>> )
Now we create a set of gridded locations and compute the dh/dt.
>>> xyz = ndgrid(np.linspace(-10, 10, 20), np.linspace(-10, 10, 20), np.array([0])) >>> dHdt = simulation.magnetic_field_time_deriv(xyz)
Finally, we plot dH/dt at the desired locations/times.
>>> t_ind = 0 >>> fig = plt.figure(figsize=(4, 4)) >>> ax = fig.add_axes([0.15, 0.15, 0.8, 0.8]) >>> plot2Ddata(xyz[:, 0:2], dHdt[t_ind, :, 0:2], ax=ax, vec=True, scale='log') >>> ax.set_xlabel('X') >>> ax.set_ylabel('Y') >>> ax.set_title('dH/dt at {} s'.format(time[t_ind]))
(
Source code
,png
,pdf
)