geopulse.efield.planewave

Plane-wave geoelectric field: E(ω) = Z(ω) · B(ω) / μ₀.

Delegates to Impedance.apply() so the caller does not know or care whether Z is scalar (1-D), tensor (2-D), or kernel (3-D). The IFFT back to the time domain is the caller’s responsibility.

Functions

compute_efield_planewave(freqs_Hz, Bx_f, ...)

Compute frequency-domain geoelectric field via the plane-wave relation.

geopulse.efield.planewave.compute_efield_planewave(freqs_Hz, Bx_f, By_f, impedance)[source]

Compute frequency-domain geoelectric field via the plane-wave relation.

For a 1-D scalar impedance this reduces to:

E_x(ω) =  Z(ω) / μ₀ · B_y(ω)
E_y(ω) = -Z(ω) / μ₀ · B_x(ω)
Parameters:
  • freqs_Hz (ndarray) – Frequency array in Hz. Shape (n_freqs,). Accepted for interface symmetry; the impedance already carries its own frequency grid.

  • Bx_f (ndarray) – FFT of the horizontal B-field components in Tesla. Shape (n_freqs,).

  • By_f (ndarray) – FFT of the horizontal B-field components in Tesla. Shape (n_freqs,).

  • impedance (Impedance) – Any Impedance subclass; the type is not inspected here.

Return type:

tuple[ndarray, ndarray]

Returns:

Ex_f, Ey_f (numpy.ndarray) – FFT of the horizontal E-field components in V/m. Shape matches the impedance subclass semantics ((n_freqs,) for scalar).

Notes

Standard magnetotelluric plane-wave relation; see Boteler (2014).