Files
FESADev/docs/hex8-structural-analysis/numerical-review.md
T

245 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hex8 독립 수치 검토
검토 대상은 [PRD](PRD.md), [formulation](formulation.md), [numeric controls](numeric-controls.md),
[I/O](io.md), [reference mapping](reference-model.md)이다. 2026-10-08 작성자와 독립된
`hex8_t1_numerical` reviewer가 문서·관련 코드·원본을 대조했다. 수식에 추가 blocker는 없으나
필수 원본/입력 계약 충돌은2026-10-09 사용자 선택 A로 해소했다. 구현 전 문서 blocker0이며
실제 solver 수치 PASS가 아니다.
## 2026-10-09 — 승인된 high+low의 한정된 검토
`hex8_t5_numerical_spec` reviewer가 [precision formulation](precision-formulation.md)과
실제 shared arithmetic·paired kernel·geometry를 독립 검토했다. Canonical zero와 scalar
−0 lifting의 두 결함은 수정했고 native fixture로 검증했다. 동일 상대변위 gradient의 chain
rule, isotropic material Hessian·geometric 항·Cauchy 복구와 full X+high+low interval은
일관된다. 산술의 실제 graph bound와 exact-dyadic 기대값을 별도로 검토했으며 native6/6
산술 검사 로그를 확인했다. 해당 범위 bounded PASS이며 새 actionable finding은 없다.
일반 correctly-rounded106-bit 보장이나 T6 전체 state/시간수렴/원본 PASS가 아니다.
T6 consumer·backend·worker 경계와 rollback은 해당 구현이 고정된 후 별도 검토한다.
이후 같은 reviewer가 optional immutable paired-linear Hessian cache를 검토했다.
동일 graph·선형 force/energy/recovery·비선형 trial Hessian·기존 F64 Create 지원을 유지하며
native44/44 원시 로그를 확인했다. 이 캐시 변경도 bounded PASS다.
## 2026-10-10 — 전체 동적 상태와 원본 세 증분의 제한적 검토
동일 독립 reviewer가 고정된 T6 `c49cae4`의 predictor/rates, 기준 M의 전체 pair 작용,
ordered force/tangent 누적, full residual·scale, 실제 old residual을 포함한 weighted 식,
fresh solve와 실제 상태 변경의 네 보정 채널, backend/worker 이후 실행 전제 검사,
accepted low의 복사·검증·rollback을 검토했다. 원시73개 inventory와 owned/shared source,
binary·patch의 hash를 확인했고 해당 consumer 범위 bounded PASS, actionable finding0이다.
Current32/32 검사와 과거 temporal4/5 실행의 성공 사례를 구분한다.
이후 변경하지 않은 두 원본의 초기 상태와 증분1–3을 관측했다. 원래 h=0.1,T=10,INC=100,
1326 full/1275 free/51 constrained를 유지하고, 네 번째 증분 local 계산 전 test-only 예외로
종료했다. 관측 native0·2/2는 이 종료 조건의 성공이며 전체 해석 완료가 아니다.
메인은51개 raw artifact의 hash/크기를 확인한 뒤 두 binary64 성분을 exact dyadic Fraction으로
읽어 모든 상태의 normalization, 실제 Mff의 full M restriction, 원래 모든 free 성분의
물리 r/Si와 exact-zero, HHT 세 update 식과 weighted old-r 항등식을 독립 재계산했다.
Exact CSR M 작용으로 재계산한 물리 비율의 최댓값은 선형3.12680e-20,
비선형1.3043731e-16으로 승인1e-10 이내다. Update·weighted identity는1e-12 이내이며
초기1275개 free row는 모두 exact0이다. 실제 PARDISO 보정의 선형6회·비선형9회 기록으로
Newton 시작값인 이전 accepted u부터 최종 u를 재구성하고, fresh/observed 네 보정 채널도
각각 확인했다. 비선형 최대 보정 비율1.01046e-13은 승인1e-10 이내다.
Storage graph 대조의 별도 절대 오차 budget과 물리 gate를 혼동하지 않는다. Exact M 작용과
저장된 pair Ma의 상대 차이는 최대2.88e-32였다. Strict physical gate에 floor를 추가하거나
high만으로 full 상태를 대신하지 않았다. 재현 자료는 로컬
`.harness/hex8-evidence/precision/{prefix3-frozen,prefix-independent.json,check_prefix.py}`다.
Root 연결 후 관련49/49 검사의 native build/CTest는0/0이다. 이어 두 brick의 LIN/TL 직렬·TBB
전체 low 필드 일치와 실제 nonzero low를 확인한 focused1/1 검사도0/0이다.
최초 넓은 filter가 전체 원본 smoke를 선택해 중단한 실행은 CTest exit−1로 보존하며
수렴 실패 또는 통과로 해석하지 않는다. 전체101 endpoint·공식 HDF5·원본 비교는 아직 없다.
동일 독립 reviewer가 메인의 Fraction checker 전체를 정적으로 검토하고 frozen51개 자료에
읽기 전용으로 재실행해 결과가 정확히 같음을 확인했다. Oracle 수식 오류는 발견하지 않았고
source-prefix bounded PASS를 반환했다. 저장값 비교의2^-90 budget을 모든 범위의 primitive
graph/106-bit 정확도 보장으로 확대하지 않는다. 이 검산은 accepted 상태와 실제 반환 du를
확인하며 중간 각 solve의 Kt/Keff·RHS 방정식 잔차를 별도로 증명한 것은 아니다.
## 공식 결과·prepared/CLI 연결의 독립 검토
작성자 행동본 `9144eef`와 public header 직접 include·Doxygen만 보완한 후속본 `63cfdd0`을
독립 reviewer가 검토했다. Typed Solid static/frequency/dynamic outcome, 실제5절차 dispatch,
source warning, static 실제2채널·dynamic scalar 로그와 로그 실패 우선순위를 확인했다.
HDF5 field·dtype/endian/UTF-8·shape·source identity·units, 전체 pair 검증 이후 RN64 출력,
callback 이후 산술 환경, 실제 writer/reader checked-close·readback·atomic replace와 기존
final 보존을 확인했다. Rounded 배열에서 물리 gate를 다시 계산하지 않는다.
요청 mode 뒤의 backend pair에는 차원 상한·정렬·유의 음수 lambda 검증이 빠져 있었다.
전체 pair 수를 free 차원 이하로 제한하고 T5와 같은 `lambda/scale>=-1e-9` 정책을 적용했다.
실제3-free/request1 API 결과에서 요청 밖 row를 음수·역순·차원 초과로 각각 변형해
서로 다른 거부 원인과 기존 final byte 보존을 확인했다. Raw near-zero 음수를0으로
바꾸거나 그 frequency를 생성하지 않는다. 이 finding은 해소됐으며 잔여 actionable finding0이다.
행동본의 실제 native build/CTest는0/0, 관련101/101 PASS·112.60s다. Header-only 후속본은
전체 configured 대상 recompile0 및5절차 API/schema1/1 PASS·9.88s이며101개를 후속본에서
다시 실행한 것으로 보고하지 않는다. 메인 `e2c3c5b`는 같은13개 owned blob과4개 CMake
등록을 연결했고 관련17/17을 native build/CTest0/0·72.95s로 확인했다.
원시114개 SHA/크기와 source13개 committed blob/snapshot 일치를 reviewer와 메인이 각각
확인했다. 로컬 자료는 `.harness/hex8-evidence/{t7-output-frozen,t7-integrated}/`다.
이 판정은 T7의 bounded PASS다. 전체780개 CTest·공식 원본 CLI 수치 비교·기능 완료와
release PASS를 뜻하지 않는다.
## HEX8-NR-001 — 영 회전 경계와 필수 원본 충돌
검토 당시 PRD008/I/O는 BC/CLOAD DOF4–6을 값0이어도 거부했다. 그러나 모든 필수 INP에
`Set-1, 4, 4`, `Set-1, 5, 5`, `Set-1, 6, 6`의 생략된 영 지정값이 있다.
Static2/frequency는794–796행, dynamic2는796–798행이다. Read-only 원본을 그대로
사용하면5개 모두 input failure이므로 end-to-end integration/필수 비교를 진행할 수 없다.
원본의 영 회전 BC만 warning/no-op으로 수용하는 입력 호환 예외와, strict 거부를 유지하고
사용자가 원본을 수정하는 두 대안을 제시했다. 2026-10-09 사용자는 A를 승인했다.
PRD008/I/O를 zero rotational displacement BC만 source warning/no-op으로 수용하는 한정된
호환 예외로 수정했다. 비영 회전 BC·모든 회전 CLOAD는 계속 거부하고 원본을 보존한다.
따라서 문서 blocker는 해소됐으며 구현에서 경고·실제3N·거부 경계를 테스트해야 한다.
동일 독립 reviewer가 승인된 수정 부분만 bounded recheck했고 `blockers: []`를 반환했다.
정적 읽기 확인 exit0이며 수식 재검토·code 변경·solver 실행은 하지 않았다.
## 독립 검토에서 정리한 내용
초기 static convergence 문서의 max(internal_free,external_free) branch는 prescribed-only에서
residual=internal_free라 ratio1을 만들어 수렴을 막을 수 있었다. Draft를 기존
`EvaluateResidualChannel`의 external_free exact0 absolute branch로 수정했다. Reviewer는 수정 후
기존 source219–246과의 일치를 확인했다. 승인 physics/schema/external acceptance는 바꾸지 않았다.
Reviewer의 독립 표준-library 산술 확인은 exit0이며 TL tangent relative 최적 오차 약4.59e-11,
Bernstein27 재구성 최대오차7.77e-16, mass Walsh 최소 모드값.03703703703703707≈1/27,
scalar HHT u/v/physical a 관측 차수 약2.00/1.98–1.99/2.00이었다. 초기 NumPy 계산은 모듈
부재로 exit1이었고 표준-library 계산으로 대체했다. 문서/코드/원본 읽기 명령은 exit0,
glob discovery 검색 하나는 exit1이었다. File edit/build/test/external solver 실행은 하지 않았다.
이 숫자는 문서 식의 독립 산술 확인이며 production kernel/backend/mesh 검증 evidence가 아니다.
TL energy/Hessian·engineering/tensor shear, degree(2,2,2) Jacobian 인증, mass SPD와 real/FP bound
구분, original generalized K/M·최저 N, HHT a/A·weighted/endpoint tangent·초기 force/physical
reaction, typed/HDF5·failed accepted 보존에는 문서 수식의 추가 blocker가 없었다.
검토해야 할 주요 위험은 다음과 같다.
- J0의 column/gradient 변환과 point3/4·7/8 순서; det J polynomial Bernstein 변환과 outward
interval/subdivision이 whole-cell 양성을 보증하는지, uncertain/resource failure가 보수적인지.
- TL energy variation에서 material/geometric tangent의 index와 work conjugacy,
rigid rotation/strain objectivity·zero-state 선형극한과 unaveraged Cauchy/Green recovery.
- 8점 consistent M의 SPD·총질량·reference 상수성·local spectral bound와 실제 sparse pencil
roundoff/control의 구분; Shell null/nodal whitening 미사용 및 lowest-N count 검증.
- HHT auxiliary/physical acceleration·weighted/endpoint residual의 동등 조건·tangent scale,
initialization/amplitude endpoints·physical reaction·u/v/a 시간수렴과 numerical dissipation.
- Static/Newton의 approved defaults·force/length 단위·zero-scale branch, internal oracle budget과
외부 reference acceptance 분리, geometry/finite/recovery 이후 atomic state/output commit.
- Original required U/RF/Gauss S·dynamic101 frame projection·frequency 미제공 상태를 정확히
구분하는지. Coordinate sanity 확인을 stress/reference correctness로 승격하지 않는지.
이 risk는 이후 실제 interval primitive/subdivision·brick/warped oracle·tangent step sweep·
generalized runtime/count·prescribed-only state·HHT mesh 시간수렴·formal HDF5/reference 사전검사로
검증해야 한다. 아직 실행하지 않은 solver build/test/reference를 PASS로 적지 않는다.
## T8 비교기 독립 검토와 실제 원본 불일치
Frozen author `0b93c0c59cf64db44003ebe5217a4efb8307a8ba`는 bounded PASS,
추가 actionable code finding0이다. Root 연결은 `317fe5c`다. Reviewer는 별도로 네 owned
LF commit blob/current/snapshot과 manifest·65 raw artifact의 hash/size, 양 checkout의
원본13 SHA를 확인했다. Actual stdout/JUnit에서124/124(Hex8 83·기존 HHT 41),
failure/error/skip0·native0·81.41s를 확인했다. 일부 초기 로그의 count가 원시 stdout으로
증명되지 않았던 한계는 최종 raw closure로 해결했으며 과거 native 기록은 유지한다.
실제 발견하고 behavior RED 후 수정한 사항은 alternate reference 선택 시 기본 원본을
report로 덮어쓸 수 있던 보호 누락, scalar modal pair의 rank 검사 전 IndexError,
`..` lexical path가 같은 scratch의 C++ source identity와 달라지던 문제다.
Default/selected reference·input/result/record와 symlink/hardlink alias 보호, Dataset/1D
검사, C++와 같은 lexical 절대경로 정규화와 targeted5 regressions를 확인했다.
두 정적 공식 HDF5는 source/schema/model/point/frame/finite precheck PASS·CLI native0이나
세 수치 family FAIL이다. Reviewer의 독립 standard full8 조립·회복·반력/에너지와 정식
비교 metric이 일치했다. Frequency 공식 readback의 precheck와 missing Value NOT RUN을
분리한다. Whole configured Python은 기존 collection5 오류로 native2·실행0개이며 PASS가 아니다.
실제 수치는 [verification](verification.md), 물리 모델 차이는
[변경 근거](reference-discrepancy-proposal.md)에 있다. 그 변경안의 energy 미분과 선형
후보 배열의 independent K/S/energy·U/RF/S 수치 관측도 검토했지만 production 채택이나
비선형·동해석 일치 검증은 아니다. 전체 CTest와 남은 동적 원본은 이 bounded 판정 밖이다.
Root 보존 자료는 로컬 `.harness/hex8-evidence/t8-comparator-frozen/`, 독립 full8 원시
재현은 `t8-independent-full8-audit/`, 후보 계산/수식은 `t8-reference-law-investigation/`다.
## 2026-10-10 체적 평균 energy 변경 전 실행 종료와 수식 검토
이후 두 frozen API 원본은 unchanged101 endpoint를 자연 종료(native0)했고, 다섯 공식
CLI도 native0으로 종료했다. 두 동적 공식 HDF5의101-frame precheck는 PASS이나 외부 U는
각각88/101 family FAIL이다. 전체780 CTest는 native8:777 PASS·2 FAIL·1 SKIP이며,
추가163개는 모두 PASS이고 기존 예외의 status·metric body가 동일하다. 상세 raw 경로와
실패 수치는 [verification](verification.md)에 있다. 이 종료 결과는 이전 pointwise 식의
evidence이며 승인된 변경본의 numerical PASS가 아니다.
사용자 B 승인 후 reference-volume 평균 Green trace energy의 독립 정적 수학 검토에서
내력·전체 Hessian, cross-GP `kappa*b*b^T/V` 및 `S*:delta²E` 기하항의 일관성을 확인했다.
직접 F64 mu/kappa를 검증하고 pair로 lift하며, relative kinematics와 같은 Ghat derivative를
쓰는 선택을 확인했다. 이전 affine 응답과의 수학적 일치는 동일 mu/kappa/Ghat 전제다.
실제 rounded cache의 affine completeness와 partition sum을 혼동하지 않는다.
Nonuniform trace·warped weighted mean·node0 방향 미분·LINE/TL zero Hessian·low-only bulk
응답·material 경계·새 spatial/temporal evidence는 변경 구현에서 검증해야 한다.
## 체적 평균 구현의 독립 검토
Frozen `b2abd739`의8개 변경 source/current snapshot/commit blob과141개 종료된 raw
artifact의 hash·size를 독립 대조했다. 두 pass의 weighted trace, node0 상대변위와
동일 Ghat derivative, cross-GP bulk Hessian, `S*` 기하항 및 actual strain의 Cauchy
복구가 승인된 energy와 일치한다. Paired 계산은 같은 연산에서 low 성분을 보존하고
직접 F64 mu/kappa의 동일 lift를 사용한다. LINE zero cache도 같은 Hessian이다.
이전 식에서 실패하는 corrected7-oracle RED와 변경본150/150, 시간수렴4물리 사례,
최종 실제 재컴파일3/3의 native 기록 및 소스 전후 SHA를 확인했다. 최소 u/v/physical a
관측 차수1.98022가 기존 기준1.8을 충족한다. 판정은 이 구현·내부 evidence에 한정한
bounded PASS, 잔여 actionable finding0이다. Root 연결 `18b36c1`의 실제 재컴파일
관련65/65도 native0이다. 전체 CTest·원본 비교의 실제 종료 결과는 [verification](verification.md)을 따른다.
공간수렴은 두 축을 실제로 세분화한 지정 굽힘장의 energy다. 고정 두께/폭2요소의
평형 cantilever 길이 refinement는 tip 추세와 locking 관찰이며 평형해 공간차수를
입증하지 않는다. Brick rank18과 검증된 warped cell은 모든 admissible warped cell의
영공간 보증이 아니다. 원본 modal Value 부재나 기존 전체 회귀 예외는 이 bounded
검토로 없어지지 않는다. 원시 자료는 작성자 worktree의
`.harness/hex8-evidence/mean-volume/frozen-b2abd73/`와 관련 종료 evidence에 있다.
새로 종료한 실제 정적·고유치 실행의 별도 evidence audit에서도 finding0이다. Imported
8개 source가 frozen commit과 같고 root kernel object가 실제 재컴파일됐으며 frozen/current
실행 파일 SHA도 동일하다. 원본13개 및66개 소비 artifact의 전후 SHA를 확인했다.
HDF 실제 배열과 원본 CSV로 정적 보고서의 모든 행·near-zero/relative 분기·오차·RMS를
다시 계산했으며 U1326/RF51/S14400의 실패0과 양쪽 비교 native0을 확인했다. 전체
RF442행의 identity·finite·free RF exact0도 대조했다. Frequency missing Value의
native2·NOT RUN, root65 검사 native0, 새 전체 Python collection5/native2를 정확히
구분했다. 자료는 `.harness/hex8-evidence/mean-volume/final-evidence-audit-static-frequency/`다.
이 evidence audit은 당시 미종료였던 동적·전체787 검사의 판정이 아니며, 이후 종료 감사와 구분한다.
이후 자연 종료한 새 선형 동적 원본도 별도 read-only evidence audit에서 bounded PASS,
finding0이다. CLI/comparator native0, HDF SHA와 원본13 SHA, frozen executable 및31개
소비 artifact의 전후 SHA를 확인했다. 원본44642개 node row, HDF101×442×3 및 비교
보고서133926개 scalar가 정확히 대응하며 누락·중복·비유한 값은0이다. Increment0–100,
CSV decimal time와 HDF `double(n)*h`를 구분해 확인하고 모든 행의 오차·분기·기준·RMS를
재계산했다. 초기 exact-zero family의 relative RMS null은 실패나 누락이 아니다.
101개 family PASS·실패 행0과 [verification](verification.md)의 수치가 일치한다.
자료는 `.harness/hex8-evidence/mean-volume/final-evidence-audit-dynlinear/`다.
비선형 동적·전체787 및 동적 물리 수지는 이 수치 비교 감사 밖이다.
비선형 동적 원본의 종료 evidence도 별도 read-only audit에서 bounded PASS,
finding0이다. 45개 소비 artifact의 전후 SHA와 원본13개 보존, CLI/comparator native0을
확인했다. 모든101 frame·133926 scalar의 시간·identity·finite·오차 분기·기준·RMS를
독립 재계산했으며 누락·중복·실패 행은0이다. 최대 상대 RMS는
0.003133373067174733, 최대 절대 오차는1.3397499223151595e-5이며 초기 exact-zero의
relative RMS null도 확인했다. 다섯 원본 CLI와 queue wrapper의 native0 및 source 전후
동일성을 확인했다. 자료는
`.harness/hex8-evidence/mean-volume/final-evidence-audit-dynnonlinear/`다.
전체787의 종료 판정과 비선형 동적 물리 수지는 이 감사에 포함되지 않는다.
## 변경본 전체 회귀 종료의 독립 감사
실제 unfiltered 전체787 CTest의 종료 raw/native·discovery 및 baseline617개를 별도
read-only 감사했다. configure/build/discovery는 native0, CTest는 native8이며
784 PASS·기존 Shell FAIL2·C04a SKIP1이다. 이름·기존 상대순서·각 discovery와 실행
ordinal·status를 대조했고 추가170개 모두 PASS·뜻밖 예외0을 확인했다. 두 실패의
전체 출력은 elapsed-ms 표기만 제외해 정확히 같아 실패 내용과 metric도 동일하다.
SKIP 상세 출력은 baseline에 없어 NOT VERIFIED다. 소비22개 artifact SHA를 전후
대조했고 실제 세 테스트 실행 파일의 중간 관측·종료 SHA도 동일하다. 이를 실행 전
binary hash라고 표현하지 않는다. 감사 native0·finding0, bounded evidence PASS다.
원시 자료는 `.harness/hex8-evidence/mean-volume/final-evidence-audit-full/`에 있다.
판정은 종료 evidence의 일관성·새 회귀 없음에 한정하며 전체 green·release 또는
미제공 modal Value의 통과 판정이 아니다. 실제 원본의 독립 물리 수지 범위는
[physics review](physics-review.md)를 따른다.