docs(hex8): record comparison evidence and reference options
This commit is contained in:
@@ -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) | 승인된 내부 정밀도 변경안·결과 의미·구현 전 검증 범위 |
|
||||
|
||||
@@ -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를 통과로 바꾸지 않는다.
|
||||
|
||||
@@ -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 검증은 아니다.
|
||||
@@ -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 |
|
||||
| --- | --- |
|
||||
|
||||
Reference in New Issue
Block a user