In [ ]:
from geoscilabs.em.PlanewaveWidgetFD import PlanewaveWidget, PolarEllipse, InteractivePlaneProfile
from geoscilabs.em.DipoleWidgetFD import InteractiveDipoleProfile
from geoscilabs.em.VolumeWidgetPlane import InteractivePlanes, plotObj3D


# Purpose¶

We visualizae downward propagating planewave in the homogeneous earth medium. With the three apps: a) Plane wave app, b) Profile app, and c) Polarization ellipse app, we understand fundamental concepts of planewave propagation.

# Set up¶

Planewave EM equation can be written as

$$\frac{\partial^2 \mathbf{E}}{\partial z^2} + k^2 \mathbf{E} = 0,$$

For homogeneous earth, solution can be simply derived:

$$\mathbf{E} = \mathbf{E}_0 e^{ikz}$$$$\mathbf{H} = - i \omega \mu \nabla \times (\mathbf{E}_0 e^{ikz}).$$

where complex wavenumber $k$ is

$$k = \sqrt{\mu \epsilon \omega^2 - i \mu \sigma \omega}.$$

In time domain, the wave travelling in the negative z-direction has the form:

$$\mathbf{e} = \mathbf{e}_0^- e^{i(k z + \omega t)}.$$
In [ ]:
ax = plotObj3D()


# Planewave app¶

## Parameters:¶

• Field: Type of EM fields ("Ex": electric field, "Hy": magnetic field)
• AmpDir: Type of the vectoral EM fields

None: $F_x$ or $F_y$ or $F_z$

Amp: $\mathbf{F} \cdot \mathbf{F}^* = |\mathbf{F}|^2$

Dir: Real part of a vectoral EM fields, $\Re[\mathbf{F}]$

• ComplexNumber: Type of complex data ("Re", "Im", "Amp", "Phase")

• Frequency: Transmitting frequency (Hz)
• Sigma: Conductivity of homogeneous earth (S/m)
• Scale: Choose "log" or "linear" scale
• Time:
In [ ]:
dwidget = PlanewaveWidget()
dwidget.InteractivePlaneWave()


# Profile app¶

We visualize EM fields at vertical profile (marked as red dots in the above app).

## Parameters:¶

• Field: Ex, Hy, and Impedance
• $\sigma$ : Conductivity (S/m)
• Scale: Log10 or Linear scale
• Fixed: Fix the scale or not
• $f$: Frequency
• $t$: Time
In [ ]:
InteractivePlaneProfile()


# Polarization Ellipse app¶

In [ ]:
Polarwidget = PolarEllipse();
Polarwidget.Interactive()

In [ ]: