Files
FESADev/docs/hht-implicit-dynamics/formulation-graph-certificate-draft-20261012.md
T
2026-10-18 14:32:55 +09:00

2.9 KiB

ADR-018 graph BL/solve certificate controller draft

읽기 구분: 2026-10-12 test-local graph certificate 설계 초안이다. 수식 범위는 고정 null 기저의 certificate 계약, 현재 구현·검증은 기능 요약을 따른다. 아래 작업 동결·추가 계획은 초안 작성 당시 기록이다.

상태: 과거 private 설계 초안이다. 작성 당시 configured Debug focused run 중에는 shared test source를 동결했다. 현재 test-local certificate 구현의 존재와 최신 실행 검증 범위는 구분하며 기능 요약을 따른다.

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

초안 작성 당시 focused run 종료 뒤 추가하려던 검사 목록:

  • 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.