Files
FESADev/docs/shell-transient-heat-transfer/ADR.md
T

158 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Shell Transient Heat Transfer 결정 기록
- Feature ID: `shell-transient-heat-transfer`
- Owner: 메인 assistant
- 상태: Accepted (구현 검증 완료와 구별)
- 승인 근거: ready 인터뷰의 개별 선택, 최종 “네 승인합니다”, 후속 `dryforge:go` 요청.
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md),
[공통 ADR](../ADR.md#adr-028). 요구사항과 현재 checklist는 [PRD](PRD.md),
지역 소유권은 [FEATURED_AGENTS](FEATURED_AGENTS.md)를 따른다.
아래 결정은 이전 Proposed 상태를 대체하며 실제 계산 결과의 정확도 승인을 의미하지 않는다.
수식 원본은 [formulation](formulation.md), 독립 판정은 [numerical-review](numerical-review.md)다.
## STH-ADR-001: Uncoupled transient 범위
- 상태: Accepted
- 결정: 구조해석과 분리된 단일 Shell 과도 열전달 procedure를 구현한다.
- 이유: 사용자가 “지금은 uncoupled heat transfer를 구현합니다”라고 명시했다.
- 영향: 열응력·변형 피드백·양방향 연성은 장기 목표이며 이번 acceptance에서 제외한다.
## STH-ADR-002: 다섯 두께 온도점
- 상태: Accepted; 초기 두께 등온 선택을 대체
- 결정: 균질 centered section의 온도점은 항상 다섯 개다. 면내 및 두께 전도를 계산한다.
Source DOF 11/13/15는 bottom/midsurface/top이다.
- 이유: 기존 DS4 reference와 사용자가 선택한 두께 방향 범위를 유지한다.
- 영향: 적층·사용자 선택 온도점 수·삼각형은 제외하며 Abaqus 내부 정식화 동등성을 주장하지 않는다.
## STH-ADR-003: 상수 물성과 제한된 열입력
- 상태: Accepted; edge 부분은 STH-ADR-012로 대체
- 결정: 양의 유한 상수 k/rho/c와 요소 집합별 재료·일정 두께를 사용한다.
초기 온도는 node/Nset별로 지정하되 한 절점의 두께 전체에 동일하다.
지정 온도와 집중 열입력은 source DOF 11/15에만 허용하며 step 중 일정하다.
- 이유: 사용자 선택 범위에서 독립 검증 가능한 첫 열해석 기능을 구성한다.
- 영향: 온도 의존·이방성·표면 분포 flux·대류·복사·내부 발열·내부 station 직접 입력은 제외한다.
Concentrated P는 signed power이며 h나 면적을 곱하지 않는다. 중복 하중은 source 순서로 합한다.
## STH-ADR-004: 모든 완료 증분과 초기 온도 저장
- 상태: Accepted
- 결정: 초기 raw 온도와 모든 완료 증분의 온도·flux·반력 열률을 공식 HDF5에 저장한다.
- 이유: 한 시점의 reference 외에도 전체 과도응답을 검증해야 한다.
- 영향: Output no-op 요청이 필수 저장량을 줄이지 않는다. 초기 flux/reaction dataset은 없다.
종료 규칙은 009, 영속 schema는 013을 따른다.
## STH-ADR-005: NT11 외부 비교와 독립 물리 검증
- 상태: Superseded by STH-ADR-015 (원본 비교의 blocking 분류에 한함)
- 결정: 기존 CSV의 Step-1, t=37, NT11을 필수 비교하고 나머지는 해석해·수지·수렴으로 검증한다.
- 이유: Reference의 실제 coverage는 단일 시점의 아랫면 온도 729행이다.
- 영향: 공통 TOLERANCE의 row/family 기준을 유지한다. 추가 Abaqus CSV나 Abaqus 실행은 필수가 아니다.
원본 음수·단위·시간을 보정하지 않는다. Source identity 오류는 tolerance 전에 거부한다.
## STH-ADR-006: 단일 step
- 상태: Accepted
- 결정: 초기 온도에서 일정한 지정 온도·열입력으로 하나의 transient step을 수행한다.
- 이유: 사용자의 명시 범위 선택이다.
- 영향: 여러 step, restart, 시간 변화 amplitude와 자동 시간 증분을 제외한다.
## STH-ADR-007: Q4×P2 두 구간과 consistent K/C
- 상태: Accepted; 이전 수치 방법 Proposed 상태를 대체
- 결정: 요소당 20 DOF, Q4 면내 보간과 C0 두 구간 P2 두께 보간을 사용한다.
K=integral(B^T k B), C=integral(rho c H^T H), 면내 3×3 Gauss와 두께 exact Z를 채택한다.
- 이유: 전도·열저장·반력·에너지를 같은 Galerkin 보간으로 연결하며 직접 54점 적분으로 검산할 수 있다.
- 대안·영향: Lumped C, reduced integration, hourglass, 인공 확산과 온도 clamp는 추가하지 않는다.
Consistent C는 급변 경계에서 positivity를 보장하지 않으며 일반 warped patch의 3×3은 exact가 아니다.
Reference 실패에 맞춰 방법을 변경하지 않는다. 수치 상세 기준은 구현 전 독립 검토한다.
## STH-ADR-008: 실제 midsurface metric과 normalized station 접속
- 상태: Accepted; 이전 물리 범위 검토 대기를 대체
- 결정: 실제 bilinear 3D midsurface의 metric/법선을 사용하고 두께 offset 곡률 보정을 생략한다.
공유 source node의 같은 normalized station을 접속하며 fold와 두께 단차도 같은 규칙을 사용한다.
- 이유: 승인한 4절점 Shell과 다섯 온도점을 일관된 product-domain으로 표현한다.
- 영향: 접합부의 상세 3D 전도·접촉 저항·추가 부피/용량을 해상하지 않는다.
방향이 일관된 manifold mesh만 허용하며 T-edge/vertex-only 접합을 거부한다.
전체 patch validity를 검증하고 수치적으로 증명할 수 없는 geometry는 진단한다.
임의 warp/aspect cutoff나 자동 normal flip·node weld로 지원 의미를 바꾸지 않는다.
## STH-ADR-009: Backward Euler와 마지막 짧은 증분
- 상태: Accepted; 이전 정수 배수 종료 제한 제안을 대체
- 결정: A=C/delta+K를 사용하고 동일 계수 factorization을 재사용한다.
기본 dt로 진행하고 종료까지 남은 구간만 단축한다. dt>T_end이면 한 증분이다.
- 이유: 사용자의 시간 제어 선택을 유지하며 정확한 종료 시점을 저장한다.
- 영향: 마지막 delta가 실제로 달라지면 재분해하고 RHS·반력·수지 모두 같은 delta를 사용한다.
n*dt 기반 시간격자의 표현오차와 INC 사전검사를 고정한다. 무구속 transient도 유효하다.
Generic all-constrained 처리는 algebra 검증이며 공개 내부 station BC 지원이 아니다.
## STH-ADR-010: Raw 초기값과 step BC override
- 상태: Accepted; 이전 초기 상태·default 검토 대기를 대체
- 결정: t=0은 raw 초기 온도이며 미지정 값은 0이다. 첫 양의 증분에서 g를 적용한다.
첫 RHS의 C_fc*T_c_old/delta를 보존한다. Model BC를 상속하고 같은 target의 step BC가 덮어쓴다.
- 이유: 원래 초기 상태와 첫 증분의 열저장·반력·에너지 변화를 보존한다.
- 영향: 각 단계 안의 동일 BC 중복은 허용하고 상충은 거부한다. Thermal override를 구조 절차에 전파하지 않는다.
생략 BC 값은 0이며 초기값을 g로 projection하지 않는다. 순간 impulse를 별도 해상하지 않는다.
## STH-ADR-011: 직접 flux와 full residual 반력
- 상태: Accepted; 이전 recovery 검토 대기를 대체
- 결정: q_global=-k B T를 면내 네 점×두께 여섯 trace에서 직접 복구한다.
Global q와 local frame을 저장하며 local q를 중복 필수 저장하지 않는다.
반력 열률은 C*DeltaT/delta+K*T-Q의 constrained 성분이고 양수는 모델로 공급되는 열이다.
- 이유: 온도 기울기와 열저장을 포함한 반력을 서로 다른 observable로 검증한다.
- 영향: 0-/0+와 요소 경계 값을 평균하지 않는다. Free residual·열에너지는 내부 검증 evidence다.
Fourier flux 경계 적분으로 FE 반력을 대체하지 않는다. 초기 반력을 0이나 NaN으로 저장하지 않는다.
## STH-ADR-012: Edge 분포 열입력 연기
- 상태: Deferred; 이전 edge kernel·syntax 제안을 대체
- 결정: FEM-REQ-SHELL-THERMAL-011을 이번 구현에서 제외한다. Edge kernel·keyword·공개 테스트를 추가하지 않는다.
- 이유: Ready에서 사용자가 집중 열입력만 먼저 구현하는 범위를 승인했다.
- 영향: 이전 q_in*h*L와 edge weighting 유도는 이번 제품 계약이 아니다.
후속 지원에는 별도 단위·부호·대상·중복 의미 및 수치 검증이 필요하다.
## STH-ADR-013: 입력 subset과 영속 thermal schema
- 상태: Accepted
- 결정: [PRD STH-C02](PRD.md#sth-c02--공개-입력-충돌과-부가-keyword)의 입력과
[STH-C05](PRD.md#sth-c05--hdf5-외부-계약)의 schema version 1을 구현한다.
- 이유: Domain/source identity에서 결과 row까지 재현 가능한 외부 계약을 고정한다.
- 영향: Temperature N×5, global flux E×4×6×3, constrained reaction P를 저장한다.
P=0도 빈 dataset을 유지하며 t=0 flux/reaction은 dataset 자체가 없다.
지정된 no-op만 warning과 함께 허용하고 unknown keyword는 오류다.
초기/완료 frame, mapping·units·finite 값을 atomic finalize 전에 self-check한다.
## STH-ADR-014: Candidate 보존과 검증 evidence
- 상태: Accepted
- 결정: Domain 정의, non-owning AnalysisModel, DofManager numbering, thermal mutable state를 분리한다.
Solve/recovery/검증을 마친 candidate만 반영하고 전체 성공 후 최종 HDF5를 원자 교체한다.
- 이유: 실패가 이전 accepted state와 기존 최종 결과를 오염시키지 않도록 한다.
- 영향: Deterministic COO reduction과 기존 CLI/lease/exit 분류를 유지한다.
전체 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가 잘못되었다는 판정이 아니다.