Validation: src/zephyrus/fractionation.py
This page tracks the @pytest.mark.reference_pinned tests that anchor the N-species closure of zephyrus.fractionation against every special case of the escape-fractionation lineage it generalises.
| Test id | Reference | Scope |
|---|---|---|
tests/test_fractionation.py::test_ternary_deuterium_reductions |
Gu & Chen (2023), Eqs. (4), (8), (9), and (12); Cherubim et al. (2024), ApJ 967, 139, Eq. (11) | The H-He-D system reproduces both branches and both critical rates, including the helium admixture factor on the deuterium threshold. |
tests/test_fractionation.py::test_two_majors_trace_minor_relations |
Odert et al. (2018), Icarus 307, 327, Eq. (5); Zahnle et al. (1990), Icarus 84, 502, Eqs. (35) and (36); Zahnle & Kasting (1986), Icarus 68, 462, Eq. (36) | Entrained trace minors follow the Odert relation (equal to Zahnle et al. Eq. (35)) to \(10^{-11}\) relative, the closure clamps to zero where the printed formula goes negative, the limiting flux follows Zahnle et al. Eq. (36), and the earlier 1986 drag-deficit weighting is not reproduced (the adjudication between the two printed variants). |
tests/test_fractionation.py::test_first_entrainment_with_two_retained_heavies |
Zahnle et al. (1990), Icarus 84, 502, Eq. (42) | The first-entrainment threshold with two retained heavy backgrounds matches the printed expression and is sharp. |
tests/test_fractionation.py::test_zk23_nontrace_ternary_relations |
Zahnle & Kasting (2023), GeCoA 361, 228, Eqs. (19) and (20) | The non-trace H-O-CO2 relations hold: Eq. (19) in closed form to machine precision and through the solver's own bisected activation threshold, Eq. (20) at every flux inside the two-species band. |
tests/test_fractionation.py::test_chassefiere_prescribed_flux_partition |
Chassefière (1996), Icarus 124, 537, Eqs. (1), (6), and (7) | The prescribed-total-flux binary partition holds to machine precision at every draw, and his crossover-mass dropout test coincides with the closure's own threshold. |
tests/test_fractionation.py::test_hunten_anchors_earth_mars_venus |
Hunten, Pepin & Walker (1987), Icarus 69, 532 (worked Earth, Mars, and Venus anchors) | The printed numerical anchors are reproduced from the threshold relation and through the solver's own activation threshold within 1%. |
tests/test_fractionation_ensembles.py::test_binary_limit_matches_closed_form_over_random_draws |
Cherubim et al. (2024), ApJ 967, 139, Eqs. (7) to (9) | 200 random binaries match the closed-form partition on both branches to \(10^{-12}\) relative, with flux continuity at the crossover and exact mass conservation. |
Notes
The randomised ensemble suite additionally verifies global properties across activation thresholds (conservation, non-negativity, monotonicity, active-set growth, two-sided continuity, piecewise linearity), active-set uniqueness by Karush-Kuhn-Tucker enumeration against a brute-force oracle, and the stability of composition fixed points under well-mixed-layer relaxation.
Anchor type
Published benchmarks (exact reductions to six printed formulations spanning 1987 to 2024) plus a brute-force cross-implementation oracle.
Date of last comparison against the sources: 2026-08-20.