From e586ff5995b7ff6b4ee05eed32f7a588d26a4be9 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Tue, 29 Sep 2026 21:45:08 +0900 Subject: [PATCH] feat: register reviewed transient heat execution --- docs/shell-transient-heat-transfer/PRD.md | 2 +- .../implementation-verification.md | 24 +++++++++++++++++++ src/fesa/CMakeLists.txt | 2 ++ tests/CMakeLists.txt | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/docs/shell-transient-heat-transfer/PRD.md b/docs/shell-transient-heat-transfer/PRD.md index f213ddc..a13b4f7 100644 --- a/docs/shell-transient-heat-transfer/PRD.md +++ b/docs/shell-transient-heat-transfer/PRD.md @@ -434,7 +434,7 @@ Missing/extra/duplicate/nonfinite/identity 오류는 tolerance 전에 실패다. - [x] 정식화 정합과 상세 수치 기준의 [독립 검토](numerical-review.md) 완료 - [x] Production 변경 전 전체 baseline과 reference hash evidence 기록 - [x] Thermal semantic model·DOF·geometry·K/C·flux 구현 및 [독립·통합 검증](implementation-verification.md#요소-kernel과-형상-검증) -- [ ] Thermal 입력 subset·진단·결정적 조립·시간 적분 구현 및 검증 +- [x] Thermal 입력 subset·진단·결정적 조립·시간 적분 구현 및 [범위별 검증](implementation-verification.md#backward-euler-procedure와-candidate-검증) - [ ] HDF5·CLI·candidate와 기존 결과 보존 검증 - [ ] 해석해·수지·수렴성과 필수 NT11 외부 비교 통과 - [ ] 전체 MSVC Debug build/CTest 및 기존 실패 대비 확인 diff --git a/docs/shell-transient-heat-transfer/implementation-verification.md b/docs/shell-transient-heat-transfer/implementation-verification.md index b0c6440..396f54b 100644 --- a/docs/shell-transient-heat-transfer/implementation-verification.md +++ b/docs/shell-transient-heat-transfer/implementation-verification.md @@ -291,4 +291,28 @@ native exit 0이며, 이는 승인 계약 해석의 evidence다. 최초 검토 보인다. `D_f=0`은 물리 잔차의 exact zero 증명이 필요하며 단순히 interval이 0을 포함한다고 통과시키지 않는다. Procedure 구현의 실제 interval 검증은 별도로 남는다. +### Backward Euler procedure와 candidate 검증 + +`ef8ec473`의 시간 적분 구현은 독립 행동 계약 검토와 별도 exact 산술 검산에서 +잔여 차단 항목이 없었다. Raw 초기값, 첫 증분의 old constrained 용량 항, +실제 delta가 같을 때의 factorization 재사용, full 반력·flux 복구와 실패 전 commit +방지를 구현했다. 공개 API는 `Result`이며 내부 검산용 +partition이나 recovery 주입을 공개 경계조건 기능으로 노출하지 않는다. + +작업 checkout의 `t7-final-{build,inventory,test}.log` 및 native exit JSON은 모두 0이다. +Inventory **570개**, 관련 **91/91 PASS**이며 새 10개 tests는 두 증분 exact fixture, +all-constrained, 상쇄와 잘못된 solve 거부, 실제 시간격자·factorization 횟수, +실제 MKL affine mode/flux, 이력 보존, signed power·분리 영역, subnormal 경계, +잘못된 입력과 Serial/TBB 이력 일치를 검사한다. `t7-tested-source-hashes.json`은 +실행한 6개 소스·테스트가 최종 commit과 동일함을 식별한다. + +메인의 독립 실행기는 committed algebra와 bounds를 별도 MSVC target으로 호출하고 +Python Fraction oracle와 비교했다. **31,668개 산술 enclosure**, 인증된 **502개 증분**의 +**737개 free residual**, **502개 열수지**, **108개 단열 소산**에서 경계 위반이 없었다. +추가 무작위 algebra 사례 1개는 full-free 인증 불가로 거부됐으며 통과 수에 포함하지 +않았다. 허용치나 production을 결과에 맞춰 변경하지 않았다. Evidence와 적용 한계는 +작업 checkout의 `.dryforge/review/t7_ef8ec473/review.md`, `comparison.json`, 실제 +runner/checker 출력·native exit 기록에 보존했다. 최종 독립 build/runner/checker는 exit 0이다. +HDF5 구현과 합친 통합 검사는 writer의 독립 검토 후 수행한다. + 전체 thermal 검사, NT11 외부 수치 비교와 실제 결과의 독립 physics 평가는 아직 수행하지 않았다. diff --git a/src/fesa/CMakeLists.txt b/src/fesa/CMakeLists.txt index f10bb5e..54d5846 100644 --- a/src/fesa/CMakeLists.txt +++ b/src/fesa/CMakeLists.txt @@ -19,6 +19,8 @@ add_library( analysis/prepared_analysis.cpp analysis/thermal_analysis_state.cpp analysis/thermal_time_grid.cpp + analysis/thermal_transient_algebra.cpp + analysis/transient_heat_procedure.cpp app/fesa_application.cpp app/output_paths.cpp assembly/load_assembler.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2bfcead..88eec27 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -20,6 +20,7 @@ add_executable( unit/analysis/newton_iteration_log_test.cpp unit/analysis/thermal_time_grid_test.cpp unit/analysis/thermal_analysis_state_test.cpp + unit/analysis/transient_heat_procedure_test.cpp unit/assembly/parallel_for_test.cpp unit/assembly/load_assembler_test.cpp unit/assembly/surface_pressure_assembler_test.cpp