feat: adopt lumped mass and reduced-coordinate shell HHT

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.
This commit is contained in:
KOKO\Mimi
2026-10-13 16:57:19 +09:00
parent ede137c6b4
commit eaa5cbeb21
110 changed files with 15274 additions and 971 deletions
+146 -3
View File
@@ -9,7 +9,7 @@
사용자는 HHT implicit 적분법을 사용한 dynamic 해석 구현을 준비하기 위해 requirement/research, formulation, numerical research를 차례로 요청했고, 검증 모델로 `reference/shellNL-dyn-meshfine`을 지정했다. 현재 산출물은 요구사항·근거·정식화·독립 수치 검토와 검증 계약이다. 사용자의 후속 I/O definition·implementation·physics evaluation 전체 진행 요청에 따라 [I/O 계약](io-contract.md)과 [구현 계획](README.md#재사용-handoff)을 작성하고 실제 solver 구현·검증을 진행한다.
[시간적분 정식화](formulation.md)와 [shell 관성 상세](formulation-inertia.md)의 후속으로 [독립 수치 검토](numerical-review.md#numerical-review), [수치 기준](numerical-controls.md), [검증 사례](verification-cases.md), [추가 연구](research.md#numerical-research)를 작성한다. 사용자가 **consistent kinetic mass**를 선택했으며 이번 HHT 구현 범위는 일관질량이다. 후속 전체 gate 진행 요청에 따른 구현 대상·공개 subset·출력 schema는 [HHT-ADR-009](ADR.md)에 기록한다.
[시간적분 정식화](formulation.md)와 [shell 관성 상세](formulation-inertia.md)의 후속으로 [독립 수치 검토](numerical-review.md#numerical-review), [수치 기준](numerical-controls.md), [검증 사례](verification-cases.md), [추가 연구](research.md#numerical-research)를 작성한다. 2026-10-11 사용자가 **nodal lumped kinetic mass**를 승인했다([HHT-ADR-012](ADR.md)). 과거 consistent 검증은 당시 evidence이며 변경본 통과로 승계하지 않는다. 후속 전체 gate 진행 요청에 따른 구현 대상·공개 subset·출력 schema는 [HHT-ADR-009](ADR.md)에 기록한다.
최소 구현 목표 후보는 기존 FESA-MITC4 shell의 선형 탄성 재료·기하비선형 동적 해석이다. 단일 step의 `*Dynamic,direct`, 초기 정지 상태, 고정 외곽 경계와 집중하중에 필요한 지원을 우선 정의한다. 질량·회전 관성·HHT 생략값·공식 동적 결과 범위는 근거를 확인하여 후속 정식화와 연결한다. 임의 amplitude, 시간변화 경계, 물리적 damping, contact, 소성, explicit, 다중 step/restart 또는 다른 요소의 dynamics는 이번 요청에서 지원을 약속하지 않는다.
@@ -59,7 +59,7 @@ Reference의 `max|U3|/thickness≈9.84e-5`, 기존 동일 mesh eigen reference
| --- | --- | --- |
| HHT-OPEN-001 | 음수 alpha 관례, 결합 beta/gamma, 물리적 a와 보조 A 분리 | 추천 HHT 확장 채택 및 공개 parameter subset |
| HHT-OPEN-002 | frame 0을 `0+`로 정의, 전값 force와 동적·대수 초기 평형으로 a0 계산, A0=a0; 수치 기준 N2–N4 정의 | 초기화 계약 채택과 I/O 진단 binding, 구현 후 검증 |
| HHT-OPEN-003 | **사용자 선택: consistent kinetic mass**; lumped는 비교 연구로 보존하고 이번 HHT 지원에서 제외 | 질량 종류 결정 완료; 임의 drilling inertia 없이 회전관성·영공간의 실제 구현 검증 필요 |
| HHT-OPEN-003 | **사용자 선택: nodal-lumped-kinetic**; 기존 shell eigen nodal block lumping 유지 | 질량 종류 결정 완료; 임의 drilling inertia 없이 회전관성·영공간의 실제 구현 검증 필요 |
| HHT-OPEN-004 | 기존 total rotation-vector chart에서 exact 관성·convective 항·비대칭 접선, moving-null 조건; N4–N7 및 C05–C08 정의 | 구현 후 실제 shell의 regularity·시간 수렴·회전 검증 |
| HHT-OPEN-005 | 물리적 a/각가속도와 A, endpoint 반력, T/Uphys/Udrill/W의 수학적 의미 구별 | 공식 공개 quantity·HDF5 schema 및 mapping의 I/O 결정 |
| HHT-OPEN-006 | 고정 100 increments, full Newton, 실패 trial 폐기, 동일 state의 전체 이력 commit; N2의 100 corrections/수렴 기준 정의 | I/O 실패 lifecycle과 reference 밖 입력 범위, 구현 후 실패 보존 검증 |
@@ -76,12 +76,24 @@ Reference의 `max|U3|/thickness≈9.84e-5`, 기존 동일 mesh eigen reference
## 현재 checklist
아래 날짜 없는 실행 완료 항목은 기존 consistent 구현의 이력이다. 변경본의 통과로 승계하지 않는다.
- [x] HHT-ADR-012 변경본의 nodal measure 일관성·독립 관성/접선/물리 검토·원본 reference 재검증. [채택 evidence](../hex8-structural-analysis/lumped-mass-adoption.md): 관련 Debug C++ 38 PASS·Python 137 PASS, production Release 원본 U 101 families PASS·UR 경고200.
- [x] HHT-ADR-012 변경본 전체 Debug 회귀의 자연 종료와 판정: 789개 native8(784 PASS·4 FAIL·1 SKIP). Test-only 수정 후 관련4개 PASS와 discovery790은 별도 evidence이며 전체790 재실행은 아니다. C08a/C08b 해결·C04a coverage는 미완료로 유지.
- [x] 변경본 C08a/C08b 재실행과 결과 판정: C08a 정확도 FAIL, C08b `h=1/256`의 Newton trial principal-chart 이탈로 새 runtime FAIL. 허용값은 유지하며 실패 해결은 아래 미완료 항목이다. [현재 evidence](../hex8-structural-analysis/lumped-mass-adoption.md).
- [x] 2026-10-12 C08b 실패 state의 원인 조사: history·moving-null 미분·선형 solve 독립 대조, predictor 시작과 명시적 drilling 잔차의 private 정확 Newton 후보 작성 및 scoped N5 검사. [조사 보고서](newton-rotation-investigation.md). 후보 채택·공식 C08 통과를 뜻하지 않는다.
- [x] 2026-10-12 [HHT-ADR-013](ADR.md) 초기 Newton 정책 구현: 같은 frozen predictor의 q_p/q_n 자유 energy 잔차 비교, 실제 첫 회전 오류 분류 및 nonfinite recovery 진단 분리. 관련 Debug37/37 native0·독립 수치 검토 완료. [변경 evidence](newton-start-policy.md).
- [x] HHT-ADR-013 변경본의 h=1/256 runtime 회귀와 current-source Release 원본101-frame 재생성·비교: 65-frame runtime PASS·U101 families PASS/UR 경고200·독립 kinetic/balance 대조 일치. [변경 evidence](newton-start-policy.md). Runtime/원본 일치를 C08/N7 시간 정확도 해결로 승계하지 않는다.
- [x] HHT-ADR-013 변경본의 전체802 Debug·공식 C08b 전체5 grid의 자연 종료와 판정. 제외 없는 전체 CTest는11384.61초·native8:799 PASS·C08 정확도 FAIL2·기존 C04a SKIP1이며 추가 예외0이다. C08b 5개 grid의 runtime finding은 CLOSED, 시간 정확도는 미완료다. Source·원본·binary identity 대조와 독립 bounded 검토는 [변경 evidence](newton-start-policy.md)를 따른다. execute.py의1800초 timeout native1과 최초 중단은 전체 완료 evidence가 아니다.
- [x] 2026-10-12 권장 후속 조사 실행: 소형 moving-null DAE의 전체 시점 차수 독립 검산, 실제 C08b 해상도 및 fixed-state P/history drift 분리, 같은 HHT carried-A private 후보의512–4096 native0 실행. [실행 보고서](temporal-remediation.md). Production 채택·C08/N7 통과·acceptance 변경을 의미하지 않는다.
- [x] 사용자 지정 모델·출력과 현행 dev 기준 확인.
- [x] 격리 worktree 및 Feature 핵심 문서 작성.
- [x] Requirement 초안: 원자적 요구사항과 acceptance intent 작성.
- [x] Research 초안: 일차·공식 근거의 열람 범위, 입력 생략 의미, 검증 후보와 근거 공백 정리.
- [x] 문서 간 범위·비교 정책·로컬 링크 및 reference 원본 보존 정적 검토.
- [x] 사용자 질량 선택 반영: 이번 HHT 기본·구현 범위는 consistent kinetic mass.
- [x] 2026-10-11 질량 선택 반영: 이번 HHT 기본·구현 범위는 nodal lumped kinetic mass.
- [x] 나머지 물리·공개 parameter·공식 결과 범위 확정: HHT-ADR-009와 I/O 계약.
- [x] Formulation 후보 작성: HHT·정확한 유한회전 관성·초기화·잔차·접선·회복.
- [x] 독립 수식 검토와 variable-mass / moving-null 제조해 검산; 메인 재현 확인.
@@ -91,9 +103,140 @@ Reference의 `max|U3|/thickness≈9.84e-5`, 기존 동일 mesh eigen reference
- [x] HDF5 구현과 readback 검증: state/writer focused Debug suite와 원본 101-frame 비교 실행 완료. 후속 발견된 굽힘 단면력 복구 오류의 수정 후 HDF5 재검증은 별도 항목이다.
- [x] 지정 reference U 101 families PASS, UR row/RMS 경고 200건 기록. Reference 성공은 C08/physics 통과가 아니다.
- [ ] C08a/C08b 시간수렴 실패 해결: [독립 검토](implementation-numerical-review.md), [물리 검토](physics-evaluation.md). 현 알고리즘과 tolerance를 유지한 실패 재현 완료.
- [x] 2026-10-12 [HHT-ADR-014](ADR.md) 사용자 승인: C08b P absolute/balance 판정, 최종 finer grid 추가, 실제 shell reduced-coordinate HHT와 shell schema v2 의미 구분. 승인은 구현 통과가 아니다.
- [x] 2026-10-13 [HHT-ADR-015](ADR.md) 사용자 승인: C08a 원 grid 보존 및 최종512/1024 추가, hidden1/2 모든 frame normalized bound 판정. 승인은 검증 통과가 아니다.
- [x] 2026-10-13 [HHT-ADR-016](ADR.md) 사용자 승인: Reduced N3 whole/requested 증분의 실제 high+low 산술 검사와 저장 high의 RN-even 검사 분리. 승인은 검증 통과가 아니다.
- [x] 2026-10-13 [HHT-ADR-017](ADR.md) 사용자 승인: 병진 기준 만족 후 회전·보조변수 부분 행렬 보정, 실제 부분 행렬 N2-L 검사 및 full-model defect를 보존하는 N7. [독립 검토](numerical-review-channel-newton.md) 완료; 구현 통과와 구별한다.
- [ ] HHT-ADR-017 production/C08 controller 구현·trigger/thaw/100/rollback·omitted-U N7 회귀와 자연 C09/C08·원본·전체 Debug 재검증.
- [x] 2026-10-13 [HHT-ADR-018](ADR.md) 사용자 승인: 초기 analytic null 직교 보완공간의 fixed sparse basis와 부분구속 혼합 chart 정책. 승인은 solver 검증 통과가 아니다.
- [x] HHT-ADR-018 [상세 수식](formulation-fixed-null-basis.md) 및 [독립 정적 수치 검토](numerical-review-fixed-null-basis.md): sparse augmented blocks·scaled operator/undo·횡단성·초기화·N3/CA/N7 계약. Runtime PASS와 구별한다.
- [ ] HHT-ADR-018 production/controller 및 N3/CA/N7 변환·initial/부분구속/N5/C09·공식 C08·원본·전체 Debug 재검증.
- [ ] HHT-ADR-016 production/controller·표현 경계/산술 mutation 검사·C08·reference·전체 Debug 재검증.
- [x] HHT-ADR-015 변경본 C08a 전체7 grid의 공식 시간수렴·hidden1/2·N7 재검증: ADR-018 최종 controller 계수 수정본 Release native0·703.90초. C08b·전체 Debug·reference 완료와 구분한다.
- [ ] Carried-A production 산술 및 해당 N5/N7·BC·실패보존 검증.
- [ ] Reduced shell embedding·정확한 chain-rule/접선·초기화·부분구속·원 residual/hidden 검증.
- [x] Shell dynamic schema v2·public diagnostic A 의미·reader/comparator/readback focused 검증: state/writer 관련 Debug와 Python comparator47 PASS. Actual production 원본101-frame 비교와 전체 회귀는 아래 미완료 항목으로 구분한다.
- [ ] 승인된 C08b32768/65536/131072 실제 실행과 시간수렴·P/E/L 판정.
- [ ] HHT-ADR-011에 따른 가속도 복구 후보 정식화·독립 검증 후 채택 여부 결정.
- [x] 굽힘 단면력의 두께 계수 수정: 최신 Debug 관련 14 tests PASS, 원본 HDF5 재생성·비교 및 `M=t³Cκ/12` 독립 대조 완료. 전체 회귀 상태는 아래 항목과 구분한다.
- [ ] C09–C11 잔여 coverage: rigid translation 전체 이력, Newton100/101·실패 보존, 3회 결정론·partition·전체 모델 covariance.
- [ ] Solver 구현·구성된 build/test·독립 물리 및 reference 검증. 최신 Debug build 및 C08 temporal2개 제외 CTest는475 PASS/1 C04a SKIP; C08 실패와 전체 gate 미완료는 유지한다.
2026-10-13 동결 source의 reduced operator·actual N5·procedure·산술 Debug15 PASS 및
Release16 PASS를 확인했다. Large DIRECT의 Ar→좌표 재구성 상쇄를 실제 p 증분 누적으로
수정했으며 원 N3의 requested increment trace·기존 수치 기준을 유지했다.
[현재 실행 기록](temporal-remediation.md#좌표-증분-산술-수정-후-현재-범위)과
[구현 기록](implementation-c08-reduced.md)을 따른다. 원본 Release 실행은
증분39·t=3.9에서 increment trace 검사로 실패했다(CLI exit5).
C08b는 기존5 grid 실행 후 첫 추가 grid에서
hidden position 판정 실패로 종료했다(599.92초, native8). C08a의 추가 grid/hidden 판정은
[승인된 변경](c08a-refinement-proposal.md)이다. 승인 grid7개를 실행한 Release는
최종 오차·차수를 만족했으나 q increment trace 및 추가 velocity gate로 native8이었다.
누적 산술 수정과 계약 정정 후의 최신 검증을 별도로 수행한다.
보상 누적 변경본의 C08a 전체7 grid도 888.432초·native8로 종료했다.
Whole/requested 좌표 trace는 각각58건 실패했다. 독립 exact 검산에서
58개 모두 현재 값이 가장 가까운 binary64 좌표였으며 인접 좌표도 원 기준을
만족하지 못했다. [좌표 표현 분리 제안](c08-n3-coordinate-representation-proposal.md)은
HHT-ADR-016으로 승인됐으며 변경본의 검증은 진행 중이다. 승인 이전 FAIL 판정은 보존한다.
ADR-016 exact threshold 변경본은 전체 Debug target build 및 focused9개가 통과했다
(149.36초, native0). N3 산술6개, warped 공유 절점 실제 N5, genuine nonzero C1 및
독립5³ 관성 대조의 범위다. 초기 재구성 C09·공식 C08 grid·production reference·
전체 configured Debug 검증 완료를 뜻하지 않는다.
Actual N5 third-gradient mutation 검사는 통과했다. Proper-Q C09의 초기
행별 평형 실패는 canonical primitive-gradient 수정 후 통과했지만,
direct director increment 변경본도 increment1·outer100의 physical moment N2에서
실패했다. 요소 관련 Debug16개 PASS를 전체 C09 통과로 승계하지 않는다.
승인 N2 채널 기준 및 실제 재조립 scale와의
계약 정정은 [후속 실행 기록](temporal-remediation.md#10-보상-좌표-누적-적용-후-재검증)을 따른다.
문서 gate의 완료와 solver 기능의 완료를 구별한다. 현재 구현 단계에서는 내부 수치 검증, solver build/test 및 지정 reference 해석·비교를 실행한다. 통과 여부와 physics 평가는 실제 evidence로 갱신한다.
2026-10-13 ADR-017 구현 전 최신 Release 공식 C08a7-grid는470.47초·native0으로
통과했다. Configured Debug 관성13개·actual N5·partition 회귀는 통과하지만
C09 full Newton100은 실패했다(전체 focused15 PASS·1 FAIL). Helper/partition
추가 Debug 두 검사는 native0이다. 이 bounded evidence는 ADR-017 변경본의
검증으로 승계하지 않는다. [현재 실행 기록](temporal-remediation.md)을 따른다.
ADR-017 변경본의 configured Debug C09는 여섯 solver trajectory를 완료했지만
finite-rotation global covariance에서 native8·113.03초로 실패했다.
[실제 진단](channel-newton-covariance-diagnostic.md)은 matched-state assembly와
비선형 selector recurrence 차이를 분리했다. [고정 null 보완공간 제안](fixed-null-basis-proposal.md)은
HHT-ADR-018로 승인된 후속 chart/integrator 변경이며 기능 완료 checklist는 그대로 미완료다.
ADR-017 최종 parity의 Release C08a7-grid+helper2는 native0·760.84초에
통과했다(최소order1.80500237/N7 separation157.542906). Debug 실제 초기 이력
64-step+helper2도 native0·786.88초다. 이 bounded 결과는 C09 covariance,
C08b 전체8-grid·원본 production 비교·전체 configured Debug의 대체가 아니다.
ADR-018의 첫 configured Debug 전체 target build는 native0이며, 같은 동결 source의
focused26개가 native0·176.41초에 통과했다. 비영 initial analytic null의 비성분 basis,
부분구속 exact0·proper-Q 평면 변환·S/G 분리·계수 radius 보존·N3/제한 Newton/실패 보존과
실제 warped/shared-node mixed-time N5 및 항 누락 검사가 포함된다(N5 152.47초).
이는 C09 전체 이력, graph coefficient-BL certificate, 공식 C08·원본·전체 Debug의
완료 evidence가 아니다. 별도 private proper-Q 실행의 inner-graph100 실패도 보존하며
변경본 기능 checklist는 미완료다.
같은 첫 source epoch의 configured Debug C09는 native8·238.51초에 실패했다.
Proper-Q 병진 trajectory의 증분2·t=0.5에서 inner-graph100에 도달했다.
독립 raw 감사는 전체 q/z의4-cycle과 일부 phase의 정확한2-lag global-q 반복을
확인했다. Private z만 검사하던 기존 반복 감지의 보완은 원 endpoint 기준을
유지하는 수정으로 진행하며, 변경본 C09 통과와 공변성 판정은 아직 미완료다.
Actual-q 반복 감지와 graph certificate 보완을 포함한 후속 Debug binary의
경계12개 검사는 native0·2.86초, configured C09는 native0·117.23초에 통과했다.
Native basis 생성의7개 입력·63계수는 같은 raw binary64 입력과 고정 선택축의
독립 Decimal1000/1200 대조에서 실제 출력 radius 안에 있었다.
Controller 소스의 실행 중 한정 위치 이동·복원 후 hash 불일치는 별도로 기록하며,
이 실행을 완전한 source7 identity 일치로 표현하지 않는다. Production·검사 exporter·
실행 binary의 관련6개 hash는 일치한다. Projection/lift의 오차 반경을 실제
Neumaier 합산 순서로 재현하는 후속 소스와 fresh identity 검증은 진행 중이다.
공식 C08·원본·전체 Debug와 기능 완료 checklist는 계속 미완료다.
Neumaier source-order projection·p→z combined lift·실제 frame 중심 차이 반경을
반영한 최종 epoch의 configured Debug 전체 target build는 native0이다.
Controller 경계4개(native0·2.15초), reduced-core27개(native0·372.14초),
CA/제한 Newton/N7 omitted-U5개(native0·1.98초)가 통과했다.
Actual warped/shared mixed-time N5 및 항 누락 검사는314.76초에 통과했다.
소스6개와 실행 binary의7개 SHA는 실행 전후 모두 일치하며 소스 스냅샷도 보존했다.
Release C08a7-grid와 새 production 원본 해석은 실행 중이다. 해당 결과와
C08b8-grid·원본 비교·독립 물리·전체 Debug를 아직 완료로 표시하지 않는다.
같은 Neumaier epoch의 configured Debug C09는 native0·217.24초에 통과했다.
동결 source snapshot과 실행 binary를 보존했고, 후속 controller 수정은 해당
CTest 종료 후 승인된 수정 범위에서 수행했다.
Release C08a7-grid는 native8·819.31초로 실패했다. 실패83,520건은 모두 새
basis-lift 일관성 검사 하나이며, 다른 시간수렴·hidden·N7 오류는 보고되지 않았다.
Controller가 `LpᵀδA` 대신 `Lpᵀδa`를 비교한 `1+α` 누락을 독립 검토로 확인했다.
Production에는 해당 계수가 이미 올바르게 적용되어 있다. 기준을 유지한 controller
수정의 Debug build 및 비성분 basis 계수 누락 회귀는 native0·1.24초에 통과했다.
수정 후 공식 C08a7-grid 재검증은 아직 완료되지 않았다.
최종 controller 계수 수정본의 공식 Release C08a7-grid와 계수 관련 회귀2개는
native0·703.90초에 통과했다(C08a 자체703.39초). 승인된 마지막 세 grid의
최소 시간수렴 차수는1.80500237, 최소 N7 separation은157.615676이다.
소스6개와 Release 검사 binary의7개 SHA가 실행 전후 일치한다.
실행 원본과 별도 계산한 지표는 `adr018-filter-c08a-release.raw.log` 및
`adr018-filter-c08a-metrics.json`에 보존했다. 승인된 C08b 전체8-grid와
production 원본 해석은 실행 중이며, 원본101-frame 비교·독립 물리·전체
configured Debug와 기능 완료 checklist는 여전히 미완료다.
같은 동결 source에서 필수 `python scripts/execute.py`를 시작했다.
실행 시작 시 소스6개·Debug 검사 binary의7개 SHA가 이전 identity와 일치했다.
해당 실행은 전체 deadline1800초에 도달하여 2026-10-13 14:40 KST에
native1로 종료했다. 출력상44개 검사는 통과했으며45번 C08a 시간수렴
실행 중 timeout이었다. 이는 solver 검사 실패의 확정이나 전체 PASS가 아니다.
`adr018-filter-configured-harness`와 별도 `adr018-filter-harness-timeout/`에
종료 및 부분 CTest 기록을 보존했다. Debug 자식 프로세스가 남지 않았음을
확인한 뒤 동일 preset 전체 CTest를 직접 시작했으며, 최종 native 결과는
`adr018-filter-full-debug`로 별도 확인한다. 제외 검사나 기준 완화는 없다.
2026-10-13 16:33:50 KST 사용자가 세 실행의 종료와 저장 구간 비교를 요청했다.
원본 Release 해석·Release C08b·전체 Debug CTest 및 자식 프로세스를 모두
종료했으며 native exit는 각각 `-1`이다. 사용자 중단으로 분류한다.
Debug44/856 PASS와 완료된 `h=1/64` controller 요약의 Release 일치,
원본 증분99·t=9.9까지 accepted 로그의 수렴 상태를 검산했다.
중간 HDF5가 없어 현재 Abaqus U/UR 비교는 수행할 수 없다.
[중단 시점 비교](interrupted-validation-comparison.md)에 근거와 한계를 기록했다.
사용자 요청에 따라 hexa 완료·성능 최적화 후 전체 검증을 다시 수행하며,
이번 중단 후 해석·CTest를 재시작하지 않는다.