Files
FESADev/docs/hex8-structural-analysis/numerical-review.md
T
2026-10-10 01:29:22 +09:00

11 KiB
Raw Blame History

Hex8 독립 수치 검토

검토 대상은 PRD, formulation, numeric controls, I/O, reference mapping이다. 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과 실제 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로 적지 않는다.