space::irbem::HotState
cheatah-space v0.1.0-alpha — Biome Standard 0.6.5-alpha
What the inner loop touches — the field call and the GEO<->GSM hop, on every one of the ~10^5 evaluations a single L* costs.
The first eight doubles are exactly one 64-byte cache line, and they are the ones a Tsyganenko external field call needs: the tilt with its precomputed trigonometry, and the five drivers the published models read (Kp for Mead & Fairfield 1975, Tsyganenko 1987/1989 and Mead-Tsyganenko; Dst, Pdyn, By and Bz for Tsyganenko 1996 onwards). The two matrices follow.
geo_to_gsm and gsm_to_geo duplicate what ColdState::to_geo already holds for GSM. That is deliberate: the duplicate keeps the inner loop off the cold block entirely and spares it a transpose per call. A test pins the two copies to each other so the duplicate cannot go stale.
Constants & variables
The geodipole tilt angle psi, radians — the angle between the dipole axis and the GSM z axis.
sin(tilt_rad), computed once per epoch so no field call computes it.
cos(tilt_rad), likewise.
Driver::Kp, copied out of the driver vector (OMNI2 scaling: Kp x 10).
Driver::Dst, nT.
Driver::Pdyn, nPa.
Driver::ByIMF, nT.
Driver::BzIMF, nT.
Takes GEO components to GSM.
Takes GSM components to GEO — the transpose of geo_to_gsm, since a rotation is orthogonal and construction has already checked that this one is.
