geopulse.earth.layered_1d
1-D layered-Earth surface impedance via Wait (1954) recursion.
Given a horizontally layered half-space with N layers of conductivity
σ_n and thickness h_n (the terminating layer N has
h_N → ∞), the surface impedance seen from above at angular frequency
ω is computed by the bottom-up recursion:
γ_n = sqrt(i·ω·μ₀·σ_n)
η_n = i·ω·μ₀ / γ_n
Z_N = η_N
Z_n = η_n · (Z_{n+1} + η_n · tanh(γ_n · h_n))
/ (η_n + Z_{n+1} · tanh(γ_n · h_n)) for n = N-1 down to 1
Z_surface = Z_1
For a uniform half-space with only the terminating layer, the recursion
degenerates to the analytic Z(ω) = sqrt(i·ω·μ₀/σ); that identity is the
critical acceptance test for Phase 1.
References
Classes
|
Horizontally layered Earth model. |
- class geopulse.earth.layered_1d.Layered1D(layers)[source]
Bases:
EarthModelHorizontally layered Earth model.
- Parameters:
layers (
Sequence[ConductivityLayer]) – Top-down list of layers. The final entry must havethickness_m == numpy.inf(the terminating half-space).- Raises:
DataError – If
layersis empty, or the last layer is not the infinite half-space.
Examples
>>> import numpy as np >>> from geopulse.earth.base import ConductivityLayer >>> model = Layered1D([ConductivityLayer(np.inf, 0.01)]) >>> imp = model.compute_impedance(np.array([1e-3, 1e-2, 1e-1])) >>> imp.Z_values.shape (3,)
- compute_impedance(freqs_Hz)[source]
Compute the surface impedance via Wait recursion.
- Parameters:
freqs_Hz (
ndarray) – Frequencies in Hz. Shape(n_freqs,). Must be non-negative.ω = 0(DC) is handled specially: the surface impedance is defined to be zero because a static magnetic field induces no electric field for a finitely conducting Earth.- Return type:
- Returns:
ScalarImpedance – Surface impedance
Z(ω)in Ohms. Shape(n_freqs,).- Raises:
DataError – If any frequency is negative.