cheatah
Struct

space::irbem::TracedLine

cheatah-space v0.1.0-alpha — Biome Standard 0.6.5-alpha

What trace_field_line produces, alongside the path itself.

The scalars are IRBEM's Lm, Bmin and XJ, computed on the SAME samples the path is made of rather than by a second trace — which is what makes this one pass over the line instead of two.

Constants & variables

var double b_local #

|B| at the input point, nT — IRBEM's Blocal at the input index.

var double b_min #

The minimum |B| along the line, nT, parabola-refined off the sample grid.

var double invariant_i #

I for a particle mirroring at the input point, Earth radii — IRBEM's XJ.

var double mcilwain_l #

McIlwain's L, Earth radii — IRBEM's Lm, via mcilwain_l.

var Position< Frame::GEO > equator #

The magnetic equator, GEO, Earth radii — the parabola-refined position of b_min.

var std::size_t point_count #

How many samples were written into the caller's span.

var std::size_t start_index #

The index of the input point within the path. Exact: the input point is stored verbatim.

var std::size_t equator_index #

The index of the sample nearest equator — the parabola's centre, not its vertex.

var bool truncated #

Whether the path ran out of caller-supplied room before the line closed; the status is then Status::NotConverged rather than Status::Ok.

There are TWO shapes of truncation and they leave different amounts behind, so a caller must not read the scalars without checking start_index:

  • The BACKWARD half alone filled the buffer. The trace returns before the input point is even stored, so start_index is 0 and b_min, invariant_i and mcilwain_l are all exactly zero — nothing was integrated and nothing is reported. Reading them as a short field line would be reading zeros.

  • The backward half FITTED and the forward one did not. Then the quadrature ran over the partial line and the scalars describe THAT, not the field line.