space::irbem::TotalFieldT89
cheatah-space v0.1.0-alpha — Biome Standard 0.6.5-alpha
IGRF plus Tsyganenko 1989, as a single field.
Satisfies GeoFieldModel, so it drops into trace_invariant and everything above it.
NMAX | the internal field's truncation degree. 10 reproduces IRBEM's own choice, which is what the differential tests run through; 13 is IGRF-14's full published degree. |
Functions
constexpr TotalFieldT89(const Igrf< NMAX > &internal, const Rotations &rotations, double kp_times_ten)
#
internal | the internal field, already built for the epoch. |
rotations | the epoch's frame rotations — built once, reused for every point. |
kp_times_ten | Kp in IRBEM's slot-1 scaling (Kp x 10, nominally 0..90). T89 is Kp-BINNED, not a continuous function of Kp: seven coefficient sets, so values inside one bin give identical fields by construction rather than by approximation. |
The total field at a geographic point.
p | the position, GEO, Earth radii. |
B_internal + B_external, in GEO, nT. When the external model refuses the point — outside its published validity envelope, or a non-finite input — the INTERNAL field is returned alone rather than a zero or a NaN: the internal field is still the best available answer there, and a trace that hit a NaN would fail hundreds of steps later with no indication of where. Callers who need to know whether the external model contributed ask external_status for the point.
One IGRF evaluation, one T89 evaluation, two 3x3 rotations.
none.
IrbemTotalField.SuperposesInternalAndExternalWhether the external model answered at p, and if not, why.
p | the position, GEO, Earth radii. |
the external model's status; Status::Ok when it contributed.
One T89 evaluation and one rotation.
none.
IrbemTotalField.ReportsWhenTheExternalModelDeclinesThe activity level this field was built for, in IRBEM's Kp x 10 scaling.
the value passed to the constructor.
O(1).
none.
IrbemTotalField.SuperposesInternalAndExternalThe epoch's frame rotations — what the device staging and any caller mapping frames needs.
the rotations this field was built with.
O(1).
none.
IrbemTotalField.SuperposesInternalAndExternalThe internal part's Gauss coefficient g(n, m), in nT.
A superposition has no spherical-harmonic expansion of its own — the external field is not current-free, so no scalar potential exists to expand. What a caller asking g(1, 0) of a total field means, in every use this module has (the dipole moment k0, the trace step sizing, the device staging of the internal part), is the INTERNAL field's coefficient, and that is what this forwards to. Documented here precisely because silently answering a question the physics cannot pose is how a wrong number acquires authority.
n | the degree. |
m | the order. |
the internal part's coefficient.
O(1).
none.
IrbemTotalField.SuperposesInternalAndExternalThe internal part's h(n, m), in nT — see g for why this forwards.
n | the degree. |
m | the order. |
the internal part's coefficient.
O(1).
none.
IrbemTotalField.SuperposesInternalAndExternalThe internal field alone — what dipole_moment and the device staging need, since those are questions about the internal field specifically and a superposition cannot answer them.
the internal model.
O(1).
none.
IrbemTotalField.SuperposesInternalAndExternalConstants & variables
The internal part's truncation degree — what generic staging and buffer sizing read, on both this type and Igrf, so M::degree means the same thing for either.
