docs: record field-policy validation failures and adoption limits

This commit is contained in:
KOKO\Mimi
2026-10-19 08:03:14 +09:00
parent 818046c397
commit 626f7da880
7 changed files with 221 additions and 60 deletions
+115 -5
View File
@@ -1,8 +1,10 @@
# 외부 수렴 정책 실험 결과 — T2 기준과 T6 후보 보존
# MITC4 HHT 외부 field 수렴 정책 실험 결과
기록일: 2026-10-19. **정상 strict 기준은 확보했으나 전체 실험·물리 검증은 미완료**다.
T6 후보는 별도 1증분 개발 진단과 계측 OFF Release 실행물 보존까지 수행했다.
공식 100증분 후보 실행·reference 비교·성능 비교는 미성립이며 가속률이나 채택 가능성을 주장하지 않는다.
기록일: 2026-10-19. **실제 종료 정책은 구현했으나 수치 부적합과 검증 공백이 남아 있다.**
MITC4 HHT 양의 증분은 `abaqus2025-field-on-fesa-v1`로 판정하며 `hht-log-v2`를 기록한다.
Native Debug와 CMake Debug/CTest 전체는 각각 998개 중 **987 PASS·10 FAIL·1 SKIP**이다.
Python 145개와 별도 정식 Hex8 5모델 비교는 통과했다. 공식 MITC4 후보 100증분 실행·
reference 비교·성능 비교는 미성립이며 전체 검증 완료·가속 확인·정식 채택으로 보고하지 않는다.
## 기준과 원시 증거
@@ -223,7 +225,8 @@ inertia=internal−failure, solve=RHS와 exclusive ns 합=procedure inclusive를
같은 짧은 입력의 strict ON과 후보 ON HDF5 frame0/1의 40개 numeric dataset을
shape/type/finite 및 inventory 확인 후 비교했다. 22개는 정확 byte 일치하고
frame1의18개는 달라 **정확 byte parity는 미통과**다. nodal q/v/physical a/A의
frame1의18개는 달랐다. 후보와 strict의 동일 bytes를 요구하는 합격 검사는 아니며,
정책 변경에 따른 전체 state 차이 진단이다. nodal q/v/physical a/A의
최대 절대차는 각각 `2.0328790734103208e-20`, `3.552713678800501e-15`,
`5.684341886080802e-14`, `5.684341886080802e-14`이며 energy는
`8.171241461241152e-14`다. Angular velocity/acceleration·triad·director와
@@ -257,3 +260,110 @@ Field21개와 T4 후보 종료/물리 후속 gate 및 T5 강체 oracle identity
T6은 공식 장시간 성능과 reference 통과를 확정하지 못한 **DONE_WITH_CONCERNS**다.
수치 부적합 해결·기준 완화는 수행하지 않았다. T7의 전체 Native Debug·CMake CTest·
별도 Python·필수 reference 검증은 후속 범위이며 이 한정 진단이 대체하지 않는다.
## 실제 구현과 유지한 경계
수치 계약은 [field 정식화](formulation-convergence.md), 실제 물리 검증은
[물리 검증 기록](physics-validation.md)에 보존했다. Private field 계산의 독립 경계 검사
21개, 실제 종료·rollback·로그 연결 검사 11개와 강체 병진의 독립 물리 oracle 1개를 추가했다.
개발 probe 검사 4개는 별도 ON 구성에서 검증했으며 기본 OFF의 998개 등록에는 포함하지 않는다.
힘/병진과 generalized moment/total rotation-vector를 분리해 일반·zero-flux·linear·
estimated correction·nonquadratic 규칙을 실제 종료에 연결했다. 평균은 요소 signed
internal+physical inertia와 외부 source occurrence로 계산하고 accepted 증분에서 한 번 갱신한다.
실제 full endpoint 보정/증분을 사용하며 기존 q/v/a/A `1e-10` 크기는 strict 진단으로 남겼다.
`PrivateCorrectionEqual`, frame0, inner/hidden/rank, 선형·update `1e-12`, 전역 평형 `1e-8`,
기존 HDF5 schema2와 최종 파일 보호는 유지했다. 수렴 뒤 후속 검사 실패를 자동 완화하지 않는다.
출력 성공 전 accepted state를 복사해 commit을 검증하고 로그 flush 뒤 state·private history·
flux history를 함께 공개한다. 누적 frame 이력 복사 비용이 있으며 공식 후보 시간 측정 시
포함해야 한다. 이번에는 그 전체 비용을 측정하지 않았다.
2025 공개 규칙의 FESA 대응이며 비공개 Abaqus 요소·관성·회전·특성길이까지 같다는 뜻은 아니다.
2024 모델 생성 당시 실제 solver 설정도 미확인이다.
## 구성된 전체 회귀 실행
실행 revision은 `710ab39059ab73518e63968067683791a5c8b558`, 실행 증거 commit은
`818046c3975684d37ddd6bcb827099bd27652acf`다. 후자는 tracked 파일 변경 없는 실행 기록이다.
제품 source는 실제 종료 연결 revision `dd54b0a` 이후 바뀌지 않았다.
원시 자료의 기준 경로는 `.build/tolerance-experiment/go-20261018/T7/`다.
| 실행 | 실제 수 | PASS | FAIL | SKIP | native exit |
| --- | ---: | ---: | ---: | ---: | ---: |
| MSVC x64 Debug unit | 883 | 872 | 10 | 1 | 1 |
| MSVC x64 Debug integration | 72 | 72 | 0 | 0 | 0 |
| MSVC x64 Debug reference | 43 | 43 | 0 | 0 | 0 |
| CMake Debug 전체 CTest | 998 | 987 | 10 | 1 | 8 |
| 별도 Python suite | 145 | 145 | 0 | 0 | 0 |
Native 전체도 합계 998개, 987 PASS·10 FAIL·1 SKIP이다. Native build와 CMake
configure/build/discovery는 각각 exit0이다. 실제 실행 identity 998개씩을 discovery와
대조했고 누락·중복은 없었다. 실패 10개와 N7 skip의 identity도 두 경로에서 같다.
Timeout·abort·필터 제외는 없었다. 제품·검사 compile source 223개와 실행 파일 옆 DLL 7개의
SHA가 양쪽에서 일치했다. C++17·Debug CRT와 전용 Hex8 source만 AVX2인 범위도 확인했다.
Native 명시 `/fp:Precise`, CMake 명시 fp 옵션 없음은 실제 설정 관측값으로 남겼다.
실제 명령은 `commands.json`, Native 세 `fesa_*_tests.xml`, `ctest.xml`, 각
`*.raw.txt`/`*.exit.txt`, `registration-and-timeout.json`, `build-configuration-comparison.json`,
`toolchain-environment.json`으로 추적한다. Python은 기존 CP311 캐시 패키지를 쓰는
`run_cached_python.py -m pytest tests -q`로 실행했으며 `python-suite.raw.txt`에 결과가 있다.
패키지를 다운로드하거나 기본 Python의 import 실패를 전체 환경 부재로 처리하지 않았다.
Native unit 뒤 실행 보조 도구가 TMP 이름을 잘라 만든 충돌로 integration 시작 전에 중단됐다.
제품 executable은 시작되지 않았고 고유 TMP 생성만 수정해 남은 단계부터 재개했다.
이미 끝난 build/unit을 반복하지 않았으며 `driver-interruption.json`에 원인·해결을 보존했다.
검사 중 source 574개와 정식 reference 34개의 전체 inventory·SHA는 전후 동일하다.
## 실패·건너뜀과 후보 정확도 한계
| 실제 실패 묶음 | 수 | 관측과 분류 |
| --- | ---: | --- |
| DynamicRotation D3 독립 미분·80자리 anchor | 2 | 대표 오차 약0.228로 승인된 1e-3 초과 |
| ExactDrillingConstraint force gradient/Hessian | 1 | 대표 오차 약0.00329로 1e-3 초과 |
| C08a pointwise·시간 controller·C08b | 5 | hidden defect 약0.00123 및 첫 격자에서 100회 보정 소진. 보존 strict도 같은 5개 실패 |
| 실제 HHT LargeDirect·UniformTranslation | 2 | 후보 field 통과 뒤 각각 mass-null·유한회전 increment2의 triad 일관성 실패 |
마지막 두 identity의 strict 대조는 외부 보정 100회 소진이었다. 특히 strict UniformTranslation은
첫 병진에서 실패해 후보의 후속 유한회전에 도달하지 않았다. 원인이 같다고 단정하지 않는다.
전체 검사명·실패 메시지·build별 실행 identity는 `verification.json`과 XML에 있다.
사용자 승인 local polar1/inertia3/mass gate1e-3와 관련 테스트 오차1e-3을 유지했으며,
통과시키기 위한 추가 허용치·기대값 변경이나 실패 검사 삭제는 하지 않았다.
유일한 SKIP은 `HhtTemporalVerification.C04aFinestReductionComparisonIsNumericallyResolved`다.
이는 binary64/solve 해상도 때문에 비교가 미판정인 N7 항목이며 PASS가 아니다.
독립 강체 병진의 실제 후보 q/v/physical a/A·energy 검사는 통과했지만 상수 가속도 해다.
기존 strict algebra의 시간수렴 통과와 함께 실제 비선형 후보의 q/v/physical a refinement,
차수≥1.8·finest 오차·N7/물리 invariant closure를 대체하지 않는다. 이 범위는 여전히 미충족이다.
## 별도 정식 Hex8 비교와 미확보 자료
같은 최종 제품 source의 보존된 계측 OFF Release로 정식 원본의 hash 확인 새 복사본을 실행했다.
아래 5개는 모두 새 HDF5, CLI exit0, 기존 comparator exit0, precheck·실행 검증·blocking PASS다.
| 모델 | CLI exit | comparator exit |
| --- | ---: | ---: |
| hexa_linearstatic | 0 | 0 |
| hexa_nonlinearstatic | 0 | 0 |
| hexa_freq | 0 | 0 |
| hexa_dynlinear | 0 | 0 |
| hexa_dynnonlinear | 0 | 0 |
보고서·입력·HDF5 SHA는 `objective-gate.json`과 `hex8-reference/<case>/`에 있다.
Release EXE/PDB/7 DLL도 실행 전후 T6 manifest와 일치했다. 이 실행은 정확도 비교이며,
개별 elapsed를 공식 성능이나 과거 baseline 대비 speedup으로 해석하지 않는다.
기존 NT11 reference 검사는 불일치를 diagnostic으로 남기는 동작의 통과다. 외부 열 수치 일치가 아니다.
정식 shellNL-meshfine·shellNL-meshfine_02·shellNL-meshfine-pressure 자료는 없다.
`_02`는 자료 부재와 전용 case identity/비교 계약 미구현이 함께 남는다. 새 필수 thermal
reference도 미제공이다. `reference/temp`는 사용하지 않았다. 후보 MITC4 100증분 결과는
앞서 설명한 수치 실패 분기로 미실행이며 strict baseline이나 1증분 결과로 대신하지 않는다.
## 판정과 다음 검증 조건
**구현됨·수치 부적합·일부 검증 미완료·공식 성능 비교 미성립**으로 판정한다.
Strict 공식 6350.7895521초, 1증분 개발 호출 수 감소, 전체 회귀 실행 사실은 서로 다른 근거다.
이를 합쳐 전체 가속이나 정식 채택 가능으로 보고하지 않는다.
다음에는 local 근사의 독립 미분/물리 정확도와 후보 후속 acceptance 실패의 원인을 분리하고,
실제 비선형 후보의 시간 정확도와 N7 판정을 확보해야 한다. 그 뒤 같은 조건의 공식 후보
100증분과 정식 HHT 비교를 수행해야 전체 speedup을 판정할 수 있다.
현재 branch와 원시 자료를 보존했으며 주 개발 branch 병합·외부 solver·release는 수행하지 않았다.