docs: consolidate solver knowledge and preserve formulation originals
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# ADR-018 graph BL/solve certificate controller draft
|
||||
|
||||
Status: private design only. Shared test source is frozen while the configured
|
||||
Debug focused run is active.
|
||||
|
||||
## Scope
|
||||
|
||||
Stored `ConstraintRowOperators::{gradient,hessian,time_gradient,third_directional_gradient}`
|
||||
are exact binary64 inputs. The draft certifies only fixed-basis contraction and
|
||||
linear graph-solve arithmetic. It does not certify AD/FE operator formation,
|
||||
root branch sensitivity, or nonlinear history.
|
||||
|
||||
## Test-local data
|
||||
|
||||
`GraphArithmeticCertificate` should retain dense-small matrices/vectors:
|
||||
`Ghat`, `P_hat`, `BG`, `BP`, `bhat`, `Bb`, `R`, `Hbar`, `Q`, `rbar`, `Bx`.
|
||||
It is private to `hht_shell_physics_test.cpp`.
|
||||
|
||||
For every graph row and basis column, replay source order:
|
||||
|
||||
1. Iterate `row.gradient`, then `column.support`; match full DOF.
|
||||
2. Product radius is `ProductRadius(C, 0, L, BL)`.
|
||||
3. Reduce matching products in `RateSumRadius` source order.
|
||||
|
||||
This yields stored `Ghat=C*Lz`, `P_hat=C*Lp`, and entrywise `BG/BP`.
|
||||
The same replay builds RHS radii for `P*vp`, `P*ap`, Hessian/time contractions.
|
||||
No zero-BL fallback is allowed.
|
||||
|
||||
## Inverse action
|
||||
|
||||
For each canonical unit RHS, use the existing graph solver and N2-L check to
|
||||
obtain one stored column of `R`. Replay `I-Ghat*R` with product/sum radii to
|
||||
make nonnegative `Hbar`. Require finite values and `thetaH=||Hbar||inf<1`.
|
||||
Construct
|
||||
|
||||
`Q[i,j] = abs(R[i,j]) + (abs(R)*Hbar*1)[i] / lower(1-thetaH)`.
|
||||
|
||||
All bound additions/divisions use existing outward helpers. Failure of the
|
||||
positive lower denominator or either theta is INCONCLUSIVE, not a radius reset.
|
||||
|
||||
## Uncertain solve
|
||||
|
||||
Replay `rhat=bhat-Ghat*xhat`; combine absolute residual and rounding into
|
||||
`rbar`. With actual RHS bound `Bb`:
|
||||
|
||||
`y = Q*(rbar + Bb + BG*abs(xhat))`, `A=Q*BG`, `thetaG=||A||inf`.
|
||||
|
||||
Require `thetaG<1`; set
|
||||
|
||||
`Bx[i] = y[i] + rowSum(A,i)*normInf(y)/lower(1-thetaG)`.
|
||||
|
||||
Undo any actual rate scaling before using `Bx` in physical lifted radii.
|
||||
|
||||
## Tests
|
||||
|
||||
Add only after the current focused run closes:
|
||||
- small chart with plane coefficient value zero / positive BL, proving BG/BP
|
||||
remain nonzero after an omitted-BL mutation;
|
||||
- 1x1 and 4x4 source-order graph replay, N2-L checked;
|
||||
- one thetaH and one thetaG failure must return incomplete;
|
||||
- use a known 4x4 perturbation from the independent 32-case probe as a
|
||||
behavior oracle, without copying implementation equations as its oracle.
|
||||
|
||||
No production API, tolerance, grid, or sparse global inverse is added.
|
||||
Reference in New Issue
Block a user