Transport physics and limits
Analog neutron histories
Distances between collisions are sampled as −ln(U)/Σt. Tracking competes the sampled flight with all analytical surface distances and the world boundary. Crossing an internal surface changes the material query; it does not cause a collision. At collision, Σs/Σt, Σγ/Σt, and Σf/Σt select scattering, capture, or fission. Capture and fission terminate the parent. Fission emits floor(ν+U) neutrons, an unbiased integer population with no more than eight neutrons per event in this data format.
World boundaries are vacuum or specular reflection. Internal CSG boundaries transmit. Coordinate nudges are max(10⁻⁶ cm, 2×10⁻⁶ times the largest world half-width). Features at or below that tolerance cannot be resolved reliably. Nuclear-data calculations and tracking use f32; results near tangencies or extremely thin regions require mesh and tolerance studies.
Boxes, spheres, finite Z-axis cylinders, and plane half-spaces have analytical intersections. A region is the intersection of up to eight signed primitives. Complements implement subtraction. Unions use multiple regions with the same material; later regions take precedence. At most 256 expanded regions and 16 materials are supported. The assembly is an explicitly expanded 7×7 lattice, with linear surface search rather than a BVH.
Energy representations
Multigroup materials supply macroscopic cross sections in cm⁻¹, group-dependent ν, a normalized group transfer probability matrix, and a normalized fission spectrum χ. Scattering is isotropic in the laboratory frame. Mixtures combine macroscopic reaction and production rates by volume fraction and scattering distributions by scattering-rate weights. The format has one χ per material; mixtures with differing fissile spectra are rejected rather than averaged incorrectly.
Continuous-energy materials use number density in atoms/barn-cm and microscopic cross sections in barns. A binary search brackets energy. Each reaction interval follows the supplied ENDF lin-lin (2) or log-log (5) law. No energy extrapolation occurs. The supported target state is exactly 0 K: nuclei are stationary. Dataset temperature must match material temperature.
Elastic scattering samples a CM cosine from an isotropic law or a nonnegative Legendre density of at most eight terms. Coefficients interpolate linearly on the processed incident-energy grid. Rejection sampling uses a conservative analytic bound; exhaustion is a calculation error. The outgoing energy ratio is (A²+2Aμ+1)/(A+1)² and the laboratory cosine is (1+Aμ)/sqrt(A²+2Aμ+1). Azimuth is uniform. These expressions preserve the stationary-target elastic kinematics.
The supported CE fission format has interpolated energy-dependent ν and an incident-independent, isotropic outgoing distribution represented by an energy CDF with linear inverse interpolation. Imported data must represent that law explicitly. No bundled evaluated fissile nuclide currently satisfies the supported reaction subset; CE eigenvalue mode is therefore unavailable with the bundled H-1 data. Code support for the tabulated emission law is not a reference-qualified CE criticality capability.
General-temperature free-gas motion, Doppler reconstruction in the browser, S(α,β), unresolved-resonance probability tables, inelastic scattering, (n,2n), other secondary channels, delayed-neutron timing, photon transport, depletion, survival biasing, weight windows, and heating are unsupported. The offline converter rejects evaluations containing reactions outside its supported subset. A generic total cross section must never silently replace missing reactions.
Estimators and generations
Flux is the sum of track lengths divided by source histories and voxel volume. Straight paths split exactly at voxel faces by DDA. Capture and fission rates are analog event counts under the same normalization. Fixed-source secondary generations continue until the fission bank is empty. Normalization stays at the external source population; particle balance counts all launched descendants. Supercritical fixed-source cases may exceed the bank capacity and are rejected; use eigenvalue mode for sustained multiplication.
The eigenvalue estimator is emitted neutrons divided by source histories per generation. Each following source generation samples the completed fission bank uniformly with replacement, preserving the expected spatial-energy source. Inactive generations do not update field moments. Active generations update sums and sums of squares on the GPU. All particles have unit weight; there is no implicit absorption or importance sampling.
Atomic appends can reorder the fission bank. Fixed-source runs are bitwise reproducible on a tested adapter/configuration; eigenvalue runs are statistically reproducible, not guaranteed bitwise identical across dispatch ordering, adapters, or drivers. f32 transcendental implementations also vary across devices. Seed, configuration, software version, adapter, and active/inactive counts must accompany exported results.
The status panel reports a blocked standard error using non-overlapping blocks of five generations, with at least two blocks to show an error. Precision reached requires ten blocks, the relative-error target, small lag-one correlation, and stable recent entropy for eigenvalue runs. These diagnostics cannot prove source convergence or eliminate finite-population bias. Every displayed result remains preliminary research output until its specific model has been independently validated.
Overflow, bank exhaustion, out-of-range energy, failed angular sampling, and particle imbalance invalidate the calculation. Pause remains available between bounded GPU batches. There is no arbitrary collision-count termination that would bias long histories. A perfectly reflective, nonabsorbing material has infinite histories; such a calculation must be paused and its physics changed.
References: OpenMC neutron physics, OpenMC eigenvalue methods.