docs: record field-policy validation failures and adoption limits
This commit is contained in:
@@ -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·구속·시간수렴을 확인해야 한다.
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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는 수행하지 않았다.
|
||||
|
||||
Reference in New Issue
Block a user