The 3D scene treats the whole corridor as one lumped two-terminal loop: GIC = E·L / (R_line + R_ground). Real grid operators instead use the Lehtinen–Pirjola network method: every substation along the corridor is its own node, independently grounded to remote earth, and current can inject at internal substations too — not just the two ends. This 2D companion implements that network directly.
First, Faraday's law is applied computationally rather than evaluated as a formula: a synthetic magnetometer trace B(t) is built by integrating a driving dB/dt signal frame-by-frame, then the electric field driver is recovered by numerically differentiating the B(t) record — exactly how a real magnetometer feed is processed — instead of reading the derivative straight off an equation.
B(t) ← B(t−dt) + (dB/dt)·dt (Euler-integrated magnetometer)
dB/dt ← ΔB / Δt (recovered by finite difference)
E_seg = k·√(ρ_seg/100) · dB/dt (V/km, per segment — ρ can vary along the line)
emf_seg = E_seg · d_seg
KCL at node i: Σⱼ (Vᵢ−Vⱼ+emf_ij)/R_seg + Vᵢ/R_g = 0 for every neighbour j
(solved for all V simultaneously, Gaussian elimination)
GIC_i = Vᵢ / R_g
Solving the full linear system (rather than one Ohm's-law division) exposes something the lumped model can't: current conservation. Because every internal branch term cancels when you sum all the KCL rows, the sum of GIC across every substation must equal exactly zero — whatever flows to ground at one transformer returns through the earth at another. The "Σ GIC" readout verifies this live, to numerical precision, on every recompute; a standalone Node script verifies the same identity plus a reduction check (this network solver collapses to the 3D scene's closed-form two-terminal formula in the special case of exactly two nodes).
- Substations — more nodes subdivide the corridor into more segments, each independently driven by the local ground geology; watch how peak GIC shifts to whichever internal node sits over the most conductive basin segment, not just the ends.
- Segment geology (click to toggle) — resistive igneous rock forces a larger apparent geoelectric field than a conductive sedimentary basin for the same dB/dt, exactly as in the 3D scene, but now it can vary segment-by-segment along one corridor.
- Storm intensity / Trigger CME — same driving signal shape as the 3D scene (background turbulence plus a sudden-commencement pulse with exponential decay), but recoded independently and only ever consumed here after the integrate → differentiate round-trip.