diff --git a/docs/README.md b/docs/README.md index ef925cc..2d84352 100644 --- a/docs/README.md +++ b/docs/README.md @@ -38,5 +38,5 @@ Formulation의 수식·가정은 원문으로 보존한다. 문서 안의 ready/ - [Hex8 구조해석](hex8-structural-analysis/README.md) - [Shell 열전달](shell-transient-heat-transfer/README.md) - [계산 성능](calculation-performance/README.md) -- [Abaqus 수렴 허용치 조사와 FESA 적용 계획](abaqus-tolerance/README.md) +- [Abaqus 수렴 허용치 조사와 FESA 적용 실험](abaqus-tolerance/README.md) - [C++ 모듈화·Refactor 병합 현황과 이관 근거](cpp-object-oriented-modular-refactoring/README.md) diff --git a/docs/abaqus-tolerance/README.md b/docs/abaqus-tolerance/README.md index 017ee6c..456325e 100644 --- a/docs/abaqus-tolerance/README.md +++ b/docs/abaqus-tolerance/README.md @@ -1,18 +1,20 @@ # Abaqus 수렴 허용치 조사와 FESA 대응 조사일: 2026-10-18. FESA 조사 기준: `43867d0`. -상태: 문헌·코드 조사와 승인된 후보 정책의 수식 계약이다. 구현·성능 실험 통과 보고가 아니다. +2026-10-19 실험 branch에서 공개 field 규칙을 MITC4 HHT의 실제 종료에 연결했다. +Native/CTest 전체는 각각987 PASS·10 FAIL·1 SKIP이며, 공식 후보 성능 비교는 미성립이다. +구현·물리 검증·측정의 상세 근거와 한계는 [실험 결과](results.md)에 기록했다. 승인된 후보의 시험 가능한 수식·분기 우선순위·평균 이력·로그 계약은 [외부 field 수렴 정식화](formulation-convergence.md)를 따른다. 아래는 조사 당시 코드와 -공개 기본값의 비교이며, 후보 구현 완료를 뜻하지 않는다. 정식화는 2025 공개 STRICT +공개 기본값의 비교다. 현재 후보는 이 정식화를 실제 사용한다. 정식화는 2025 공개 STRICT 규칙과 비공개 부분의 명시적 FESA 대응을 구분하며 실제 2024 설정과의 동일성을 주장하지 않는다. ## 조사 결론 Abaqus/Standard의 일반 비선형 평형 기준은 잔차 비율 **0.005**, 해 보정 비율 -**0.01**이다. 병진과 회전을 각각 검사한다. FESA의 현재 MITC4 HHT는 힘·모멘트 -잔차와 q/v/a/A 보정량에 **1e-10**을 사용한다. 완화 실험을 검토할 근거는 있으나, +**0.01**이다. 병진과 회전을 각각 검사한다. 조사 당시 `43867d0`의 MITC4 HHT는 힘·모멘트 +잔차와 q/v/a/A 보정량에 **1e-10**을 사용했다. 완화 실험을 검토할 근거는 있으나, 양쪽의 정규화와 검사 대상이 달라 숫자의 비로 정확도나 실행시간을 예측할 수 없다. 일반 기준값의 근거는 [Abaqus 공식 해석 지침의 제어값 설명][S1]이다. @@ -146,9 +148,9 @@ Abaqus에는 수렴 실패 상태도 받아들이는 `DIRECT=NO STOP`이 있지 Explicit 안정시간 기준을 모두 열거한 문서는 아니다. 공개 문헌에서 확인하지 않은 Abaqus 내부 직접분해·pivot·rank 판정 숫자는 추측하지 않았다. -## 6. 현재 FESA 기준과 소유 위치 +## 6. 조사 시점 FESA 기준과 소유 위치 -| 대상 | 현재 판정 | 근거/실험 시 취급 | +| 대상 | 조사 시점 판정 | 근거/실험 시 취급 | | --- | --- | --- | | MITC4 비선형 정적 | 잔차·보정 상대 1e-2; 외력 또는 증분 scale=0에서 typed absolute 1e-3 | [공개 기준](../../include/fesa/analysis/nonlinear_static_control.h), [실제 분기](../../src/fesa/analysis/nonlinear_static_control.cpp); 동해석과 별도 | | Shell HHT 외부 Newton 잔차 | 병진/회전 별 `max|r|/max(scale) <=1e-10` | [조립과 scale](../../src/fesa/analysis/hht_dynamic_assembly.cpp), [ResidualRecord](../../src/fesa/analysis/hht_reduced_procedure.cpp) | @@ -162,20 +164,26 @@ Abaqus 내부 직접분해·pivot·rank 판정 숫자는 추측하지 않았다. | hidden 위치/rate·rank·null | 별도 1e-10/1e-12 등의 물리·대수 검사 | [algebra](../../src/fesa/analysis/hht_dynamic_algebra.cpp), [기능 요약](../hht-implicit-dynamics/README.md); 일괄 완화 제외 | | 선형 정적·고유치·열 | 각 기능별 독립 기준 | 이번 MITC4 동해석 실험의 자동 변경 대상 아님 | -HHT의 scale은 외력과 요소별 physical/drilling force, convective inertia 및 질량×가속도 -항들의 **상쇄 전 크기**를 누적한다. Abaqus의 q̃와 동일하지 않다. 현재 보정 기준도 +조사 당시 HHT의 scale은 외력과 요소별 physical/drilling force, convective inertia 및 질량×가속도 +항들의 **상쇄 전 크기**를 누적한다. Abaqus의 q̃와 동일하지 않다. 당시 보정 기준도 `δq/Δq`가 아니라 특성길이·시간간격에 기반하므로 `1e-10 → 0.01`은 단순 완화 이상의 의미 변경이다. 정적은 이미 상대 1e-2이므로 Abaqus의 Rn=5e-3 채택이 숫자상 더 엄격할 수도 있다. “FESA 전체가 Abaqus보다 엄격하다”로 일반화할 수 없다. +현재 실험 후보는 이 표의 외부 종료를 field 평균·증분 대비 보정으로 교체했고 기존 strict +잔차·q/v/a/A 크기는 진단으로 보존했다. 내부 산술·frame0·전역 평형은 별도로 유지한다. + ## 7. 성능 가설과 적용 전 확인 확인된 사실은 엄격한 HHT 종료 기준과, 외부 Newton 외에도 비용이 큰 내부 root· 요소 도함수·조립 경로가 존재한다는 점이다. 허용치가 실제 장시간 실행의 주원인인지는 -현재 측정하지 않았다. [기존 성능 기록](../calculation-performance/README.md)의 +조사 당시에는 측정하지 않았다. 이후 같은 local 근사본의 strict 공식 실행은 +6350.7895521초/native0을 확보했지만, 물리 실패가 남아 공식 후보100증분은 미실행이다. +첫 증분의 호출 수 감소만으로 전체 병목이나 가속을 확정하지 않는다. +[기존 성능 기록](../calculation-performance/README.md)의 6372.325621초는 과거 source의 단일 baseline으로 최신 revision의 측정값이 아니다. -다음 실험에서 외부/내부 반복 수, 요소 평가 수, factor/solve 수, 단계별 시간과 +추가 실험에서 전체 증분의 외부/내부 반복 수, 요소 평가 수, factor/solve 수, 단계별 시간과 종료를 지연시킨 채널을 함께 측정해야 한다. 내부 구속 solve가 대부분의 시간을 쓰면 외부 Newton 기준만 바꿔도 효과가 작을 수 있다. 기준을 넓혀 성공한 것과 해의 정확도가 유지된 것을 구분하고, U 비교와 별도로 V/physical a·구속·시간수렴을 확인해야 한다. diff --git a/docs/abaqus-tolerance/application-plan.md b/docs/abaqus-tolerance/application-plan.md index da63cd4..e6889a7 100644 --- a/docs/abaqus-tolerance/application-plan.md +++ b/docs/abaqus-tolerance/application-plan.md @@ -1,9 +1,11 @@ # MITC4 HHT에 Abaqus 수렴 규칙을 적용하는 실행 계획 작성일: 2026-10-18. 조사 기준 source: 43867d0. -상태: 실제 구현·측정·검증을 위한 개정안. 이번 ready에서는 계획 문서만 수정한다. -수정안 승인 후 go는 **실제 코드 수정·빌드·FESA 실행·성능 측정·정확도 검증**을 수행한다. -이 계획의 Abaqus 외부 Newton 규칙 구현·측정은 아직 실행하지 않았다. +2026-10-19 승인된 실행 결과: 외부 field 규칙을 실제 HHT 종료에 연결하고 strict 기준 실행, +1증분 후보 진단, 두 Debug 경로 전체 검사와 별도 비교를 수행했다. +Native/CTest는 각각987 PASS·10 FAIL·1 SKIP이다. 물리 실패 분기에 따라 공식 후보100증분은 +미실행이며 전체 가속·정식 채택은 미확정이다. 상세 실행 증거는 [실험 결과](results.md)에 있다. +아래는 재현할 실행 순서와 유지 조건이며, 미충족 검증을 완료로 바꾸지 않는다. 2026-10-18 후속 사용자 지시로 별도 [요소 local 근사 실험](local-kernel-experiment.md)을 먼저 적용했다. 아래 요소 수식·질량 보존 조건의 명시적 예외는 polar 1회, 회전/Jacobian @@ -23,7 +25,7 @@ MITC4 implicit dynamics의 외부 Newton 종료에 **Abaqus/Standard 2025의 공 T1의 [외부 field 수렴 정식화](formulation-convergence.md)가 T3/T4의 수치·분기·로그 계약이다. 요소 signed total과 source occurrence 개수, current trial 평균 후보와 accepted commit, 보정/증분 chart, 비이차 검출의 명시적 FESA 대응 및 독립 oracle 경계를 이 문서에 고정했다. -이는 수식 계약 완료이며 실제 후보 구현이나 정확도 검증 완료를 뜻하지 않는다. +이 수식 계약은 실제 후보에 연결했다. 후보의 비선형 시간 정확도와 전체 물리 검증은 미완료다. 공개 규칙을 FESA의 기존 물리량에 대응하는 실험이다. 잔차는 기존 full free endpoint E=I+fint-F, field는 병진 u와 total rotation-vector φ, 회전 flux는 generalized moment다. @@ -110,8 +112,10 @@ Probe를 추가하더라도 공식 실행에서는 꺼져야 하며 수학 계 ## 정확도·전체 회귀·실패의 처리 -q/v/physical a의 마지막 두 refinement 감소·차수≥1.8, finest normalized error≤1e-4, -기존 N7 해상도 판정을 유지한다. C08b 미판정이나 일반 비선형 HHT의 energy 의미를 +q/v/physical a의 마지막 두 refinement 감소·차수≥1.8과 기존 N7 해상도 판정을 유지한다. +후속 승인에 따른 관련 테스트 오차는1e-3이다. 기존 strict algebra의 finest1e-4 검사도 +그대로 통과했으나 이를 실제 비선형 후보의 정확도 증거로 대신하지 않는다. +C08b 미판정이나 일반 비선형 HHT의 energy 의미를 결과에 맞춰 다시 정의하지 않는다. 기존 물리 기준을 통과하지 못하면 수치 부적합으로 보고한다. 관련 검사 후 전체 MSVC x64 Debug build와 unit/integration/reference 세 executable, diff --git a/docs/abaqus-tolerance/results.md b/docs/abaqus-tolerance/results.md index 8f0329c..b2fc683 100644 --- a/docs/abaqus-tolerance/results.md +++ b/docs/abaqus-tolerance/results.md @@ -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//`에 있다. +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는 수행하지 않았다. diff --git a/docs/hht-implicit-dynamics/README.md b/docs/hht-implicit-dynamics/README.md index 66200b9..e6162c1 100644 --- a/docs/hht-implicit-dynamics/README.md +++ b/docs/hht-implicit-dynamics/README.md @@ -5,8 +5,11 @@ 2026-10-18 후속 사용자 지시로 polar 반복 12→1회, 관성 회전/Jacobian 급수 32→3차, 질량 대칭·null/Gram·분해 복원 검사 1e-12→1e-3의 local 근사 실험을 적용했다. 최초 엄격한 기준의 관련 요소 46개 중 5개가 실패했다. 후속 사용자 지시로 관성·접선· -HHT 물리 테스트의 오차 기준을 1e-3으로 완화했으며 최신 선택 50개는 두 빌드 경로에서 -46 PASS·4 FAIL이다. 실제 해석 루틴의 수렴 조건은 이번 테스트 수정으로 바뀌지 않았다. +HHT 물리 테스트의 오차 기준을 1e-3으로 완화했다. 이후 Abaqus2025 공개 field 규칙을 +양의 증분의 실제 종료에 연결하고 accepted 평균 이력·hht-log-v2를 구현했다. +2026-10-19 Native Debug/CTest 전체는 각각998개 중987 PASS·10 FAIL·1 SKIP이다. +새 정책의 실제 조기 종료·rollback·강체 병진 oracle는 통과했으나 D3·drilling·C08와 +후속 mass-null/triad 검사가 실패한다. 실제 비선형 후보 시간 정확도는 미검증이다. 아래 정식화의 유한회전 항등식과 과거 검증을 이 근사본의 통과로 승계하지 않는다. 변경 범위와 실제 검증 한계는 [실험 기록](../abaqus-tolerance/local-kernel-experiment.md)을 따른다. @@ -21,8 +24,11 @@ shell schema v2**다. 과거 consistent 질량·full-coordinate v1 근거를 변 사용자 중단 exit -1은 수치 FAIL이나 PASS가 아니다. 이후 2026-10-14 성능 baseline은 원본을6372.325621초/native0으로 완료하고 schema v2·729nodes/101frames를 확인했다. 9-node U blocking 비교는 PASS(최대 relative RMS .0022824245), UR은 경고200건이었다. -이는 baseline source의 결과다. 최신 최적화 source의 새 원본 비교·C08b·전체 회귀·독립 -전체 물리 판정은 남아 있으며 전체 green이 아니다. [성능 요약](../calculation-performance/README.md)을 함께 본다. +이는 과거 baseline source의 결과다. 2026-10-19 같은 승인 local 근사본의 strict 원본을 +6350.7895521초/native0으로 완료했고 정식 U 비교는 통과했다. 현재 field 후보는 수치 실패로 +공식100증분을 실행하지 않았으며 새 원본 비교·비선형 시간수렴·전체 물리 판정과 speedup은 +미성립이다. 전체 회귀는 위 수치대로 실제 실행했으며 전체 green이 아니다. +[수렴 정책 실험 결과](../abaqus-tolerance/results.md)에 현재 근거를 보존했다. ## 채택 방법과 산술 의미 @@ -108,18 +114,27 @@ full accepted frame은 같은 acceptance 뒤 commit한다. Full residual·recove 검증 전에 일부 이력을 commit하지 않는다. [DynamicHdf5ResultsWriter](../../src/fesa/io/hdf5/dynamic_hdf5_results_writer.cpp)는 완결 이력을 write/close/reopen/self-check한 뒤 final을 교체한다. 실패 candidate는 기존 final을 보존한다. Accepted history는 실행 중 메모리에 있어 강제 종료 로그만으로 복구되지 않는다. +Field 평균 후보는 반복마다 재계산하고 accepted 증분에서 한 번 갱신한다. State의 staged +copy에서 commit을 검증하고 로그 flush 성공 뒤 state·private/flux history를 공개한다. +누적 frame 이력 복사 비용이 있으며 공식 후보 elapsed에 포함할 대상이다. ## 검증 기준·교훈·남은 한계 -N2 full force/moment·q/v/a/A correction은 채널별 1e-10, 실제 scaled solve backward error는 -1e-12다. N3 update는 상쇄 전 same-unit scale의 1e-12와 exact-zero branch를 유지한다. +현재 양의 증분은 `abaqus2025-field-on-fesa-v1`로 종료한다. 힘/모멘트 flux 평균과 +full endpoint u/total-φ의 실제 보정·증분을 사용하며 normal/zero-flux/linear/nonquadratic과 +추정 보정을 구분한다. 기존 N2 full force/moment·q/v/a/A의1e-10은 strict 진단이다. +PrivateCorrectionEqual과 회전 전용 보정의 기존 strict 선택 자격은 유지했다. +Frame0·후속 hidden/rank/regularity·전역 평형1e-8도 별도 gate다. +실제 scaled solve backward error는1e-12다. N3 update는 상쇄 전 same-unit scale의1e-12와 exact-zero branch를 유지한다. Pair increment의 exact expansion 검사와 RN-even 저장 검사는 별도다. Hidden 위치 조건·rank/ regularity를 유지하되 hidden rate 진단을 임의 Newton gate로 바꾸지 않는다. 일반 dynamic operator에 대칭성을 강제하지 않는다. 일반 nonlinear HHT energy에 매 frame 보존·감소를 요구하거나 numerical dissipation을 physical damping으로 기록하지 않는다. -시간 검증은 q/v/physical a의 마지막 두 refinement 감소·차수 >=1.8 및 finest normalized -error <=1e-4를 요구한다. N7 read-only linear/nonlinear defect solves와 arithmetic indicator는 +시간 검증은 q/v/physical a의 마지막 두 refinement 감소·차수 >=1.8을 요구한다. +이번 승인 근사 실험의 관련 테스트 오차는1e-3이다. 기존 strict algebra의 finest1e-4 +검사도 그대로 통과했지만 실제 비선형 후보의 refinement·finest 오차 판정은 미완료다. +N7 read-only linear/nonlinear defect solves와 arithmetic indicator는 100배 separation을 확인하며 state polishing이 아니다. 원본의 성긴 dt/T1≈7.4567에서 변위 일치와 시간 정확도를 구분한다. @@ -128,7 +143,8 @@ error <=1e-4를 요구한다. N7 read-only linear/nonlinear defect solves와 ari 정책으로 해소됐고 후속 C09/C08a7 통과와 구분한다. 최신 Debug h=1/64 완료 요약의 이전 Release 일치는 전체 raw state bitwise나 전체 시간수렴 증거가 아니다. 원본 accepted residual 최대 병진1.889238010e-15·회전1.452384011e-15도 Abaqus 변위 오차가 아니다. -C08b finer-grid·최신 최적화 source의 원본 HDF5 비교·전체 회귀·전체 물리 closure가 남는다. +C08b finer-grid·현재 field 후보의 원본 HDF5 비교·전체 물리 closure가 남는다. +전체 회귀의 실제 실패와 해상도 SKIP을 과거 통과로 덮지 않는다. ## 보존한 과거 수식과 연구의 위치 diff --git a/docs/tracking/findings.md b/docs/tracking/findings.md index 4f942c4..c4367aa 100644 --- a/docs/tracking/findings.md +++ b/docs/tracking/findings.md @@ -6,8 +6,9 @@ 1e-3을 적용했다. 변경 전 관련 기존 45개 PASS, 변경 후 46개 중 41 PASS·5 FAIL이다. 추가 HHT 선택에서도 C08a 독립 물리 oracle와 큰 시간간격 100회 보정 종료가 실패했다. 후속 사용자 지시로 관련 테스트 오차 기준도 1e-3으로 변경했으며 최신 동일 선택 - 50개는 Native/CTest 각각46 PASS·4 FAIL이다. D3 오차 약0.228, drilling gradient - 약0.00329 및 C08a hidden defect/실제 평형 검사 실패가 남는다. + 50개는 당시 Native/CTest 각각46 PASS·4 FAIL이었다. 2026-10-19 외부 field 정책 연결 뒤 + 전체998개를 양쪽에서 실행했고 동일10 FAIL·1 SKIP이 남는다. D3 오차 약0.228, + drilling gradient 약0.00329 및 C08a hidden defect/실제 평형 검사 실패도 재현했다. - 영향: 회전 미분·analytic null·질량/에너지·drilling 항등식의 기존 정확도 검증을 만족하지 못한다. 구현 완료를 solver correctness·시간수렴·성능 향상으로 보고할 수 없다. - 지금 해결하지 않는 이유: 요청한 근사값의 수치 영향이며 승인된 테스트 허용치1e-3보다 @@ -15,14 +16,32 @@ - 다음 접근: 원인 분리 실험과 정확도 손실의 별도 판정이 필요하다. 변경 범위·실제 로그· 미검증 항목은 [local 실험 기록](../abaqus-tolerance/local-kernel-experiment.md)을 따른다. -## 비정적 검증 공백 +## MITC4 후보 후속 acceptance와 비선형 시간 정확도 미완료 -- 조건·관측: 2026-10-18 통합에서 장시간 HHT 검증이 사용자 요청으로 중단되고 정적·공통 - 631개만 검증됐다. 비정적 333개 등록은 보존됐으나 최신 통합본 전체 수치 실행 근거가 없다. -- 영향: Shell HHT·solid dynamics·frequency·transient thermal의 전체 검증 완료를 선언할 수 없다. -- 지금 해결하지 못한 이유: 장시간 solver·test 실행과 독립 물리 판정이 필요한 별도 검증 작업이다. -- 다음 접근: source와 환경을 고정하고 미실행 identity별 필요한 물리·시간수렴·reference를 - 묶어 검증한다. 중단된 C08b finer-grid와 기존 완료 개별 검사를 구분한다. +- 조건·관측: 2026-10-19 구성된 전체 Native/CTest998개는 각각987 PASS·10 FAIL·1 SKIP이다. + 실제 후보 LargeDirect는 field 통과 뒤 mass-null, UniformTranslation은 유한회전 증분2에서 + triad 일관성이 실패한다. 같은 identity의 보존 strict는 외부100회 소진이므로 원인 동일로 + 분류하지 않는다. C08 strict algebra의 시간 controller4개도 첫 격자에서 실패한다. +- 영향: 강체 병진 oracle와 기존 algebra 시간수렴 통과만으로 실제 비선형 후보의 + q/v/physical a refinement·차수·finest 오차·N7/물리 invariant closure를 인증할 수 없다. + N7 한 항목은 해상도 SKIP이다. 공식 후보100증분·정식 HHT 비교·전체 speedup은 미성립이다. +- 지금 해결하지 못한 이유: 승인 local 근사본의 독립 정확도 실패가 동반되며 원인 분리가 + 필요하다. 정해진 근사 수식을 자동 복원하거나 유지할 hidden·triad·평형 기준을 완화해 + 성공시키는 것은 이번 실험의 변경 범위가 아니다. 추가 강제 보정이나 실패 frame commit도 하지 않는다. +- 다음 접근: polar/inertia 근사 영향과 candidate 후속 gate 실패의 원인을 분리한다. + 유지할 물리 기준에서 실제 비선형 후보의 시간·불변량 검증을 확보한 뒤 공식100증분을 측정한다. + 전체 실행·실패 identity와 strict 대조 근거는 수렴 정책 결과의 원시 기록에 보존했다. + +## 개발 계측의 정확 parity와 전체 비용 미확정 + +- 조건·관측: strict 공식 frame0/1과 짧은 개발 실행의 numeric dataset40개 중18개가 byte + 불일치했다. 보존한 동일 OFF 실행물의 짧은 대조도 불일치해 계측만의 영향으로 분리되지 않았다. + 전체100증분 개발 계측은 하지 않았으며, 후보와 strict의1증분 state 차이는 별도 정책 진단이다. +- 영향: 개발 probe의 정확 byte parity 통과나 전체 병목 비중·전체 가속률을 확정할 수 없다. +- 지금 해결하지 못한 이유: T 단축·반복·thread·컴파일 영향을 분리한 실행 근거가 없고, + 수치 부적합 상태에서 같은 장시간 실행을 근거 없이 반복하지 않는 실험 조건을 유지한다. +- 다음 접근: 수치 적합성을 확보한 뒤 동일 입력·실행물·thread 조건으로 원인을 분리하고 + 전체 증분 비용을 측정한다. 새 parity 허용치나 첫 증분의100배 외삽으로 대신하지 않는다. ## 정식 기준자료 부재와 추가 fine 비교기 부재 diff --git a/docs/tracking/status.md b/docs/tracking/status.md index a425397..d766be9 100644 --- a/docs/tracking/status.md +++ b/docs/tracking/status.md @@ -1,15 +1,18 @@ # 구현과 검증 상태 -2026-10-18 후속 [MITC4 local 근사 실험](../abaqus-tolerance/local-kernel-experiment.md)은 -polar 1회·관성 회전/Jacobian 3차·질량 검사 1e-3을 적용했다. 두 Debug build는 성공했으나 -최초 관련 요소 46개 중 5 FAIL이었다. 후속 사용자 지시로 관련 테스트의 오차 기준을 -1e-3으로 변경했고, 최신 Native/CTest 동일 선택 50개는 각각46 PASS·4 FAIL이다. -전체 965개 중 나머지 915개는 이번에 미실행이며 실제 해석 수렴 조건은 변경하지 않았다. -아래 과거 검증을 이 변경본에 승계하지 않는다. Abaqus 외부 Newton 정책은 미구현이다. +2026-10-19 현재 실험 branch는 polar1회·관성 회전/Jacobian3차·질량 gate와 관련 테스트 +오차1e-3을 유지하며, Abaqus2025 공개 field 규칙을 MITC4 HHT의 실제 종료에 연결했다. +Accepted 평균 이력과 hht-log-v2도 구현했다. Native Debug와 CMake Debug/CTest 전체는 +각각998개 중987 PASS·10 FAIL·1 SKIP이다. Python145개와 별도 Release 정식 Hex8 +5모델 CLI/비교기는 통과했다. Native unit883개 중10 FAIL·1 SKIP, integration72개와 +reference43개는 모두 통과했다. 두 build 성공과 source/등록 identity/DLL 대조도 확보했다. +물리 실패·N7 해상도 미판정·실제 비선형 후보 시간 정확도 미완료로 전체 검증 완료는 아니다. +Strict 공식 기준6350.7895521초는 확보했으나 공식 후보100증분·speedup은 미성립이다. +상세 revision·실행 증거는 [수렴 정책 실험 결과](../abaqus-tolerance/results.md)에 있다. -## 기준 시점 +## 과거 통합 기준 시점 -2026-10-18 저장소 HEAD `945d899` 기준이다. 아래 통과 수치는 각 검증 당시 기록의 범위이며 +과거 통합 기준은 2026-10-18 HEAD `945d899`다. 과거 통과 수치는 각 검증 당시 기록의 범위이며 후속 source에서 새로 실행한 결과로 승계하지 않는다. 현재 용도는 개인 연구용 로컬 실행이며 장기 목표는 외부 사용자 배포다. 배포 형태·지원 환경· dependency 재배포 조건은 확정되지 않았다. @@ -18,14 +21,14 @@ dependency 재배포 조건은 확정되지 않았다. | 영역 | 구현된 범위 | 확보된 검증과 한계 | | --- | --- | --- | -| B33·MITC4 선형 정적 | 입력 → solve → 복구 → HDF5 | 2026-10-18 정식 정적 모델 실행·비교 범위에 포함. 일반 곡선 beam·광범위 distorted/curved shell 정확도를 뜻하지 않는다. | -| MITC4 비선형 정적·압력 | Full Newton·trial/commit·정적 follower pressure | ShellNL 정식 기본 모델의 U blocking·UR warning·내부 평형 통과 기록. RF/RM은 review-only. Fine·추가 fine·pressure의 정식 자료가 없고 추가 fine 비교기 연결도 없다. | -| Shell frequency | Lumped mass·실제 FEAST·null/finite 공간·전체 반환 pair 검증 | 2026-09-10 첫 구현의 417개 통과와 Value 10개 모드별 5% 기록. 최신 통합본의 frequency 수치 실행을 완료한 근거로 승계하지 않는다. | -| Shell HHT | Nodal-lumped-kinetic·reduced-coordinate·fixed-null·schema2 | 과거 C09와 C08a 7-grid, baseline 원본 U 비교 기록. 최신 전체 회귀·C08b finer-grid·최신 원본 비교·전체 물리 판정은 미완료. 중단을 수치 실패나 통과로 세지 않는다. | -| Hex8 | Mean-volume 강성·reference row-sum mass·정적/고유치/HHT·high+low | 2026-10-13 관련 C++ 91개·Python 96개와 보존 결과 5개 비교 기록. 2026-10-18에는 정적 2개를 재실행. 최신 고유치·동적 전체 검증은 별도다. | -| DS4 thermal | 5 온도점·consistent capacity·BE·flux/reaction·원자적 출력 | 당시 추가 139개 검사 기록. 기존 NT11은 diagnostic 불일치이며 새 필수 외부 reference 검증은 미완료. 최신 통합본의 전체 열 수치 실행도 미완료다. | -| 공통 구조·빌드 | Typed procedure/capability/outcome·private backend·Native/CMake | 2026-10-18 두 경로 전체 target build·공개 header 111개 독립 compile·runtime DLL 7개 대조 기록. 물리 기능 전체 검증과 구분한다. | -| 성능 | MKL 행렬 연산·제한된 불변 cache·Hex8 SIMD·shell 산술 최적화 | 세 모델의 목표 달성은 미완료. 단일 개발 표본과 복원된 후보의 통과를 최종 성능으로 승계하지 않는다. | +| B33·MITC4 선형 정적 | 입력 → solve → 복구 → HDF5 | 2026-10-19 두 Debug 경로의 구성된 reference 실행·비교 포함. 일반 곡선 beam·광범위 distorted/curved shell 정확도를 뜻하지 않는다. | +| MITC4 비선형 정적·압력 | Full Newton·trial/commit·정적 follower pressure | 2026-10-19 정식 coarse 모델의 기존 비교를 포함한 구성 검사 실행. RF/RM은 review-only. Fine·추가 fine·pressure 자료 부재와 추가 fine 비교 계약 부재는 남는다. | +| Shell frequency | Lumped mass·실제 FEAST·null/finite 공간·전체 반환 pair 검증 | 2026-10-19 구성된 두 Debug 경로 reference 실행에 포함. 한정된 Value 10개 모드별5% 계약을 다른 고유치 비교로 확대하지 않는다. | +| Shell HHT | Reduced-coordinate·fixed-null·schema2·Abaqus2025 field 종료·log-v2 | 두 전체 경로에서 동일10 FAIL·N7 SKIP1. 실제 조기 종료·강체 oracle는 통과하나 비선형 시간 정확도와 후속 acceptance 실패는 미해결. Strict 원본 비교만 확보, 공식 후보 원본 비교는 미실행. | +| Hex8 | Mean-volume 강성·reference row-sum mass·정적/고유치/HHT·high+low | 2026-10-19 구성된 두 Debug 경로 전체 실행과 별도 Release 정식5모델의 새 HDF5·기존 비교 통과. 공식 성능 비교가 아니다. | +| DS4 thermal | 5 온도점·consistent capacity·BE·flux/reaction·원자적 출력 | 2026-10-19 구성된 unit/integration/reference 실행 완료. 기존 NT11 diagnostic 불일치와 새 필수 외부 reference 부재는 남는다. | +| 공통 구조·빌드 | Typed procedure/capability/outcome·private backend·Native/CMake | 2026-10-19 두 Debug build 성공, compile source223개·실행 identity998개·runtime DLL7개 일치. 수치 검증 전체 통과와 구분한다. | +| 성능 | MKL 행렬 연산·제한된 불변 cache·Hex8 SIMD·shell 산술 최적화 | Strict HHT 공식6350.7895521초 확보. 후보의1증분 호출 수 감소는 한정 진단이며 공식100증분 가속·목표 달성은 미확정. | 2026-10-18 통합 기록은 두 빌드 경로에서 unit 849·integration 72·reference 43, 총 964개 등록 identity가 일치한다고 보고한다. 사용자 지시로 정적·공통 631개(unit 555·integration 35· @@ -46,9 +49,9 @@ Fresh Refactor·통합 Native·통합 CMake 실행물에서 같은 scratch 입 1. 정식 fine·추가 fine·pressure·새 thermal 기준자료의 제공 여부와 source/frame/hash 계약을 확정한다. 추가 fine는 자료뿐 아니라 전용 case identity와 comparator 연결이 필요하다. -2. 현재 source·compiler·build tree를 묶어 비정적 수치 검증을 수행한다. Shell HHT 시간수렴· - 원본 비교, solid dynamics, frequency, transient thermal을 선택된 정적 근거와 구분한다. - 자료가 필요한 외부 비교는 정식 자료 확보 뒤 수행한다. +2. 구성된 전체 실행 결과를 바탕으로 MITC4 local 미분/물리 실패와 실제 후보 후속 gate 실패를 + 분리한다. 후보 비선형 q/v/physical a 시간수렴·N7 및 후보 원본 비교를 확보한다. + 전체 검사 실행 사실과 미해결 수치 검증을 구분하고, 자료가 필요한 비교는 확보 뒤 수행한다. 3. Eigen partial-BC 정적 평형 충돌과 thermal 외부 불일치의 영향을 각각 판정한다. 기준 완화·질량 변경·원본 보정으로 해결하지 않는다. 4. 같은 물리·허용치·출력·정밀도를 보존한 상태에서 성능 회귀 원인을 조사하고 최종 source의 @@ -67,4 +70,5 @@ Fresh Refactor·통합 Native·통합 CMake 실행물에서 같은 scratch 입 Hex8 동적 개발 표본 117.7986225초는 native 0과 U 비교 통과였으나 100초 목표를 넘었다. Refactor 당시 ShellNL elapsed 회귀 Native +86.52%·CMake +120.91%는 과거 단일 기록이며 -원인·변산이 미확정이다. 최종 통합 source의 새 Release 성능 측정은 미완료다. +원인·변산이 미확정이다. 2026-10-19 승인 local 근사본의 strict HHT는6350.7895521초였다. +현재 field 후보의 공식 Release 시간과 speedup은 수치 실패로 미성립이다.