docs(hex8): record comparison evidence and reference options

This commit is contained in:
KOKO\Mimi
2026-10-10 02:15:30 +09:00
parent 317fe5caf6
commit 7b75f37462
9 changed files with 221 additions and 14 deletions
@@ -15,6 +15,8 @@ static/frequency/HHT 절차를 추가한다. 코드 존재와 기능 검증 완
| [io](io.md) | 입력 의미·typed 경계·공식 결과 metadata/units·진단 |
| [numeric controls](numeric-controls.md) | 수치 scale·zero branch·tuning·독립 검사 기준 |
| [reference model](reference-model.md) | read-only 원본 inventory·quantity/key/point/time mapping |
| [verification](verification.md) | 비교 도구 사용·공식 원본 비교·Python 검사 결과와 한계 |
| [reference discrepancy proposal](reference-discrepancy-proposal.md) | 미채택 체적 정식화/reference 변경안·실제 불일치와 선형 후보 관측 |
| [numerical review](numerical-review.md) | 작성자와 독립된 정식화/controls 검토의 결과 |
| [lessons](lessons.md) | 정밀도 손실·수렴 실패와 수정의 근거 및 재사용할 주의점 |
| [precision proposal](precision-proposal.md) | 승인된 내부 정밀도 변경안·결과 의미·구현 전 검증 범위 |
+8
View File
@@ -462,3 +462,11 @@ native CTest exit0이며 독립 수치 검토를 통과했다. 두 정적 원본
이 범위의 완료와 외부 비교·최신 전체 회귀는 구분한다. 실행 방법은 [README](README.md),
세부 근거와 한계는 [수치 검토](numerical-review.md)에 있다.
원본 frequency 결과 부재는 구현 진행을 막지 않지만 기능 검증 완료를 막는다.
비교기 `317fe5c`는 원본 identity·schema·finite·허용오차·원본 덮어쓰기 보호의 독립 검토와
관련124/124 Python 검사(native0)를 통과했다. Root 연결 후 같은 관련124/124도 native0이며
정적 수치 실패와 modal NOT RUN을 재현했다. 두 정적 원본은 실제 CLI native0이지만
U/RF/S 필수 비교는 모두 FAIL이다. 고유치 공식 readback은 검사했으나 원본 Value 부재로
비교는 NOT RUN이다. [verification](verification.md)의 metric과
[미채택 변경안](reference-discrepancy-proposal.md)을 구분한다. 별도 선형 Python 후보의
수치 일치는 현재 구현의 PASS가 아니다. Source `1eb9cdd`의 전체 build는 native0이고
780개 CTest는 진행 중이다. 종료 전 checklist를 통과로 바꾸지 않는다.
+17
View File
@@ -272,3 +272,20 @@ Root 연결의 related49/49와 두 brick의 LIN/TL 전체 low 직렬/TBB 일치1
최초 broad filter가 긴 전체 원본 smoke를 함께 선택한 실행은 의도적으로 중단했고
CTest exit−1로 보존했다. 완료하지 않은 실행을 수렴 실패로 해석하거나 현재 PASS에 합산하지
않는다. 공식 출력·101 endpoint·원본 비교·전체 회귀는 후속 검증이다.
## 점 수와 체적 정식화를 구분하기
실제 두 정적 원본은 CLI/schema 성공 뒤 U/RF/Gauss S가 모두 외부 기준에 실패했다.
Source identity와 point mapping을 확인하고 독립 표준 full8 조립/solve·회복을 대조한
결과 현재 구현은 승인된 수식과 일치했다. 같은8점이라는 이유로 Abaqus C3D8의 체적
처리까지 같다고 가정하면 차이를 입력 오류나 rounding으로 잘못 분류할 수 있다.
전체 요소의 원본 변위·응력을 사용한 hydro/dev 분리와 reference-volume 평균의 별도
energy/Hessian 후보가 차이를 설명하는 근거다. Stress만 평균화하거나 tolerance를 늘리는
수정은 energy/force/tangent 계약을 깨거나 실제 모델 차이를 숨긴다.
후보의 선형 수치 관찰과 production·비선형·동적 PASS를 분리해야 한다.
실제 metric과 미채택 선택지는 [verification](verification.md)·[변경안](reference-discrepancy-proposal.md)에 있다.
비교 도구의 `--references` 변경은 원본 보호 기준을 좁히지 않아야 한다. Report와
source/result의 hardlink·symlink alias도 보호하고, 잘못된 HDF rank는 failed precheck로
기록해야 한다. Source path는 writer와 같은 lexical 정규화를 사용하며 물리적 symlink
대상으로 identity를 바꾸지 않는다. 이 세 문제는 안전한 behavior RED와 최종124개 검사로 확인했다.
@@ -131,3 +131,30 @@ reaction, typed/HDF5·failed accepted 보존에는 문서 수식의 추가 block
이 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/`다.
@@ -71,3 +71,23 @@ high/low 재생값도 일치했다. LIN/TL 최대 절대차는1.19926e-29/2.9634
이 검사는 적분점의 확인이며 전체 cell 양성 인증의 독립 재검증을 대신하지 않는다.
Reviewer의 최종 판정은 frame0–3에 한정한 물리 PASS, blocker0이다. 별도 cache raw42개의
hash와 크기는 메인이 대조하고 `reference-cache-frozen/`에 보존했다.
## 실제 선형 정적 원본의 독립 평형과 구성식 대조
공식 CLI 결과 `e2c3c5b`를 기존 원본 형상·BC·하중으로 별도 standard full8 조립/solve했다.
Native 변위와 독립 해의 상대 최대차1.75e-11, 자유 잔차/하중5.15e-12,
구속 RF 최대차4.07e-10 force, stress 최대차4.01e-7 stress-unit,
strain 최대차1.51e-18이다. Energy178.762694318679와0.5F·u178.762694317263은
상대차 약7.92e-12다. Force·reference-arm moment와 free RF exact0도 별도로 관찰했다.
이는 정적 해의 독립 물리 진단이며512eps 동적 invariant gate 통과를 새로 주장하는 것이 아니다.
원본 CSV 변위를 같은 승인된 full8 K에 대입한 자유 잔차 최대값은87147.6514 force,
0.5u·Ku와0.5F·u의 상대차는 약4.72%다. 원본이 다른 체적 모델을 쓰는 경우 이 대입은
그 모델의 평형 검사가 아니므로 원본 오류로 단정하지 않는다. 요소 평균 trace를 사용한
별도 선형 energy 후보는 U/RF/S와 매우 일치했다. 원본·현재 구현·후보 계산의 scope를
[변경안](reference-discrepancy-proposal.md)에서 분리한다. 이 조사로 현재 필수 비교 FAIL,
후보 비선형·고유치·동해석 미검증이나 원본 Value 부재를 없애지 않는다.
원시 재현 script/stdout/JSON·native exit와7파일 전후 SHA는 로컬
`.harness/hex8-evidence/t8-independent-full8-audit/`에 있다. Solver 재실행 없이 기존
결과를 재분석했으며 production/reference를 수정하지 않았다.
@@ -0,0 +1,103 @@
# 정적 원본 불일치와 변경 선택지 — 미채택
현재 승인된 표준 full8 정식화·전체 high+low 물리 상태·원본·수치 기준은 유지한다.
이 문서는 사용자 결정용 변경안이며 [PRD](PRD.md)나 [ADR](ADR.md)를 대체하지 않는다.
현재 공식 결과의 실제 비교는 [verification](verification.md)에 있다.
## 확인한 차이
선형·비선형 정적 원본의 CLI는 native exit0으로 종료했다. Byte-identical scratch input,
원본13개의 SHA, source step/factor1,442절점·300요소·51구속, source IntPt1–8,
형식·좌표·tensor·finite 검사도 통과했다. 두 경우 모두 U/RF/S가 공통 RMS1%를 초과했다.
| 실제 공식 결과 | U RMS/S | constrained RF RMS/S | S RMS/S |
| --- | ---: | ---: | ---: |
| 선형 정적 | 0.01673952 | 0.06818893 | 0.04270903 |
| 비선형 정적 | 0.01673779 | 0.06818993 | 0.04270851 |
선형 독립 표준 full8 조립·solve는 현재 변위와 상대 최대차1.75e-11로 일치했다.
같은 식의 응력 복구 최대차는4.01e-7 stress-unit, 자유 잔차/하중은5.15e-12다.
반력·일과 에너지를 별도로 대조했으며 source mapping 오류는 발견하지 않았다.
원본 변위를 같은 표준 full8 식에 대입하면 자유 평형 잔차가 크다. 이는 원본이 다른
체적 처리 모델과 일관될 수 있다는 관찰이며 원본이 잘못됐다는 판정은 아니다.
원본 변위에서 점별 deviatoric strain은 유지하고 체적 trace만 요소의 reference-volume
가중 평균으로 계산하면 원본 응력의 최대차가 약1.054e6에서44.15 stress-unit으로 줄었다.
[Abaqus 공개 Theory Guide](https://docs.software.vt.edu/abaqusv2025/English/SIMACAETHERefMap/simathe-c-solidisoquadhex.htm)는
fully integrated 8절점 요소의 체적 항 평균화를 설명한다. 점 수8만으로 승인된 비수정
pointwise full8 식과의 동등성을 추론할 수 없다. 읽은 공개 자료는2025이며 원본 CAE2024의
정확한 revision이나 ODB 출력 precision을 확인한 것은 아니다.
## 선택 A — 현재 정식화 유지와 별도 reference
현재 energy/force/tangent/recovery·consistent mass·절차를 유지한다. 동일한 비수정
8점 규칙·구성식·하중·구속·복구량 의미를 명시한 독립 reference를 별도 경로에 준비한다.
FESA 결과를 reference로 복사하거나 기존 원본을 변경하지 않는다.
필수 reference 지위를 바꾸면 비교 계약 변경이 필요하다. 현재 불일치 원본을 diagnostic으로 보존하고
새 자료를 필수 reference로 지정할지, 현재 필수 지위를 유지해 완료를 계속 보류할지
사용자가 결정한다. 새 자료의 경로·quantity·시점·단위·hash와 독립성을 확인하기 전에는
필수 비교 PASS가 아니다. 외부 solver 실행이나 reference 생성은 별도의 명시 범위다.
## 선택 B — Green strain 체적 평균 energy 도입
8개 reference Gauss 점과 그 가중치 w_g, 실제 F_g·Green strain E_g를 유지하고
체적 energy만 다음 요소 전체 항으로 정의한다. mu와 kappa는 기존 shear·bulk 계수다.
```text
V = sum_g(w_g), theta_bar = sum_g(w_g * trace(E_g)) / V
U* = sum_g(w_g * mu * dev(E_g):dev(E_g)) + kappa * V * theta_bar^2 / 2
S*_g = 2*mu*dev(E_g) + kappa*theta_bar*I
P*_g = F_g*S*_g, Cauchy_sigma_g = F_g*S*_g*transpose(F_g)/det(F_g)
f = dU*/du, Kt = d²U*/du²
```
체적 항의 material Hessian은 서로 다른 Gauss 점의 coupling을 포함한다. 방향 p/q에
대해 Z_g[p]=sym(F_g^T D_g[p]), D_g[p]=sum_a(p_a tensor G_ag)라 두면 체적 항은
`(kappa/V)*sum_g(w_g*trace(Z_g[p]))*sum_h(w_h*trace(Z_h[q]))`다.
Paired 경로의 G_ag는 [precision formulation](precision-formulation.md)의 동일 Ghat derivative다.
Deviatoric material 항과 S*의 geometric 항도 같은 energy에서 미분한다. Stress만
평균화하거나 기존 point-local tangent를 그대로 쓰면 이 energy의 내력·접선이 아니다.
선형은 같은 energy의 zero-state Hessian을 쓴다. 비선형은 TL·실제 Green strain을
유지하고 새 energy의 내력·Kmat/Kgeo/Kt를 쓴다. 실제 Green strain을 출력하되 stress는
같은 point strain만의 기존 StVK law가 아닌 요소 평균에 의존한다는 의미를 명시한다.
Reference consistent M과 기존 HHT·strict gate·100회 제한·Float64 결과 반올림 의미는 유지한다.
평균·내력·접선·복구의 paired 경로까지 변경해야 하며 eigen과 두 HHT의 강성도 달라진다.
후보 B의 **선형 한 사례만** private NumPy/SciPy로 독립 조립·solve했다. 실제 원본
구속·하중과 unchanged reference-only row5%/RMS1% 정책을 사용한 수치 관찰이다.
| 후보 선형 계산 | row 실패/전체 | RMS/S | 최대 절대차 |
| --- | ---: | ---: | ---: |
| U | 0/1326 | 9.317914e-9 | 6.096814e-11 length |
| constrained RF | 0/51 | 7.309763e-9 | 0.01474826 force |
| S | 0/14400 | 3.425947e-9 | 0.1224464 stress |
관찰한300 local matrix의 numerical rank는18,1275 free matrix의 numerical rank는1275이며
Cholesky가 성공했다. Rank는 spectral threshold를 사용한 관찰이다.
후보 평형·에너지·독립 stress→force를 대조했다. 이는 production 구현·공식 HDF5 비교나
모든 형상의 안정성 증명이 아니다. 비선형·고유치·동해석의 원본 일치는 아직 입증하지 않았다.
이 모델은 평균 Green trace를 사용하며 공개 finite Fbar와 다르다. Fbar의 평균 determinant,
수정 F와 dev 구성식까지 재현하려면 별도의 선택·변분·paired 산술·복구량 계약이 필요하다.
공개 Abaqus 유한변형 알고리즘의 동등성을 이 선형 결과로 주장하지 않는다.
## 변경 후 필요한 검증과 결정 경계
B를 선택하면 static/frequency/LIN·TL HHT 전체에 동일 energy를 적용하는 범위와 복구량
의미를 feature 계약에 기록한 뒤 구현한다. Independent U→f→Kt 방향 미분, cross-GP 항,
distorted patch·6 rigid modes·큰 회전 객관성, extra-null/conditioning·공간수렴,
consistent M·반력·work/energy·운동량, 모든 low 전달·rollback·시간수렴을 검증해야 한다.
모든 원본을 새 구현으로 다시 비교하고 최신 전체 MSVC Debug 회귀를 수행한다.
이미 종료된 현행 구현의 evidence를 변경본의 PASS로 재사용하지 않는다.
A/B 어느 선택도 원본·tolerance를 보정하지 않는다. 공개 Fbar 자체를 목표로 하려면
별도 정식화 조사를 선택해야 한다. 고유치 원본 Value 부재와 기존 Shell 회귀 문제도 별개로 남는다.
Physics·필수 reference 지위 변경은 사용자 결정 전에는 적용하지 않는다.
원시 독립 표준 full8 audit는 로컬 `.harness/hex8-evidence/t8-independent-full8-audit/`,
체적 조사·후보 수식·한 번의 선형 계산과 SHA는
`.harness/hex8-evidence/t8-reference-law-investigation/`에 보존했다.
독립 numerical review는 후보 energy의 first/second variation과 한 선형 후보의
cross-GP K·응력·에너지·수치 정책 관측을 확인했다. 후보 채택·production 검증은 아니다.
+19 -6
View File
@@ -116,13 +116,26 @@ Official result SHA256 values are
`3ef92c35ea83ddb4d11437ff87ef15eca7dac179d378eda19570abae579b09d0` (linear),
`0095ebf2d360a8bd8a71212af0dd500ed611a56540a173a39d9c8d88d8e05bbf` (nonlinear),
and `0ec4d2b09250bab17a8532228cd34a312518c04023076f971e929b387031c6b3` (frequency).
Scratch input paths are
`C:/git/FESADev/.harness/hex8-evidence/t8-original-cli/<case>/<case>.inp`.
Each exact command, closed native exit and full row report is retained under
`C:/git/FESADev/.dryforge/worktrees/hex8-t8-reference/.harness/hex8-evidence/t8/official-comparisons/<case>/`.
Scratch inputs are retained under
`.harness/hex8-evidence/t8-original-cli/<case>/<case>.inp`.
Root preserved each exact command, closed native exit and full row report under
`.harness/hex8-evidence/t8-comparator-frozen/official-comparisons/<case>/`.
The command records identify the actual scratch input, original reference directory,
HDF5 and closed native CLI record consumed. Comparator implementation review and
remaining naturally completed dynamic originals are tracked separately.
HDF5 and closed native CLI record consumed. The frozen author revision
`0b93c0c59cf64db44003ebe5217a4efb8307a8ba` passed independent bounded review
and was integrated as `317fe5c`. Root and reviewer separately verified four owned
source blobs/snapshots, 65 closed raw artifacts and all13 unchanged source hashes.
The raw affected stdout/JUnit certifies124 tests (Hex8 83, legacy HHT 41), zero
failures/errors/skips and native0. This review certifies the comparator behavior
and evidence, not numerical agreement with the originals. Naturally completed
dynamic originals and whole-feature validation are tracked separately.
After integration, the root affected suite also passed124/124 with native0
(70.92s). Root comparison-only commands consumed the same naturally closed official
results and again returned static native1 with the same failed family metrics and
frequency native2 (`not-run`). These commands and raw stdout/JUnit/row reports are
retained under `.harness/hex8-evidence/t8-integrated/`. No original solver case was
rerun to perform these comparisons.
| Actual original | Current comparison state |
| --- | --- |