The Last Instability Before the Real Space Weather Experiment

Since my last update, I finally finished actually separating where the electromagnetic heating goes. The real Earth model can now distinguish ocean water from solid Earth, AND it can split the water by actual depth. For my original daily SWARM production test:

Total Joule power 1268.878 W

And the part that partitioned into actual abyssal ocean water was:,

4–6 km ocean water 139.263 W

So that part works. :) But, this is just one magnetic field mode at one frequency, and that’s not good enough. The real magnetic field changes on lots of different timescales, so now I’m building the response across frequency. The system we have to solve is:

A(ω) = K − iωMσ

This is where things broke down and became messy.

slow frequencies are brutal

The daily frequency case solves cleanly, but when I move toward the very slowest magnetic variations in the SWARM spectrum, the matrix becomes extremely sensitive numerically. The part causing the problem lives in the gradient component of the electric field. I can isolate that piece as:

S = GᴴMσG

The direct solve is already accurate basically down to machine precision.

Backward error ≈ 1.38 × 10⁻¹⁶

Yet, because the system is badly conditioned, those microscopic numerical errors get amplified. After fixing a matrix indexing bug and independently checking the calculation several different ways, the residual settles around:

Current true residual ≈ 3.40 × 10⁻⁹

My requirement is still:

Required residual ≤ 1 × 10⁻¹⁰

So… nope, still not passing. And, (but, very very close!!!!) I’m not changing the requirement just because the matrix is annoying me. 😂

what I’m testing now

One question keeps bothering me… is the solution itself only accurate to a few parts in a billion? Or is double precision arithmetic having trouble even measuring the residual because it’s subtracting very large, nearly cancelling numbers? So, before doing another expensive solve, I’m validating a completely independent way of reading the matrix row by row. That check has to agree with PETSc’s own matrix multiplication to:

Row-action agreement ≤ 1 × 10⁻¹²

If it passes, I can recompute the residual using higher precision arithmetic, and then we’ll know. If the higher precision residual drops below my gate, I’ve found a double precision measurement floor. If it stays around the same value, then double precision really isn’t enough for this part of the problem and I need a stronger numerical formulation.

Either way, I’m done randomly turning solver knobs and rebuilding endlessly.

the real experiment

Once this low frequency piece is qualified, I can finally run the full SWARM response instead of one test frequency. Then, the solver can reconstruct where electromagnetic energy goes as the real magnetic field changes over time: ocean vs. solid Earth, geographic location, and most importantly for us… actual abyssal ocean.

Next
Next

From Space Weather to the Abyssal Ocean: Where My EM Solver Is Now