Use the validated wider Krylov window in the stellar example
This commit is contained in:
39
experiments/KRYLOV_WINDOW_HYPOTHESIS_2026-09-16.md
Normal file
39
experiments/KRYLOV_WINDOW_HYPOTHESIS_2026-09-16.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Larger Krylov window
|
||||
|
||||
This branch changes only the sandbox example's existing FGMRES restart setting
|
||||
from 40 to 160. It adds no public API and does not change the general backend
|
||||
default. The warm-start safeguard is a separate hypothesis and branch.
|
||||
|
||||
## Matched evidence
|
||||
|
||||
The common diagnostic executable at commit `9bd4af6` ran n=1, K=2/pi, M=1,
|
||||
J=0.05, with no central-density constraint, on the unchanged `sandbox.smesh`.
|
||||
Both runs used nonlinear rtol=1e-8, atol=0, linear tolerance=0.03, and at most
|
||||
200 linear iterations. Only the restart window differed.
|
||||
|
||||
| Result | Restart 40 | Restart 160 |
|
||||
| --- | ---: | ---: |
|
||||
| Accepted full Newton steps | 5 | 7 |
|
||||
| Final normalized residual | 6.03609e-9 | 3.38036e-11 |
|
||||
| Strict convergence | No: sixth linear solve fails | Yes |
|
||||
| Total linear iterations, including failed attempt | 370 | 292 |
|
||||
| Largest final virial error among four definitions, q=14/18 | 3.73183e-7 | 3.73466e-7 |
|
||||
|
||||
The first four steps coincide exactly. The larger window first changes the
|
||||
fifth linear solve. This is live nonlinear evidence, supplemented by the earlier
|
||||
frozen-system comparisons. Single wall-time samples (291 versus 272 seconds,
|
||||
including physical diagnostics) do not establish a general speedup.
|
||||
|
||||
## Limits and validation
|
||||
|
||||
The larger window requires more Krylov storage. It is a useful example setting,
|
||||
not a universal default: n=1.5 without the central constraint still stalls with
|
||||
this window, and eventually fails a linear gate. The n=3 frozen control also
|
||||
needs a stronger numerical treatment. This change does not establish a fraction
|
||||
of critical rotation and does not alter the convergence or virial tolerances.
|
||||
|
||||
Removing the n=1 example's central-density constraint is independently supported
|
||||
on `research/central-constraint-20260916`; combine the two changes for the intended
|
||||
example. Compilation and a nonrotating run of the combined example are pending.
|
||||
Raw results and exact build/mesh/executable provenance are retained in the
|
||||
workspace's `diagnostics/numerical_campaign_2026-09-16/controls` directory.
|
||||
@@ -122,7 +122,7 @@ int main(
|
||||
);
|
||||
|
||||
auto preconditioner = preconditioning::makePreconditioner();
|
||||
auto linearSolver = solver::linear::FGMRES({.restartLength = 40, .printLevel = 1});
|
||||
auto linearSolver = solver::linear::FGMRES({.restartLength = 160, .printLevel = 1});
|
||||
const auto contextStart = std::chrono::steady_clock::now();
|
||||
// This density initializes the seed; the n=1 equilibrium is free to change it.
|
||||
auto context = solver::makeContext(
|
||||
|
||||
Reference in New Issue
Block a user