Record the measured validation and performance figures in the readme

The acceptance criteria ask for numbers rather than claims, and every row but
the three still-unbuilt ones has been measured. Splits validation into the
Orekit comparison and the analytic invariants, and gives the performance table
step counts alongside times so a ratio of times can be read as per-step cost.

The three invariant tests and the MSIS drag comparison now print what they
achieved, so the readme's figures can be reproduced by running them.

Also corrects the ordinary-diffeq version in the foundations table, and the
claim that the fixture generator produces observations, which it does not yet.
This commit is contained in:
connor committed 2026-10-02 22:58:58 -04:00
1 parent 98f19b700a
commit d268fc0cf5
4 files changed
+89 -13

No files matched your search

+4 -2
View File
@@ -335,11 +335,13 @@ fn test_msis_drag_agrees_with_orekit() {
.accuracy(Accuracy::High);
let solution = propagation.run();
let mut position = 0.0_f64;
let (mut position, mut velocity) = (0.0_f64, 0.0_f64);
for state in &arc.states {
let ours = Orbit.state(solution.interpolate(state.elapsed));
position =
position.max((ours.position() - Vector3::from_column_slice(&state.position)).norm());
velocity =
velocity.max((ours.velocity() - Vector3::from_column_slice(&state.velocity)).norm());
}
let drag_free = {
@@ -353,7 +355,7 @@ fn test_msis_drag_agrees_with_orekit() {
let effect = (Vector3::from_column_slice(&last.position) - drag_free).norm();
println!(
"msis drag: {position:.3e} m, {:.4}% of a {effect:.0} m effect",
"msis drag: {position:.3e} m, {velocity:.3e} m/s, {:.4}% of a {effect:.0} m effect",
position / effect * 100.0
);
assert!(