Files
FESADev/docs/hex8-structural-analysis/numerical-review.md
T
KOKO\Mimi eaa5cbeb21 feat: adopt lumped mass and reduced-coordinate shell HHT
Integrate Hex8 mass verification and fixed-null-basis shell dynamics with numerical and physics handoff evidence. Preserve interrupted reference and full-validation status; full integration validation is deferred until after performance optimization.
2026-10-13 16:57:19 +09:00

488 lines
38 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 독립 수치 검토
2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다.
검토 대상은 [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)를 따른다.
## 2026-10-11 제공 modal 원본의 독립 검토
제공된 `hexa_freq.txt`의 직접 읽기와 root 비교기 diff를 작성자와 독립적으로 검토했다.
새 TXT parser·실제 frequency 분기·원본 raw hash/보고서 보호·mode1–10 일대일 대응·반복
고유치 보존·유일한 source Step-1 binding·HDF5 quantity/unit/dtype/finite가 bounded PASS다.
영향 Python native0·JUnit136 PASS(95 Hex8/41 HHT)도 closed artifact로 확인했다.
원본14개를 포함한23개 소비 artifact의 SHA를 검토 전후 대조했고 모두 동일하다.
독립 audit native0·finding0은 비교 코드와 증거의 일관성 판정이다.
실제 λ 오차와 공통 row5%/singleton RMS1%를 독립 재계산한 결과 mode3/4/5/6/7/9/10의
7개 family FAIL을 재현했다. 최대 mode5는 원본52797 대 FESA63489.09126468376,
relative RMS0.20251323493160142다. `Value`와 `Freq`의 각 decimal 표시 해상도 구간에서
`f=sqrt(lambda)/(2*pi)` 관계는 일관되지만 이 보조 검토의 구간을 비교값 보정이나 tolerance로
사용하지 않았다. 동일 mode ID의 출력 값 그대로 판정했고 frequency로 바꾸지 않았다.
공식 readback의24 returned pairs와 선택10개, 저장된 original-pencil verification도 확인했다.
이는 FESA 자체 pencil의 검증량 확인이며 새 matrix 조립·eigensolve나 Gram 독립 재계산을
수행했다고 주장하지 않는다. 원본 λ만으로 K/M 중 원인을 특정할 수 없고, 원본 mode shape·
modal mass·실제 element/mass law 또는 operator evidence 없이 수식·질량·기준 변경을
정당화하지 않는다. 최종 기능 완료는 필수 modal 불일치 해결까지 대기다.
자료는 `.harness/hex8-evidence/mean-volume/modal-final/independent-result.json`,
`independent-native.json`, `independent-inventory.json`, `independent-audit.py`다.
결과 JSON SHA는 `48c359cf670f9e39792cf58bbe5d7498effabcfd5789c3025904ac8562af5e99`다.
전체 C++ 회귀는 직전 `18b36c1` 실행 기록을 참조했고 이번 새 실행으로 표현하지 않았다.
## 2026-10-11 원본 질량 분리 진단의 독립 검토
후속 [질량·요소 조사](reference-mass-investigation.md)의4way 계산을 독립 검토했다.
Fresh engineering shear B/Cdev·체적 평균 coupling·consistent 적분과 full 행 합 lumping 뒤
free restriction의 의미가 맞다. 저장된 두 K·두 M·고유벡터에서 같은 source mode별 오차,
총질량과 자체 residual·Gram을 독립 재계산했다. Audit native0·finding0, 소비자료 SHA 불변이다.
Mean K+consistent M은 실제 FESA λ를 상대차이4.57e-12로 재현하고, mean K+lumped M은
원본10개 λ 모두 상대차이0.00196105% 이내다. 이는 질량 선택 차이를 설명하는 강한 근거다.
원본 actual operator 직접 대조나 재조립/eigensolve를 수행했다고 주장하지 않는다.
진단 script의 `max_eta_r`는 infinity-norm backward residual이다. 공식 T5의
Euclidean/Frobenius eta_r와 이름만으로 동일시하지 않으며 두 규격을 별도 재계산했다.
후자의4조합 최댓값은3.79e-15 이하, Gram Frobenius 오차는3.36e-15 이하다.
Private eigsh의sigma0/k10 결과는 실제 FEAST lowest-N count/completeness 인증이 아니다.
현재 FESA mass 정책이나 실제 modal FAIL은 변경하지 않았다.
자료는 `.harness/hex8-evidence/mean-volume/modal-mass-investigation/independent-result.json`과
같은 폴더의 native/audit에 보존한다. 상세 원본·문서·metric·채택 경계는 위 조사 문서를 따른다.
## 2026-10-11 row-sum lumped production 채택의 독립 검토
[HEX8-ADR-010](ADR.md)에 따라 변경된 `ComputeMass`와 eigen/HHT oracle·metadata를
읽기 전용으로 검토했다. Full reference consistent24×24를 기존8점으로 계산한 뒤
각 전체 행 합을 대각에 저장한다. BC는 이후 procedure에서 적용되므로 구속 열의
질량을 잃지 않는다. Positivity/finite 실패를 값 보정으로 숨기지 않으며 stiffness,
high+low 상태·계수 lifting·HHT gate를 변경하지 않는다.
**HEX8-LM-NR-001 — CLOSED: dense eigen oracle의 BC 순서.** 최초 oracle는
full_mass를 free×free loop 안에서만 채워 constrained 열을 누락했다. 독립 검토에서
이를 지적했고, 전체24 DOF의 독립 closed-form consistent 행렬 생성→full row sum→
free restriction으로 수정된 코드를 확인했다. 새 실행 검증은 전체 회귀 결과와 구분한다.
수정 전 binary의 부분 실패/중단은
`.dryforge/lumped-mass-adoption-20261011/focused-interrupted.json`에 보존한다.
Warped fixture의 독립 map은
`X=(xi+.12*eta*zeta, 2*eta+.09*xi*zeta, 3*zeta+.15*xi*eta)`다. 직접 전개한
detJ는 `6-.0135*xi²-.036*eta²-.0324*zeta²+.00324*xi*eta*zeta`로 신규 oracle와
일치한다. rho2의 절점 질량은 `11.9454±.00024`이며 부호는 `sx*sy*sz`다.
Ni*detJ의 축별 차수는3 이하라 기존2점 rule과 독립3점 적분이 수학적으로 일치한다.
비균일 속도 `v_ax=a+1`에서 uniform rhoV/8 shortcut의 T와 차이는 −.00192이므로
새 검사는 총질량만 같은 잘못된 uniform lumping도 구별한다.
Mass lower bound `rho*min(w)/27`는 계속 보수적으로 사용할 수 있다. 양의 shape와
weights에서 `M_L-M_C`의 quadratic form은 절점 속도 차이 제곱의 양의 합이다.
따라서 기존 consistent SPD lower bound는 lumped에도 유효하다. 추가 full-row 양의
합산은 고정 순서이며 기존512eps element/assembly budget과 비교했다. 새로운 기준
완화나 eigen upper-bound를 diagonal ratio로 대체하지 않았다. 비트 수준의 PSD나
수학적 lower bound만으로 실제 solver 검증을 대신한다는 의미는 아니다.
Fresh production **MSVC x64 Debug** `hexa_freq` CLI native0와10개 Value 비교를
독립 확인했다. 원본 TXT와 HDF5 mode1–10으로 singleton 행/RMS를 직접 재계산했으며
공통 row5%/RMS1%로 모두 PASS다. 최대 상대 RMS는 `1.961049613524256e-5`
(0.001961049613524256%)이다. 원본·byte 동일 입력 복사본·binary·HDF5 해시와
`lumped-reference` metadata를 대조했고 소비 artifact SHA는 검토 전후 동일했다.
저장된25 returned pairs의 max eta_r/eta_norm/eta_energy는 각각
`1.0554551422827935e-17 / 4.440892098500626e-16 / 7.476286423773325e-19`,
eta_gram/max_eta_orth는 `4.379426909390015e-15 / 1.0729264698916552e-15`다.
이는 저장된 original-pencil checks의 판독이며 reviewer가 production K/M을 새로
조립하거나 eigensolve/count certification을 독립 수행한 것은 아니다.
Bounded audit native0·finding0 자료는
`.dryforge/lumped-mass-adoption-20261011/references/hexa_freq/independent-adoption-audit.json`이다.
결과 HDF5 SHA는 `94a576bbfe1d5826235a6323e6d470163ed2e970c4fe6f65a86b2d65a3db7f8a`다.
전체 Debug/CTest와 정적2·동적2 원본의 새 종료 evidence는 아직 검토하지 않았다.
현재 상태는 [PRD](PRD.md)의 checklist를 따른다. 이 bounded modal PASS를 동적
시간수렴·전체 green·기능 완료로 확대하지 않으며 이전 consistent modal FAIL은
해당 질량 선택의 이력으로 보존한다. Reviewer는 코드·테스트·상위 계약을 수정하지 않았다.
### 2026-10-12 종료된 검증 근거의 보완
수정된 dense oracle를 포함한 새8 suites/38 C++ tests의 전체 PASS/native0를 확인했다.
Warped nodal mass·비균일 energy, full-row lumped pencil, one-free-DOF/구속 경계의
관성 반력, 독립 scalar/3DOF brick oscillator 시간수렴 및 HDF5 readback이 포함된다.
이 실행은 수정 전 focused binary의 부분 실패/중단을 새 결과와 분리한다.
별도 `python-focused.log`의 pytest137 PASS도 확인했다.
종료된 원본 comparison의 모든 보고 scalar에서 reference-only scale, near-zero,
row5%/RMS1%, exact-zero 분기와 최종 판정을 직접 재계산했다. U는 HDF5 source
node/frame 값에도 대조했으며 input/native record/binary/HDF5/원본 hash와
`lumped-reference` metadata를 확인했다. RF/S는 보고된 scalar 수치·identity/hash
감사이며 별도 stress/reaction recovery oracle를 새로 실행했다는 뜻은 아니다.
| 종료된 원본 | 실행 구성 | 확인한 families/scalars | 최대 상대 RMS |
| --- | --- | ---: | --- |
| hexa_linearstatic | MSVC x64 Debug | 3 / 15777; U/RF/S 모두 PASS | U `9.31789815437491e-9`, RF `7.309816326722838e-9`, S `3.42593423675143e-9` |
| hexa_nonlinearstatic | MSVC x64 Debug | 3 / 15777; U/RF/S 모두 PASS | U `2.169911561350721e-7`, RF `6.728092996221333e-6`, S `9.338899878251489e-6` |
| hexa_freq | MSVC x64 Debug | 10 / 10; Value 모두 PASS | `1.961049613524256e-5` |
| hexa_dynlinear | MSVC x64 Release, current production | 101 / 133926; U 모두 PASS | `3.618821318800423e-7` |
| hexa_dynnonlinear | MSVC x64 Release, current production | 101 / 133926; U 모두 PASS | `2.1555860391237846e-6` |
각 CLI native0를 확인했다. Dynamic release의 raw recorder에 보존된 folder label은
각각 `hexa_dynlinear-release`와 `hexa_dynnonlinear-release`다. Byte 동일 INP stem으로 논리 case를 연결한
`comparison-execution.json`의 raw-record hash와 실제 command를 대조했으며 원시
기록을 수정하거나 다른 입력으로 치환하지 않았다. Debug와 Release 검증을 혼합해
전체 Debug 통과로 표시하지 않는다.
Bounded 감사 native0·finding0 자료는
`.dryforge/lumped-mass-adoption-20261011/independent-closed-evidence.json`이다.
필수 원본5개의 외부 비교는 위 구성에서 모두 PASS이며 새 전체 Debug/CTest는
실행 중으로 최종 검토 대기다. 이 두 Release 동적 비교를 Debug 원본 통과로 표시하지 않는다.
기존 `execute.py` 중단 native−1과 serial 직접 전체789 CTest의 진행 상태를 구분한다.
현재 전체 green·시간/물리 검증 완료·기능 완료 판정은 하지 않는다.
후속 serial 전체 실행에서 기존 Shell C08a 시간수렴 test의 current lumped FAIL을
확인했다. Assertion 구성5개는 baseline과 같으나 실제 metric은 변했다. Finest
회전 가속도 error `5.6747291267426469e-4`와 두 raw order 약1.02838/1.02946은
기존 기준 미달이며 N7 noise 분리도 미충족이다. 상세 대조는
[HHT 독립 검토](../hht-implicit-dynamics/implementation-numerical-review.md)의
2026-10-12 current C08a 절을 따른다. 이는 Hex8 원본5개의 bounded 외부 비교 PASS와
구분하며 전체 회귀 green으로 승격하지 않는다. C08b 및 전체 종료는 아직 대기다.
Current shell C08b도 종료됐으며 **FAIL**이다. h=1/64·1/128 완료 뒤 세 번째
h=1/256 grid에서 principal rotation 입력 gate의 runtime 예외로 중단했다.
5 grids를 완료한 뒤 accuracy assertion이 실패했던 baseline과 다른 결과다.
실패 Newton trial의 근본 원인은 추가 진단이 필요하며, 이것을 외부 U PASS나
Hex8 physical mass/invariant 검사로 닫지 않는다. 종료 body/source 경로와 별도의
unused manufactured force-rate 병진 oracle 오류는
[HHT 독립 검토](../hht-implicit-dynamics/implementation-numerical-review.md)의
2026-10-12 current C08b 절을 따른다. 전체789 CTest의 종료 판정은 여전히 대기다.
후속 HHT-LM-NR-002 병진 force-rate oracle 오류는 두 계수 수정과 private Debug
RED(native1)/GREEN(native0)·pointwise(native0) 근거로 닫혔다. 상세와 shared 전체
binary 재빌드 범위는 같은 HHT 독립 검토의 force-rate oracle 수정 절을 따른다.
C08b runtime finding과 C08a 시간정확도 실패를 해소한 결과는 아니다.
후속 private C08b trace는 h=1/256, increment56, Newton iteration3,
t=0.21875에서 internal node4의 finite total rotation norm
`3.8630136368942867 rad>pi`를 직접 확인했다. 따라서 immediate principal-chart
이탈은 확정됐으나 큰 Newton trial의 근본 원인은 미확정이다. 상세 identity와
evidence 경계는 HHT 독립 검토의 C08b private trace 절을 따른다. 해당 finding은
OPEN이며 source/tolerance 변경이나 추가 실행으로 전체 PASS를 주장하지 않았다.
### 2026-10-12 전체 실행에서 추가 발견한 두 stale fixture
Active serial 전체 로그에서 앞의 shell C08a/C08b 외에 test93
`RejectsOverflowingOriginalPencilValidationScale`와 test238
`SolidBindingPreservesThreeComponentsAndReferenceMass`의 FAIL을 확인했다.
따라서 현재 확인한 실패는4개이며 앞의 두 shell 실패만으로 전체 결과를 요약할 수
없다. 전체 실행은 아직 종료하지 않았고 최종 native/집계는 대기다. 기존38-case
focused filter에는 이 두 cases가 없었으므로 당시 PASS는 해당 coverage가 아니다.
**HEX-LM-NR-001 — source corrected, focused execution pending: overflow fixture.**
E=3e306, rho=2, axis half-lengths=(1,2,3), nu=.25에서 새 `M_L=12*I24`다.
독립 tensor-polynomial K 적분과 normalized dense eigensolution으로
`||K||F/E=9.235553192303684`, `||K||inf/E=9.755555555555556`,
`max|Kij|/E=1.4037037037037037`, `lambda_max/E=0.6304620575193911`을 얻었다.
`||M||F=58.78775382679627`이므로 최대 mode의 validation matrix scale은
`46.29900142688912*E`다. 기존3e306은 이 scale도 finite여서 성공 반환이
production guard 오류라는 근거가 없다. Consistent 당시 all-odd Walsh mode의
overflow 가정은 채택된 lumped fixture에서 유지되지 않는다.
| 독립 산술량 | E=3e306 | 제안·수정한 E=4e306 |
| --- | ---: | ---: |
| 최대 local K entry | `4.211111111111111e306` | `5.6148148148148146e306` |
| lambda_max | `1.8913861725581735e306` | `2.5218482300775645e306` |
| `||K||F` | `2.770665957691105e307` | `3.6942212769214736e307` |
| `lambda_max*||M||F` | `1.111903447037563e308` | `1.4825379293834174e308` |
| 위 두 scale의 FP64 합 | `1.3889700428066735e308`, finite | nonfinite |
| `||K||inf/(4/9)` | `6.585000000000001e307` | `8.780000000000002e307`, finite |
Matrix-scale overflow의 경계는 E 약`3.882790296678553e306`이며 raw enclosure
division의 경계 약`8.189945944703032e306`와 분리된다. 기존 mass roundoff guard의
작은 차감은 후보4e306의 enclosure 여유를 뒤집지 않는다. 따라서 E만4e306으로
바꾸면 local K·lambda·enclosure를 finite로 유지하면서 기존 original-pencil
nonfinite-scale gate를 실제 자극한다. 이는 현재 연산 순서의 intermediate
matrix-scale overflow 검사이며 물리 eigenvalue 자체가 무한이라는 주장이 아니다.
Owner가 E 한 값과 highest-mode 주석을 수정했다. 실제 candidate FEAST/guard 실행은
아직 확인하지 않았고 diagnostic code·기존`1e-10`·finite gate를 바꾸지 않는다.
**HEX-LM-NR-002 — source corrected, focused execution pending: factory oracle.**
단위 cube·rho2의 full-row lumping은24 diagonals 각각0.25, offdiagonals exact0,
한 병진방향 total mass2다. 실행 body의 `M(0,3)=0`은 이 계약과 일치한다.
기존 test의 consistent `2/54` 기대가 잔존했다. Owner는 diagonal 기존 absolute
`1e-15`, total 기존`1e-13`을 유지하고 모든 offdiagonal을 exact0로 검사하도록
수정했다. 비교 기준을 완화한 수정이 아니다. Factory 생성·source identity/DOF
검사와 zero linear response도 보존된다.
닫힌 두 실패 body와 독립 산술/source hash 자료는
`.dryforge/lumped-mass-adoption-20261011/independent-hex8-stale-fixture-review.json`이다.
현재 공유 전체 binary에는 후속 test-only 수정이 반영되지 않았다. 종료 뒤 rebuild와
focused 실행 전까지 이 두 findings의 실행 폐쇄를 주장하지 않는다. Required Hex8
원본5개의 bounded 외부 PASS와 새 전체 회귀 FAIL/진행 상태를 구분한다.
### 2026-10-12 최종 종료 로그와 fixture 폐쇄
전체 serial MSVC x64 Debug CTest가 자연 종료했다. 원시789개 결과를 직접 재집계하고
summary/native/hash에 대조하여 **784 PASS / 4 FAIL / 1 SKIP, native8**을 확인했다.
Elapsed는9131.26초다. FAIL은 shell C08a, shell C08b, 위 overflow fixture,
factory fixture이며 SKIP은 `C04aFinestReductionComparisonIsNumericallyResolved`다.
이로써 전체 실행 대기는 종료된 **FAIL**로 갱신된다. 원래4개의 실패 body와
skip을 삭제하거나 후속 성공으로 소급 변경하지 않는다.
**HEX-LM-NR-001 및 HEX-LM-NR-002 — CLOSED.** 공유 binary의 최종 rebuild native0
이후 configured CTest에서 E=4e306 original-pencil nonfinite guard와 updated
factory full24 diagonal/offdiagonal 검사2개가 모두 PASS/native0다.
`final-stale-fixtures.log` 및 native 기록으로 실제 configured 실행을 확인했다.
새 HHT force-rate derivative와 기존 pointwise oracle2개도 별도 configured
CTest에서 PASS/native0다. 이 후속4개는 이전 shared binary의 전체789 실행과
구분한다. 최종 discovery790을 확인했지만 **전체790은 재실행하지 않았다.**
전체 전후 production190 files와 original reference16 files의 동일 inventory/hash를
대조하고 현재 파일도 전부 재해시했다. 최종 unit binary SHA는
`4e39c8992a527366e66ea295bf4598a068ca44456fc32c1ab973d2376759c11a`이며 actual
파일과 manifest가 일치한다. `final-oracle-identities.json`의 force-only note는
실제3개 test TU 변경을 모두 기술하지 못한다. 원시 note를 변경하지 않고 별도
`final-test-identities.json`이 누락을 명시 정정했으며3개 source·record hash도
독립 확인했다. Production·원본·tolerance/gate 변경을 후속 test 수정에 섞지 않았다.
닫힌 전체/focused/identity 감사는
`.dryforge/lumped-mass-adoption-20261011/independent-final-regression-review.json`이다.
Hex8의 두 stale fixture findings는 폐쇄됐지만 HHT C08a 정확도/noise 문제와
C08b principal-chart Newton failure는 **OPEN**이다. Final focused4 PASS를
전체 green이나 shell 시간정확도 해결로 확대하지 않는다. Reviewer는 추가
build/test·source 수정 없이 읽기 전용 감사와 보고서 정적 검토만 수행했다.