Skip to main content

Module table_coverage

Module table_coverage 

Source
Expand description

How often the electron transport read each cross-section table inside its energy grid, and how often it used the constant continuation beyond an end.

The transport interpolates the rate (and the inverse CDF) of each table linearly in energy between the rows of the table’s own grid, and holds the first or last row constant outside it (crate::electron::transport, module docs, “Free flight”). That continuation is a numerical choice, not physics: a validation run whose electrons spend many flights beyond a grid end measures the continuation as much as the model. The input resolver can warn when a configured grid does not cover the expected energies; this tally counts what actually happened, primaries and secondaries together.

§What is counted

One count per call of ElectronTally::table_lookup, per layer and per channel (elastic, inelastic), split by where the energy lay against that table’s grid [E_min, E_max]:

  • below: E < E_min, the first row was used;
  • within: E_min <= E <= E_max, endpoints included (an energy equal to an endpoint reads that row exactly, with no continuation);
  • above: E > E_max, the last row was used.

The transport evaluates both rates of the electron’s layer once per pass of its loop, before drawing a free path. So the counts are rate evaluations, not collisions: a flight cut short at a layer face, a pass after a face reflection and a flight with zero total rate are each one evaluation of both tables and no collision, and a channel with zero rate is evaluated (and counted) like any other. They are not fractions of deposited energy or of path length either. The elastic and inelastic counts of a layer are always equal in total; they differ in their split when the two grids differ.

§Determinism

All counts are integers, merged by addition in chunk order, so they are identical at any thread count for a fixed seed and chunk size. Counting draws no random number and changes no state of the transport.

Structs§

LayerTableCoverage
Rate evaluations of the two tables of one layer.
TableCoverageCounts
Rate evaluations of one table, by where the energy lay against its grid, with the grid’s bounds.
TableCoverageTally
Counts the rate evaluations of every table of a run against its grid (see the module docs). Usable on its own as an ElectronTally; crate::tally::FullElectronTally carries one and puts its TableCoverageTally::layers in ElectronReport::table_coverage.