eaa5cbeb21
Integrate Hex8 mass verification and fixed-null-basis shell dynamics with numerical and physics handoff evidence. Preserve interrupted reference and full-validation status; full integration validation is deferred until after performance optimization.
60 lines
4.9 KiB
Markdown
60 lines
4.9 KiB
Markdown
# Hex8 동해석 내부 정밀도 변경안 — 승인됨
|
|
|
|
2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다.
|
|
|
|
2026-10-09 사용자가 A를 선택해 내부 high+low 물리 상태와 Float64 출력의 반올림 의미를
|
|
승인했다. 이 문서는 [PRD](PRD.md)·[정식화](formulation.md)·
|
|
[numeric controls](numeric-controls.md)의 변경 근거이며, 구현 완료를 뜻하지 않는다.
|
|
실패 근거와 검증 범위는 [lessons](lessons.md)에 기록한다.
|
|
|
|
## 변경이 필요한 이유
|
|
|
|
현재 production은 단일 Float64 물리 상태를 사용한다. 두 동적 원본은 세 번째 증분의
|
|
100회 제한에서 componentwise physical residual 기준을 만족하지 못했다. Fresh Newton
|
|
보정이 저장된 변위를 바꾸지 못하는 경우를 실제 실행과 독립 검산으로 확인했다.
|
|
제한된 단일·두 좌표 탐색의 실패는 표현 가능한 해의 부재를 증명하지 않는다.
|
|
|
|
갱신 중 사라진 덧셈을 다음 반복에 누적하는 carry와, 실제 변위를 high+low로 표현하는
|
|
물리 상태는 다르다. Carry 실험의 kernel·rates·형상은 rounded high만 사용한다.
|
|
아래 승인안은 low도 물리 계산에 사용하는 별도 정밀도 계약이며, 원본 수렴을 보장하지 않는다.
|
|
|
|
## 제안하는 계산과 결과의 의미
|
|
|
|
- 내부 변위·속도·physical a·auxiliary A와 predictor를 두 Float64 값의 합으로 표현한다.
|
|
Low를 유지한 candidate와 accepted endpoint를 복사하고 다음 증분에도 전달한다.
|
|
연산별 반올림 오차·비유한 값·정규화 조건을 정의하고 독립 검증한다.
|
|
재방문 판별의 동일 상태 비교에는 low를 포함한다.
|
|
- Hex8의 상대 변위·H/E/S/P·내력·에너지·응력과 tangent는 같은 전체 상태를 사용한다.
|
|
형상 인증도 전체 상태를 포함하는 보수적 경계를 사용한다. Kernel 직전이나 H를 만든
|
|
직후 low를 버리는 구현은 이 제안을 충족하지 않는다.
|
|
- 기준 consistent M과 material/geometry 입력은 기존 정의를 유지한다. 관성력·weighted
|
|
residual·old residual·reaction·수지·수정량·update 판정도 같은 전체 상태로 계산한다.
|
|
Sparse factorization은 기존 Float64 backend를 사용하되, 보정량을 전체 상태에 누적한다.
|
|
Rounded tangent와 전체 상태 residual 사이의 일관성을 별도로 검증한다.
|
|
- HHT 계수·고정 h·exact schedule·100회 제한, 모든 원래 free 성분의 Si·exact-zero branch,
|
|
residual/correction `1e-10` 및 update/weighted identity `1e-12`를 유지한다.
|
|
Low를 사후 residual 보정이나 평형 projection으로 만들지 않는다.
|
|
- HDF5의 field·shape·Float64 dtype은 유지한다. 각 값은 내부 물리량을 Float64로 반올림한
|
|
observable이다. 내부 전체 상태의 gate PASS를 HDF5 배열만으로 같은 식을 재계산한
|
|
gate PASS로 표현하지 않는다. Self-check는 내부 값의 올바른 직렬화와 기존 schema·identity를
|
|
검증하고, 로그에 사용한 내부 산술을 명시한다. Restart는 계속 지원하지 않는다.
|
|
Float64 직렬화의 overflow·비유한 값은 실패로 처리하며 기존 최종 파일을 보존한다.
|
|
|
|
승인한 변경에서는 accepted state가 high+low 전체 물리 상태이며, published Float64 state는
|
|
그 반올림 observable이다. 같은 계산 입력이라는 이전 의미를 적용하지 않는다.
|
|
|
|
## 구현 전에 고정할 검증
|
|
|
|
1. 독립 정확 산술 oracle과 binary-power 사례로 덧셈·곱셈·나눗셈·low 보존 및 유한 범위를
|
|
검증한다. 단일 Float64로 collapse하는 대조 구현이 실패하는 의미 있는 사례를 포함한다.
|
|
2. 작은 coupled Hex8 사례에서 low가 실제 변형률·힘·관성력에 전달되는지 확인한다.
|
|
에너지 미분·tangent·객관성·형상 인증·비영 old residual의 HHT identity와 네 수정량
|
|
channel을 검증한다. 승인한 low를 제외한 다른 상태에서 gate를 계산하지 않는다.
|
|
3. Accepted/trial 복사와 실패 rollback, geometry/backend 실패, 원래 범위의 시간수렴·
|
|
에너지·운동량·반력을 검증한다. 정적·고유치의 기존 계산을 불필요하게 변경하지 않는다.
|
|
4. 제한된 실제 동적 실행에서 개선 근거를 얻고 독립 검토한 후, 원본 두 건의101개 endpoint와
|
|
공식 HDF5/외부 비교·전체 회귀를 수행한다. 외부 row5%/RMS1% 기준과 원본은 유지한다.
|
|
|
|
작은 사례에서 개선을 입증하지 못하면 추가 정밀도 확대를 자동으로 반복하지 않는다.
|
|
다음 접근과 계약 영향을 사용자에게 다시 제시한다.
|