Record controlled numerical outcomes and remaining operator questions

This commit is contained in:
2026-09-16 15:43:38 -04:00
parent da38801b31
commit b3a752b16b

View File

@@ -0,0 +1,251 @@
# Targeted numerical campaign — September 16, 2026
This campaign tests separate explanations for the Newton plateau while keeping
the public model API unchanged. The original optimized source is preserved in
`research/baseline-20260916` at `80cc3d8`; `main` is unchanged. Hypothesis branches
and complete numerical artifacts are retained, including unsuccessful changes.
## Decisions
| Hypothesis | Current decision | Evidence |
| --- | --- | --- |
| The extra central constraint distorts n=1's local equilibrium | Retain the example correction | Removing it reduces peak EOS error about 22-fold while preserving virial balance |
| Restart 40 loses useful Krylov information | Retain restart 160 in the example | The matched n=1 rotating model reaches strict convergence; restart 40 fails its late linear gate |
| One-way material-to-gravity completion is enough | Do not promote | Both windows still fail at n=3; correction grows and admissibility worsens |
| Rejecting a harmful reused initial guess helps | Retain as limited linear-solver robustness | All eight n=1.5 linear gates pass; the nonlinear plateau remains |
Normalization, the nonlinear stopping tolerances, and the default production
preconditioner have not been changed. The general FGMRES default remains intact;
the example selects its existing restart option. No new physics-facing options
or automatic n-dependent central constraint are introduced.
## Physical model and comparable controls
All runs use the same 1216-element `sandbox.smesh` and the release build's
unchanged FEM spaces. Mesh SHA-256 is
`ce11ae99e21e6c3bbfbee402acd2e191c1da0d8261d2227b4203f73f2f337a74`.
The diagnostic chooses a Lane–Emden reference with M=R=G=1 and derives K and
the seed density for each index. Its n=1 model has K=2/pi and seed density pi/4.
At n=1 and n=1.5 the new controls omit the central constraint; n=3 retains it.
That is an experiment choice, not an automatically imposed library policy.
Controls use nonlinear relative tolerance 1e-8, zero absolute tolerance,
linear relative tolerance 0.03, and a 200-iteration linear cap. A small virial
error and successful algebraic stopping are recorded separately. J=0.05 or
the resulting angular velocity is not a measured fraction of critical rotation.
The common diagnostic revision is `9bd4af6`. The later shared-tools revision
`0470e3b` adds a result checker, source-relative input hashing, and hashes for
saved output states/metadata. It does not alter the stellar solve.
## Removing the n=1 central constraint
The matched J=0.05, restart-40 controls isolate this model change. The initial
physical measurements agree exactly, and their first five accepted step
lengths and linear iteration counts are identical. Both then fail the sixth
linear gate at essentially the same true relative defect, about 0.505.
| Final measurement, quadrature 18 | Central constraint | No central constraint |
| --- | ---: | ---: |
| Peak absolute EOS density mismatch | 7.30451e-3 | 3.32568e-4 |
| Peak EOS mismatch / sampled density scale | 9.33951e-3 | 4.30594e-4 |
| Bernoulli sampled range | 1.45751e-2 | 1.30398e-3 |
| Residual with artificial border source removed | 4.54227e-6 | 6.03609e-9 |
| P(h) energy virial error | 3.01617e-7 | 3.06913e-7 |
Mass, J, and angular velocity are essentially unchanged. The formerly fixed
central enthalpy coefficient falls from 1 to 0.983383508. The peak and range
improvements are localized: volume RMS errors barely change. Quadrature 14
independently shows the same trend. These sampled extrema are not certified
pointwise bounds.
The example now supplies density through the existing Lane–Emden seed policy
instead of constraining the final n=1 model. The added context regression
checks that explicit seeding works without a central constraint. For n=3 the
constraint remains optional; omission is not promised to overcome homology.
## Larger Krylov window: live n=1 success
At J=0.05, changing only restart 40 to 160 gives:
| Quantity | Restart 40 | Restart 160 |
| --- | ---: | ---: |
| Accepted Newton steps | 5, all full | 7, all full |
| Final normalized residual | 6.03609e-9 | 3.38036e-11 |
| Strict configured convergence | No | Yes |
| Total linear iterations, including failed attempts | 370 | 292 |
| End-to-end seconds, including diagnostics | 290.80 | 271.95 |
The first four accepted steps coincide exactly. The fifth solve first crosses
the smaller restart boundary. The final strict threshold is about 2.15e-10.
These are single timing observations, not a general speedup benchmark. A larger
Krylov window also requires more storage.
All four final virial definitions, at both quadrature orders, are below
3.735e-7. The P(h) energy result at q18 is 3.07200e-7. Mass and J errors are
1.75e-13 and 1.54e-14. No sampled density or enthalpy is negative. Local EOS and
Bernoulli errors remain essentially those of the improved unphased model.
The center-of-mass offset falls from 7.66e-6 to 2.69e-8 during the final
corrections, after virial and local EOS metrics have mostly stabilized. This
motivates examining weak position-related directions; it does not identify a
specific null mode or establish a need for an additional gauge.
## Higher index: the larger window is not sufficient
For n=1.5, J=0, no central constraint, restart 160, seven linear solves meet
their true-residual tolerance. Nonetheless, Newton step lengths shrink to
1/2048 and F remains 1.75135e-4. The eighth linear solve fails at relative
defect 0.07910. The first severe damping occurs with a zero initial guess,
before a reused correction can explain the difficulty. Later reused guesses
start with defects about 1.5–2.0 times the RHS norm.
Recorded rejected trials fail the merit test; their geometry remains valid.
Smaller reported starting-step caps include line-search history and must not
be mistaken for geometric admissibility limits. Gravity-gradient and Poisson
rows hold about 99.69% of the squared normalized endpoint residual. Those rows
include both interior and exterior contributions, so this does not locate the
physically important interior error.
P(h) energy/force virials pass at approximately 2.23e-6/2.33e-6, but Bernoulli
and hydrostatic consistency worsen. P(rho) is undefined at some samples because
of small negative DG density values; negative mass fraction is about 2.89e-5.
The corresponding pressure sensitivity budget is about 3.76e-7 in virial units.
This endpoint is not classified as a validated equilibrium.
## Rejected one-way gravity completion
The tested candidate `8c1f823` changes only the structure factorization to
material-then-gravity triangular completion. It retains exactly the default
material component, Chebyshev order 5 gravity mass inverse and three-cycle
AMG potential inverse. It includes density and shape couplings and rebuilds
the scalar border. Its baseline is `9bd4af6`.
Both runs reconstruct the identical n=3 constrained seed. Snapshot, layout,
initial physical measurements, and frozen RHS block norms agree exactly.
Both cold Krylov windows are measured; each policy's restart-160 correction
is then tested without committing any nonlinear step.
| Frozen result | Baseline | Candidate |
| --- | ---: | ---: |
| Restart-40 true residual / RHS, 200 iterations | 0.0563080 | 0.0715826 |
| Restart-160 true residual / RHS, 200 iterations | 0.0402590 | 0.0381781 |
| Restart-160 solve seconds | 98.92 | 117.71 |
| Selected normalized correction norm | 0.75764 | 1.54083 |
| Sampled thermodynamic step bound | 0.15244 | 0.09135 |
Neither clears the 0.03 linear gate. The candidate's alpha=0.1 trial is
inadmissible; the baseline's is admissible and lowers F by 3.40%. The
candidate's best sampled admissible trial, alpha=0.01, lowers F by about 1.01%.
The unchanged seed virial is not evidence about the uncommitted trial states.
Completion contracts the central-border column's Poisson defect about 4.8-fold
but worsens the Bernoulli column's Poisson defect. Those columns have zero
shape component, so this mixed response already occurs for density-source
completion. The experiment does not rule out better gravity subsolves or
two-way material/gravity feedback.
There is also direct evidence of a weak normalized direction. Baseline
restart-40 and restart-160 corrections have cosine -0.985 despite the same
state and Jacobian. If e_i=Jp_i+F, then
J(p_2-p_1)=e_2-e_1, giving a response bound
||J(p_2-p_1)||/||p_2-p_1|| <= 2.77e-4. The candidate adds still more amplitude
in essentially the restart-160 direction. This is not a measured singular
value or an identification of homology, translation, or surface error.
## Warm-start safeguard
The tested source is `1911a26`. The guard checks
the current true defect of a nonzero supplied correction and falls back to
zero only if that defect exceeds ||b|| or the operator action is nonfinite.
It preserves useful guesses and the existing damped-Newton history policy.
It adds no public options. A nonzero guess costs one extra measured operator
action; zero guesses do not.
Five focused tests pass on one rank (356284 assertions). The two pure-backend
tests also pass on two MPI ranks (41 assertions on each rank), including a bad
guess or overflow confined to one rank. These results establish behavior of
the safeguard. The matched n=1 run then reproduces the control byte-for-byte:
accepted state, physical CSVs, trial records and all non-timing Newton columns.
Its eight virial checks pass, and it reaches the identical strict convergence.
At the first shared n=1.5 damped state, the guard changes the effective initial
defect/RHS from 1.5097 to 1 and reduces linear iterations from 71 to 65. The
same alpha=1/64 is accepted, with a slightly smaller nonlinear residual. Later
comparisons follow different trajectories and are not same-matrix comparisons.
| n=1.5 capped-run result | Control | Guard |
| --- | ---: | ---: |
| Successful linear solves | 7, then an eighth failure | All 8 |
| Total linear iterations | 672 | 561 |
| Iterations in first seven attempts | 472 | 467 |
| Final normalized residual | 1.75135e-4 | 1.74946e-4 |
| Final accepted step | 1/2048 | 1/8192 |
| End-to-end seconds | 550.36 | 508.16 |
Most of the total iteration reduction comes from avoiding the final 200-step
failure. The guard reaches the nonlinear iteration cap instead. Its residual
is only 0.108% lower, so this is not a nonlinear-plateau cure or a claim of
mesh-independent solver performance. The timings are single observations.
P(h) energy/force virials remain near 2.24e-6/2.35e-6, changing only about
9.0e-9/2.0e-8. EOS and Bernoulli errors improve slightly and the negative-density
budget barely changes. P(rho) remains undefined and the validation gate correctly
fails. The center-of-mass offset increases from 1.67e-6 to 4.57e-6, so it would
be incorrect to claim that all physical metrics are unchanged. Both endpoints
remain unconverged. These limits motivate retaining the guard as a modest
improvement to the inner solver while pursuing the operator/weak-direction work.
## Validation and reproducibility
`experiments/run_plateau_campaign.py` builds a committed source revision and
retains exact case commands, build settings, mesh and binary hashes, an
immutable executable, snapshots, CSV diagnostics, and observed exit codes.
Cases run serially. A campaign exit of zero means observations completed;
a model exit of three remains recorded as nonconvergence. Timing samples are
not repeated benchmarks, and dynamically loaded dependencies are not frozen.
`experiments/check_plateau_physics.py RESULT_FOLDER` gates strict recorded
convergence and all eight defined, finite virial errors at 1e-5: energy/force,
P(h)/P(rho), and quadrature 14/18. It separately reports sign, conservation,
EOS, and Bernoulli measurements. It does not certify pointwise correctness or
assign arbitrary local-error tolerances. The checker distinguishes the
converged n=1 case, the n=1 algebraic failure despite good virials, undefined
P(rho) at n=1.5, and the failing n=3 seed virial.
Combined-example compilation, context tests, and its nonrotating physical
control are pending. This campaign uses focused tests, not a rerun of the
entire historical suite.
## Next discriminating work
1. At a frozen stalled state, split a correction into shape-only and remaining
field components. Measure full, pure-shape, pure-field and mixed Taylor
remainders at common admissible step lengths. Fixed-shape gravity is affine
in the fields, so its field-only remainder should be at roundoff.
2. Characterize the weak correction differences with physical moments and
controlled symmetry/shape tangents before adding a gauge or regularization.
3. Separate interior, exterior, and interface gravity error. Exterior accuracy
matters through its effect on the interior; current aggregate block norms
cannot establish where the plateau lives.
4. If residual normalization is changed, first rescore identical physical trial
states. This separates a changed merit from a changed Newton correction.
High-rotation continuation and a measured critical-rotation fraction remain
future validation work. These results do not establish the 50% or 99% targets.
## Artifact index
The complete campaign is retained at
`/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/numerical_campaign_2026-09-16`.
Each of `controls`, `baseline_n3`, `gravity`, and `guard` contains its copied
case manifest, source/build provenance, executable, run records and diagnostics.
Use its retained `cases.json` with `run_plateau_campaign.py` at the recorded
source revision and a new output directory to repeat the observation. The
runner invocation and build requirements are in `plateau_diagnostic_README.md`.
- [Detailed controls](</Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/numerical_campaign_2026-09-16/control_analysis.md>)
- [Gravity-coupling comparison](</Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/numerical_campaign_2026-09-16/coupling_comparison.md>)
- [Gravity-coupling interpretation](</Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/numerical_campaign_2026-09-16/coupling_interpretation.md>)
- [Warm-start comparison](</Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/numerical_campaign_2026-09-16/guard_analysis.md>)
- [Focused safeguard test manifest](</Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/numerical_campaign_2026-09-16/guard_checks/manifest.json>)