Skip to content

Verification and Validation

This section documents what has been checked to give confidence that the point-kernel kernel math is correct, and (separately) where its predictions have been compared against external references.

We split the work using the standard definitions:

  • Verification ("are we solving the equations right?"): compares code output to closed-form analytic solutions or to another code solving the same equations (code-to-code benchmarks).
  • Validation ("are we solving the right equations?"): compares code output to experimental measurements (e.g. SINBAD, ICSBEP, or ORNL shielding benchmarks).

The runnable scripts live in the top-level verification_and_validation/ folder of the repository.

Verification status

Case Quantity Reference Status
Uncollided flux in void \(\Phi(r) = S / (4\pi r^2)\) Analytic Passing, machine precision
Transmission in void \(T = 1\) Analytic Passing, exact
Beer-Lambert single slab \(T(t) = e^{-\Sigma t}\) Analytic (exponential law) Passing, \(< 10^{-15}\)
Neutron fit form quality \(B_\mathrm{neutron}(\tau)\) across 19 neutron-source materials MC anchor library (leave-one-out) Mean holdout \(z = 4.9\)
Primary-photon fit form quality \(B_\mathrm{photon}(\tau)\) across 13 photon-source materials MC anchor library (leave-one-out) Mean holdout \(z = 2.1\)
Secondary-photon fit form quality \(B_\mathrm{coupled-photon}(\tau)\) across 21 materials MC anchor library (leave-one-out) Mean holdout \(z = 6.0\)

Validation status

No validation cases have been added yet — validation requires comparison to experimental measurements (reactor / shielding benchmarks), and those have not been wired into this section. Published buildup-factor tables (ANS-6.4.3 / Harima) are themselves verification artifacts (derived from moments method, discrete ordinates, or MC fits) and would be added under the verification section above if/when included.

Running the scripts

All verification scripts are self-contained and runnable:

python verification_and_validation/uncollided_flux_in_void.py
python verification_and_validation/transmission_in_void.py
python verification_and_validation/beer_lambert_single_slab.py
python verification_and_validation/secondary_photon_fit_test_suite.py
python verification_and_validation/neutron_fit_test_suite.py
python verification_and_validation/primary_photon_fit_test_suite.py

Each prints a table of cases and exits with code 0 if all checks pass, non-zero otherwise. They are suitable for running in CI. The secondary_photon_fit_test_suite.py script doubles as a regression harness when choosing or tuning a coupled-photon fit form: it loads secondary_photon_fit_cache.json (21-material MC anchor library), fits the candidate forms in CANDIDATES, scores each per-material on the held-out anchor, and writes a CSV plus a multi-panel comparison plot.