docs: reclassify original shell thermal reference as diagnostic

This commit is contained in:
KOKO\Mimi
2026-09-30 00:04:09 +09:00
parent 45a336c24f
commit ac1af78d50
6 changed files with 67 additions and 33 deletions
+18 -1
View File
@@ -46,7 +46,7 @@
## STH-ADR-005: NT11 외부 비교와 독립 물리 검증
- 상태: Accepted
- 상태: Superseded by STH-ADR-015 (원본 비교의 blocking 분류에 한함)
- 결정: 기존 CSV의 Step-1, t=37, NT11을 필수 비교하고 나머지는 해석해·수지·수렴으로 검증한다.
- 이유: Reference의 실제 coverage는 단일 시점의 아랫면 온도 729행이다.
- 영향: 공통 TOLERANCE의 row/family 기준을 유지한다. 추가 Abaqus CSV나 Abaqus 실행은 필수가 아니다.
@@ -138,3 +138,20 @@
전체 baseline을 먼저 재현하고 완료 시 전체 검사를 다시 실행한다.
재현된 무관한 HHT temporal 실패만 별도 미해결로 둘 수 있으며 새 실패·악화를 허용하지 않는다.
이를 전체 CTest green으로 보고하지 않는다. 열해석 필수 검증 실패는 면제되지 않는다.
## STH-ADR-015: 원본 reference 진단 전환과 새 모델 비교
- 상태: Accepted; 사용자 선택 “A, reference 모델을 변경하겠습니다.”
- 결정: 승인된 Q4×P2, consistent C, raw 초기값 및 Backward Euler 정식화를 유지한다.
기존 `reference/shell-thermal` Step-1/time 37/NT11 family는 진단으로 분류하고
공통 tolerance로 계산한 row/family 실패 수치를 그대로 남긴다. 사용자가 변경할 새
reference 모델과 CSV가 확정되면 별도의 필수 family로 비교한다.
- 이유: 원본 729행 중 87행 실패와 RMS/S=0.04967408461567323 초과가 있었고,
FESA와 독립적으로 승인 식을 계산한 oracle도 같은 차이를 재현했다.
[충돌 evidence](reference-comparison-conflict.md)는 원본의 blocking 조건과 승인 방법을
동시에 만족하지 못함을 보여준다.
- 영향: 원본 artifact와 공통 tolerance는 수정하지 않는다. 진단 실패를 PASS로 바꾸지
않고 row identity·오차를 보고한다. 새 모델의 경로, 원본 hash, 비교 시점·성분·identity가
아직 제공되지 않았으므로 새 필수 비교의 실행·통과는 미완료다. 독립 해석해·수지·수렴성,
전체 회귀 및 physics 검토를 완료 조건으로 유지한다. 이는 Abaqus 내부 알고리즘의
동등성이나 기존 reference가 잘못되었다는 판정이 아니다.
@@ -33,8 +33,10 @@
반력 열률을 같은 observable로 대체하지 않는다.
- Thin-shell 곡률 근사, 다른 두께·fold의 접속, 초기 온도 jump와 결과 schema는
[PRD 상세 계약](PRD.md#sth-c01--모델-geometry와-자유도)을 따른다. Edge 입력 011은 이번 구현에서 연기한다. 미지원 의미를 임의 default로 처리하지 않는다.
- Reference는 PRD가 지정한 기존 `.inp`와 CSV를 그대로 사용한다. 음수 reference는
- 기존 reference `.inp`와 CSV는 변경하지 않고 진단 비교에 사용한다. 음수 reference는
roundoff로 단정하거나 clamp하지 않고 [TOLERANCE](../TOLERANCE.md)를 적용한다.
새 필수 reference는 [PRD STH-C08](PRD.md#sth-c08--reference-원본과-완료-evidence)과
[STH-ADR-015](ADR.md#sth-adr-015-원본-reference-진단-전환과-새-모델-비교)를 따른다.
- All-constrained와 단면 전체 end 온도 지정은 검산용 algebra/assembly fixture다.
내부 온도점 경계조건을 공개 입력 기능으로 확대하는 근거로 사용하지 않는다.
+16 -8
View File
@@ -39,7 +39,7 @@
| 013 | 사용자 지정 총 시간과 기본 시간 간격; 마지막 증분만 필요 시 단축 |
| 014 | 온도·요소 전역 열유속·지정 온도점의 반력 열률 |
| 015 | 초기 온도와 모든 완료 증분을 공식 HDF5에 저장 |
| 016 | 원본 reference Step-1, t=37, NT11의 필수 외부 비교 |
| 016 | 원본 reference Step-1, t=37, NT11의 진단 외부 비교와 새 reference 모델의 필수 비교 |
| 017 | 전체 온도·flux·반력에 대한 해석해·수지·시간 및 공간 수렴 검증 |
| 018 | 하나의 transient step만 지원 |
@@ -376,7 +376,8 @@ acceptance 변경이 필요하면 구체적 근거를 제시하고 사용자 결
| IO/실패 | 모든 양성/음성 subset, source identity, HDF5 round trip, 초기 dataset 부재, P=0 반력, 마지막delta, no-op warnings, candidate/lease/write/self-check/close 실패 시 기존결과 보존 |
구현 단계에는 열해석 관련 검사를 먼저 수행하고 전체 MSVC x64 Debug build/CTest와
필수 reference 비교를 수행한다. 새 compiler warning을 추가하지 않는다.
확정된 새 reference의 필수 비교를 수행한다. 기존 reference의 진단 비교도 실패 수치까지
보고한다. 새 compiler warning을 추가하지 않는다.
구현 전 전체 검사를 실행하여 기존 HHT 시간수렴 실패 2건의 실제 재현·이름·metric을
기록한다. 기록만으로 현재 실패를 가정하지 않는다. 구현 후 전체 검사에서 제외하지 않고,
새 실패·기존 실패 악화를 허용하지 않는다. 재현된 기존의 무관한 HHT 실패만 별도
@@ -406,8 +407,8 @@ worktree를 찾고 파일별 SHA256을 아래와 대조한다. 이 방식은 머
내용, metadata를 수정하는 권한은 포함하지 않는다. FESA HDF5/log는 복사한 입력 옆에
생성한다. 보조 deterministic CSV view는 공식 결과가 아니다.
외부 family는 `(shell-thermal, source step Step-1, time 37, bottom temperature NT11,
scalar, user-consistent temperature units, blocking)`이다. 원본은 단일 Part-1-1,
기존 외부 family는 `(shell-thermal, source step Step-1, time 37, bottom temperature NT11,
scalar, user-consistent temperature units, diagnostic)`이다. 원본은 단일 Part-1-1,
676 DS4, 729 node이며 CSV의 `Step,Frame,Node Label,NT11`에서 instance 열 부재는
입력의 단일 instance 및 label 집합 검증으로만 복원한다. HDF5의 source_step_name,
정확한 t=37 accepted frame, source DOF11을 일대일 대응한다. Nearest-time matching,
@@ -418,11 +419,17 @@ Missing/extra/duplicate/nonfinite/identity 오류는 tolerance 전에 실패다.
그 밖의 relative<=0.05, family RMS/S<=0.01, S=0 exact-zero 규칙을 그대로 적용한다.
관찰된 min=-15.5742216, max=1000은 정적 관찰이며 solver 통과 evidence가 아니다.
음수·미소값을 clamp하거나 온도 기준·단위를 조정해 비교를 통과시키지 않는다.
필수 비교 실패 시 원인을 분리 조사하고 방법/acceptance 충돌은 사용자 결정으로 돌린다.
이 원본 비교의 tolerance 초과는 진단 실패로 남긴다. Row identity 오류와 metric을
숨기거나 원본 비교를 통과로 표시하지 않는다. 독립 계산과 실제 실패 evidence는
[충돌 보고서](reference-comparison-conflict.md)에 보존한다. 사용자가 변경할 새 reference
모델의 입력·CSV 경로, source row identity, 비교 시점·성분과 원본 hash가 확정되면
이를 별도의 필수 family로 지정하여 실제 비교한다. 새 artifact가 아직 제공되지 않았으므로
새 family의 통과를 주장하지 않는다. 공통 tolerance 수치는 변경하지 않는다.
완료 보고서는 구현 diff, 실제 검증 명령/환경·결과, 독립 numerical/physics 검토,
외부 비교 row/family 판정, 기존 HHT 실패, 남은 물리 한계를 구분한다.
추가 Abaqus CSV 확보는 필수 조건이 아니지만 다른 물리량 검증을 생략하는 근거도 아니다.
새 reference 모델과 그 결과 CSV가 확정되어야 새 필수 family를 실행할 수 있다.
이는 다른 물리량의 해석해·수지·수렴성 검증을 생략하는 근거가 아니다.
## 현재 checklist
@@ -436,8 +443,9 @@ Missing/extra/duplicate/nonfinite/identity 오류는 tolerance 전에 실패다.
- [x] Thermal semantic model·DOF·geometry·K/C·flux 구현 및 [독립·통합 검증](implementation-verification.md#요소-kernel과-형상-검증)
- [x] Thermal 입력 subset·진단·결정적 조립·시간 적분 구현 및 [범위별 검증](implementation-verification.md#backward-euler-procedure와-candidate-검증)
- [x] HDF5·CLI·candidate와 기존 결과 보존 [검증](implementation-verification.md#application과-실제-cli)
- [ ] 승인 정식화와 필수 reference 통과 조건의 [실측 충돌](reference-comparison-conflict.md)에 대한 사용자 결정
- [ ] 해석해·수지·수렴성과 필수 NT11 외부 비교 통과
- [x] 승인 정식화와 원본 reference 통과 조건의 [실측 충돌](reference-comparison-conflict.md)에 대한 사용자 결정: 기존 비교는 진단, 정식화 유지, 새 reference 모델 사용
- [ ] 해석해·수지·수렴성 검증과 원본 NT11 진단 비교의 실패 metric 보존
- [ ] 새 reference 모델·CSV·identity 확정 및 필수 외부 비교 통과
- [ ] 전체 MSVC Debug build/CTest 및 기존 실패 대비 확인
- [ ] 독립 physics 검토와 완료 evidence 기록
@@ -221,7 +221,7 @@ Domain이 정의를 소유하고 AnalysisModel이 non-owning view를 제공하
| T8 | T6 | 구현 담당: thermal HDF5 writer·self-check | Synthetic state round trip·schema/identity/초기 dataset 부재·P=0·atomic 실패 |
| T9 | T5,T7,T8 | 구현 담당: prepared_analysis와 CLI 연결 | 양성 CLI·lexical output·exit·lease·기존 결과 보존 |
| T10 | T9 | 구현 담당: analytical physics·reference comparator/integration | 독립 oracle·온도/flux/reaction·수렴과 NT11 source mapping/tolerance |
| T11 | T10 | 검증 담당·독립 physics 검토자; 메인 완료 문서 | 전체 MSVC Debug build/CTest·필수 reference·baseline 대비·coverage 한계 |
| T11 | T10 | 검증 담당·독립 physics 검토자; 메인 완료 문서 | 전체 MSVC Debug build/CTest·새 reference 필수 비교·baseline 대비·coverage 한계 |
행동 변경은 기대 결과를 고정한 검사에서 실패를 확인한 뒤 구현한다. 구현 구조를 복제한
expected 값으로 정확도를 주장하지 않는다. 독립 numerical/physics 검토를 구현자의 자기 승인으로 대체하지 않는다.
@@ -245,7 +245,8 @@ expected 값으로 정확도를 주장하지 않는다. 독립 numerical/physics
- Semidiscrete 독립 eigenmode로 시간1차, Fourier 직사각형의 L2 온도2차·gradient1차.
- Bottom step/top 단열 slab series의 온도·flux·에너지·반력; 고정5점 두께 오차 plateau와 초기 침투 깊이 보고.
- 다중 재료/두께 strip 저항은 full-end assembly fixture로 확인한다. 내부 station BC를 CLI로 확대하지 않는다.
- 원본 Step-1 t37 NT11 729행의 identity precheck와 공통 tolerance blocking 비교.
- 원본 Step-1 t37 NT11 729행의 identity precheck와 공통 tolerance 진단 비교;
새 reference 모델이 확정되면 별도 필수 비교. [STH-ADR-015](ADR.md#sth-adr-015-원본-reference-진단-전환과-새-모델-비교)를 따른다.
에너지 defect의 scale은 저장·외력·반력 항의 절댓값 합이며 free residual을 별도로 검사한다.
E=1ᵀCT의 기준 온도 이동에 대한 DeltaE 불변성과 BE C-norm 소산은 서로 다른 검사다.
@@ -267,8 +268,10 @@ MSVC x64 developer 환경과 승인 local GoogleTest/MKL/TBB/HDF5를 사용한
`.harness/config.json`이 동일 실행을 구성할 때만 `python scripts/execute.py`를 대안으로 사용한다.
개인 설정이 없다고 runner가 preset을 선택한다고 가정하지 않는다. 새 compiler warning을 추가하지 않는다.
Reference는 [PRD STH-C08](PRD.md#sth-c08--reference-원본과-완료-evidence)의 두 원본을
승인된 dev checkout에서 byte 그대로 복사·hash 확인한다. Abaqus 실행·재생성·이름 변경·보정은 제외한다.
기존 Reference는 [PRD STH-C08](PRD.md#sth-c08--reference-원본과-완료-evidence)의 두 원본을
승인된 dev checkout에서 byte 그대로 복사·hash 확인했다. Abaqus 실행·재생성·이름 변경·보정은 제외한다.
기존 비교의 불일치는 진단으로 보존하고 새 reference의 경로·identity·비교량이 확정된 뒤
필수 비교를 실행한다.
실제 명령/exit, hash, baseline 및 최종 결과는 implementation-verification 문서에 기록한다.
재현된 무관한 기존 HHT 시간수렴 실패는 전체 검사에서 제외하지 않고 마지막에도 비교한다.
@@ -363,16 +363,19 @@ native exit 0이다. Inventory **592개**, application 관련 **28/28 PASS**이
script/binary hash를 포함한 `review-execution.json`을 보존했다. Probe 자체도 native exit 0이다.
이는 실행 경로와 저장 계약 검증이며 실제 열해의 정확도 판단은 다음 물리 검증에 속한다.
### 필수 reference 비교의 미해결 실패
### 원본 reference 비교의 실패와 진단 전환
NT11 외부 비교를 실제 실행했으나 **실패**했다. 원본 Step-1/time37/DOF11의 729행 중
87행이 기준을 벗어났고 RMS/S=0.04967408461567323으로 승인 0.01을 초과한다.
별도 C++ 공통 정책 비교도 같은 실패를 재현했다. 승인 식을 FESA 코드 없이 조립·계산한
독립 oracle는 FESA와 최대 7.673861546209082e-12 차이로 같은 reference 불일치를 보였다.
수치·원본 hash·재현 명령·의사결정 범위는 [충돌 보고서](reference-comparison-conflict.md)에
기록했다. 정식화나 tolerance를 변경하지 않았으며 기능 완료로 표시하지 않는다.
기록했다. 사용자 선택 A에 따라 승인 정식화와 공통 tolerance를 유지하고 원본 비교를
진단으로 분류했다([STH-ADR-015](ADR.md#sth-adr-015-원본-reference-진단-전환과-새-모델-비교)).
실패 행과 family metric은 변경하지 않는다. 새 reference 모델·CSV는 아직 제공되지 않아
그 필수 비교를 실행하거나 기능 완료로 표시하지 않는다.
T10 comparator checkpoint `95ba2c5`는 별도 작업 branch에 보존하고 필수 검사가 실패한
결정 전 T10 comparator checkpoint `95ba2c5`는 별도 작업 branch에 보존하고 필수 검사가 실패한
상태로 구현 branch에 병합하지 않았다. Configure/build/inventory는 native 0,
inventory 599개이며, 최종 schema/identity 음성검사 **6/6 PASS**(native 0)다.
원본 application/reference 실행의 CTest는 native 8이고, 최종 comparator 소스로 같은
@@ -1,7 +1,9 @@
# 승인 정식화와 필수 NT11 reference 비교의 충돌
# 승인 정식화와 원본 NT11 reference 비교의 충돌
상태: **미해결 — 사용자 결정 필요**. 작성일: 2026-09-29.
이 문서는 실패 evidence와 선택지를 기록한다. 정식화·초기화·허용치·blocking 분류를 변경하지 않는다.
상태: **비교 분류 결정 완료; 원본 수치 불일치 유지**. 작성일: 2026-09-29.
사용자는 정식화를 유지하고 기존 비교를 진단으로 전환하며 reference 모델을 변경하는
선택 A를 승인했다([STH-ADR-015](ADR.md#sth-adr-015-원본-reference-진단-전환과-새-모델-비교)).
이 문서는 결정 전의 실패 evidence를 그대로 보존한다. 정식화·초기화·공통 허용치는 변경하지 않는다.
기준은 [PRD STH-C03/C04/C08](PRD.md), [formulation](formulation.md),
[numerical review](numerical-review.md), [공통 tolerance](../TOLERANCE.md)다.
@@ -31,7 +33,7 @@ FESA가 생성한 HDF5는 입력의 lexical sibling이다.
별도 C++ comparator도 기존 `ReferenceTolerancePolicy::Evaluate`를 그대로 사용하여
동일 실패를 확인했다. `ThermalReference.OriginalAbaqusNt11AtExactTime37`의 실제 결과는
729행, 87개 실패, RMS/S=0.049674084615673214, max_abs=245.26294650091862다.
해당 CTest 실행은 native exit 8이며 필수 비교를 통과로 표시하지 않았다.
결정 전 해당 CTest 실행은 native exit 8이었고, 비교를 통과로 표시하지 않았다.
## 2. FESA 코드를 사용하지 않은 독립 계산
@@ -74,24 +76,23 @@ Initial Conditions 절은 생략된 초기 온도의 기본값을 0으로 설명
reference 생성기의 내부 행렬·적분·초기 처리 방식이나 그 동등성을 단정하지 않는다.
다른 방법의 수치 결과가 비슷하다는 이유만으로 FESA의 승인 방법을 교체하지 않는다.
## 4. 결정이 필요한 범위
## 4. 승인된 결정과 남은 비교
현재 두 조건을 동시에 충족하지 못한다.
원본 모델에서는 다음 두 조건을 동시에 충족하지 못했다.
1. 승인된 consistent C, Q4×P2 두 구간, exact thickness 적분과 raw 초기값 BE를 유지한다.
2. 이 원본 NT11 비교를 현재 공통 tolerance의 필수 blocking 검사로 통과한다.
검토 가능한 선택지는 다음과 같다. 어느 것도 아직 승인되지 않았다.
사용자는 첫 조건을 유지하고 기존 원본 비교를 **진단**으로 전환하는 선택 A를 승인했다.
공통 tolerance 계산과 87행 실패, RMS/S 초과를 그대로 기록한다. 비교기의 새 진단
테스트가 통과하더라도 이는 열해가 원본 CSV tolerance를 만족한다는 뜻이 아니다.
독립 해석해·수지·수렴성 검증과 새 reference 모델의 필수 비교가 완료 조건이다.
새 모델 및 결과 CSV의 경로·hash·비교 시점·성분·row identity는 아직 확정되지 않았다.
원본을 변경하거나 새 모델의 결과를 추정하여 통과로 표시하지 않는다.
- **정식화 유지:** 이 reference family의 역할을 진단 비교로 재정의할지 결정한다.
공통 숫자 tolerance와 실패 metric은 그대로 남기며, 독립 해석해·수지·수렴성 검증을
완료 조건으로 유지한다. Feature acceptance/ADR의 명시적 변경이 필요하다.
- **필수 reference 통과 유지:** 현재 방법 선택을 다시 검토한다. 먼저 필요한 수치 방법의
장단점과 새로운 정식화·검증 계획을 제시하고 승인받아야 하며, 임의 lumping·초기 투영·
clamp 또는 reference 맞춤 수정으로 바로 넘어가지 않는다.
T1–T9 구현·검증은 유지한다. T10은 실패를 숨기지 않은 comparator checkpoint까지이며,
남은 slab/수렴성 검증과 T11 전체 회귀·독립 physics 완료 판정은 수행 전이다.
T1–T9 구현·검증은 유지한다. T10은 실패를 숨기지 않은 comparator checkpoint 이후
진단 분류와 slab/수렴성 검증을 진행 중이다. T11 전체 회귀·독립 physics 완료 판정은
수행 전이다.
## 5. 보존 evidence