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
@@ -1,6 +1,6 @@
# HHT의 consistent kinetic mass
# 고유치·HHT의 lumped mass
- 상태: 기존 승인·인터뷰 합의의 의미 유지
- 상태: 2026-10-11 사용자 승인으로 질량 선택 갱신
- 결정 주체: 사용자와 기존 승인 계약의 담당자
## 배경
@@ -10,15 +10,22 @@
## 결정
HHT에는 사용자 선택인 consistent kinetic mass를 사용하고 analytic null·
부분구속·회전 관성·convective 항을 보존한다. 물리 가속도와 알고리즘 보조 가속도를 구분한다.
고유치와 HHT는 lumped mass를 사용한다. MITC4 고유치의 기존 nodal block mass는 유지한다.
MITC4 HHT는 `rho*N_i*dV0`의 nodal kinetic measure로 질량·관성력·convective 항·접선·
운동에너지·운동량을 함께 계산한다. Hex8은 전체 요소 reference consistent matrix의
행합을 대각에 넣은 뒤 경계조건을 축소한다. Shell의 회전 block까지 scalar diagonal로
치환하는 결정은 아니다. Analytic null·부분구속·물리 가속도와 보조 가속도의 구분을 유지한다.
## 대안과 선택 이유
Lumped mass는 비교 연구로 남겼으며 현 HHT 지원의 fallback으로 채택하지 않았다.
기존 consistent 선택과 질량만 바꾼 비교 연구는 과거 기록으로 보존한다. 이번 명시 승인으로
기본 질량을 변경하며 solver 선택 옵션이나 fallback은 추가하지 않는다.
임의 drilling inertia나 부분구속의 full-clamp 치환은 원래 모델을 바꾼다.
## 영향
비대칭 접선·moving null·regularity와 실제 shell temporal 검증 부담이 있다.
현재 시간수렴 실패를 유지하며 가속도 복구 후보는 독립 검증·채택 전 승인된 해법으로 간주하지 않는다.
기능별 정확한 정의와 대체 이력은 [HHT-ADR-012](../../hht-implicit-dynamics/ADR.md#hht-adr-012--고유치hht-lumped-mass-채택)와
[HEX8-ADR-010](../../hex8-structural-analysis/ADR.md#hex8-adr-010--고유치hht-reference-row-sum-lumped-mass)에 둔다.
+1 -1
View File
@@ -16,5 +16,5 @@
| `0009-explicit-development.md` | 필요한 전문 작업과 명시적 검증 실행 |
| `0010-feature-contract-ownership.md` | 공통 기준과 기능별 상세 계약 |
| `0011-eigen-first-implementation.md` | MITC4 고유치 첫 구현의 경계 |
| `0012-hht-kinetic-mass.md` | HHT의 consistent kinetic mass |
| `0012-hht-kinetic-mass.md` | 고유치·HHT의 lumped mass |
| `0013-thermal-staged-scope.md` | Uncoupled shell 열해석부터 구현 |
+111 -3
View File
@@ -1,5 +1,35 @@
# 미해결 문제
## Hex8 제공 고유치 원본과 최저10 모드 불일치
- 현재 상태(2026-10-11): 사용자가 고유치·HHT lumped mass를 승인했다. 변경본의 실제
MSVC Debug CLI와 원본 10개 Value 비교는 모두 native0/PASS이며 이 modal 불일치는
해소됐다. 새 evidence는 `.dryforge/lumped-mass-adoption-20261011/references/hexa_freq/`
아래 `native.json`·`comparison.json`이다. 전체 회귀와 다른 절차의 재검증은 별도로
진행한다. 아래 consistent 구현의 실패와 당시 미승인 상태는 과거 조사 이력이다.
- 조건·재현: 체적 평균 구현 `18b36c1`의 실제 `hexa_freq.inp` CLI native0 결과에
2026-10-11 제공된 `reference/hexa/hexa_freq.txt`를 비교한다. 명령과10개 metric은
[최종 비교](../hex8-structural-analysis/verification.md#2026-10-11-제공된-고유치-원본의-최종-비교)에 있다.
- 관찰: 입력·원본 hash·모드1–10·HDF5/finite/quantity/unit 사전검사 PASS이나 비교 native1,
mode3/4/5/6/7/9/10의 singleton RMS/S가1%를 초과한다. Mode5는
λ=63489.09126468376 대 원본52797로20.2513234932%이며 row5%도 초과한다.
- 영향: 원본은 준비됐지만 FEM-REQ-HEX8-022–024의 필수 modal 비교 PASS와 기능 완료를
충족하지 못한다. 정적2·동적2 PASS와 내부 original-pencil 검증은 이 차이를 없애지 않는다.
- 초기 원인 분리의 한계: 제공 TXT에는 mode shape와 외부 조립 K/M·실제 element/mass
formulation evidence가 없다. 고유치 차이만으로 강성·질량 중 어느 원인인지 확정할 수 없다.
승인된 consistent M·평균 trace energy·1% 기준을 원본 값에 맞춰 변경할 근거가 아니다.
- 후속 방향: 동일 입력의 원본 modal element/mass 설정과 mode shape 또는 matrix evidence를
확보해 차이를 분리한다. Physics·acceptance 변경이 필요하면 근거와 영향을 사용자에게
전달한다. 원본 수정·모드 재매칭·frequency 변환·tolerance 완화로 통과시키지 않는다.
- 후속 조사(2026-10-11): [원본 질량·요소 설정 조사](../hex8-structural-analysis/reference-mass-investigation.md)에서
Abaqus 공식 문서의1차 요소 row-sum lumped mass를 확인했다. 동일 평균 trace K의
private 계산에서 consistent M은 실제 FESA λ를 상대차이4.57e-12 이내로 재현했고,
lumped M은 원본10개 λ 모두 상대차이0.00196105% 이내였다. 질량 선택 차이가
불일치의 주된 원인이라는 강한 근거다. 실제 원본 operator 직접 확인은 아니며 현재
FEM-REQ-HEX8-007/HEX8-ADR-002의 consistent 계약과 필수 modal FAIL은 유지한다.
채택하려면 eigen/HHT 공통 질량 정책과 영향 검증 범위를 먼저 결정해야 한다.
## Hex8 이전 표준 full8 정식화의 원본 불일치와 변경 후 검증
- 변경 후 관찰: 승인된 체적 평균 구현 `18b36c1`의 새 두 정적 CLI는 native0이며,
@@ -10,7 +40,7 @@
정적 불일치는 변경본에서 해결됐고 새 두 동적 원본도 각각101-frame U 비교 PASS다.
실제 원본의 독립 수치·물리 검토도 bounded PASS다. 전체787 회귀는784 PASS·기존
FAIL2·SKIP1(native8)으로 종료했고 추가170개 모두 PASS·새 예외0이다. 전체 green은 아니며,
modal Value 원본 부재는 별도 완료 조건이다. 아래 과거 실패 근거는 보존한다.
제공된 modal Value의 수치 불일치는 위 별도 문제로 남는다. 아래 과거 실패 근거는 보존한다.
- 과거 조건·현상: `e2c3c5b`의 실제 CLI가 byte-identical scratch 입력
`hexa_linearstatic.inp`에서 native exit0으로 공식 HDF5를 생성했다. 원본13개의 SHA와
@@ -55,14 +85,92 @@
## HHT shell의 시간수렴
- 최신 상태(2026-10-13 사용자 중단): ADR-018의 C09와 공식 Release C08a7-grid는
통과했다. 진행 중이던 전체 Debug·Release C08b·원본 해석은 사용자 요청으로
종료했으며 native `-1`을 수치 실패나 PASS로 분류하지 않는다. 원본99증분의
accepted 로그는 있으나 현재 HDF5/U/UR이 없어 Abaqus 변위 오차는 계산할 수 없다.
[저장 구간 비교](../hht-implicit-dynamics/interrupted-validation-comparison.md)를
보존하며, hexa 완료·성능 최적화 후 전체 재검증 전까지 남은 판정은 미완료다.
- 조건·현상: 실제 shell의 두 시간수렴 사례에서 요구한 수렴 성능을 만족하지 못한
재현 기록이 남아 있다. 원본 변위 reference 통과와 함께 존재하는 실패다.
- 영향: 변위 일치만으로 동적 가속도·관성·에너지·전체 시간 정확성을 보장할 수 없다.
HHT 전체 기능 완료를 선언할 수 없다.
- 현재 해결하지 않는 이유: 문서 재구성 범위를 벗어나는 수치 알고리즘 변경이며,
가속도 복구 후보의 정식화·독립 검증·채택 판단이 선행되어야 한다.
- 미해결 이유: 정확한 초기화 후에도 full-coordinate recurrence의 물리적 a 차수1
소형 반례가 존재하며 실제 shell 후보의 정식화·독립 검증·채택 판단이 필요하다.
C08b의 고주파 해상도와 정확 P 보존에 대한 strict-decrease 계약 문제도 구별해야 한다.
- 후속 방향: 기존 물리 질량·허용 오차를 유지한 재현에서 dt refinement별 q/v/물리 a와
hidden constraint 차수를 분리하고 후보 변경의 영향을 검증한다.
- 후속 근거(2026-10-12): [시간 정확도·운동량 후속 검증](../hht-implicit-dynamics/temporal-remediation.md).
소형 DAE의 독립 검산과 실제 C08b finer-grid·fixed-state P 분리를 수행했다.
같은 HHT의 carried-A private 후보는512–4096 native0이나 원 grid 정확도 FAIL과
strict P 조건은 유지한다. Production·N7·acceptance·public schema 변경은 미채택이다.
- 후속 상태(2026-10-13): [HHT-ADR-014/015](../hht-implicit-dynamics/ADR.md)는
reduced shell 구현·schema v2, C08b P 판정/최종 finer grid, C08a 최종 grid/hidden1·2
판정을 승인했다. 위 미채택 문구는 승인 전 기록이다. 최신 C08b Release는 원5 grid
이후 h=1/32768·증분4에서 위치 제약 normalized 약3.54e-10으로 실패했다.
동일 좌표의 독립 검산은 analytic constraint와 조립된 내력의 불일치를 확인했고,
Rodrigues coefficient의 작은 각도 미분 상쇄를 안정적인 전체 Jet 급수로 바꾼
별도 진단은 원 기준을 통과했다. 현재 production 변경본의 전체 시간 이력·N7·
Debug/원본 검증은 미완료다. [수치 검토와 재현 근거](../hht-implicit-dynamics/numerical-review-reduced-coordinate.md)를 따른다.
- 후속 좌표 표현 finding(2026-10-13): 보상 누적 C08a7 grid도 native8이다.
Required 좌표 trace58개 모두 현재 high가 가장 가까운 binary64이며 양쪽 이웃도
원1e-12 기준에 실패한다. 누적 pair의 exact requested target 오차는 최대7.70e-34로,
추가 덧셈 보정만으로 원 stored-high 판정을 통과시킬 수 없다. 기능 완료·전체 N3
판정에 영향을 주며 [비교 대상 분리 제안](../hht-implicit-dynamics/c08-n3-coordinate-representation-proposal.md)은
HHT-ADR-016으로 사용자 승인됐으며 변경본 구현·검증을 진행한다. 이전 acceptance의 실패 로그를 보존한다.
Proper-Q actual 초기 재구성 실패는 canonical primitive gradient로 정정 후 초기 gate를
통과했다. 후속 C09는 첫 증분100 correction 뒤 physical moment N2 비수렴으로 실패했다.
Tiny rotation에서 director increment가 full director의 반올림에 흡수되어 물리힘과
tangent가 불일치하는 bounded RED/GREEN을 확보했고, 동일한 direct increment를
force·tangent·recovery energy에 적용한 Debug 요소16개는 통과했다.
후속 actual 관성 소실을 `M*a+c`의 안정적 수축으로 수정한 Debug는 관성12개 및
N5가 통과했으나 C09 초기 재구성에서 실패했다. 독립8-row 감사는 plain partition
누적의 잡음을 분리했으며 초기화와 같은 compensated 수축으로 정정했다.
작은 가속도에서 Dq 관성 접선과 Ldot의 소실도 별도 해석식 재현에서 확인됐다.
원 state·N2 scale·허용오차를 유지한 coefficient-first 산술의 Debug 관성13개와
actual N5는 통과했다. 최신 Release C08a7-grid도 통과했지만 전체 검증은 미완료다.
C09 초기 재구성은 통과하나 full Newton100은 잔차 기준에 실패한다. Read-only
병진 고정 진단은 두 회전/auxiliary 보정 후 원 endpoint 기준을 만족했다.
[제안과 독립 검토](../hht-implicit-dynamics/c09-channel-newton-proposal.md)는
부분 행렬 N2-L 검사 영역 및 N7 full-model defect 보존을 명시한다.
HHT-ADR-017로 사용자 승인됐으며 production/controller 구현과 자연 trajectory 검증을 진행한다.
ADR-017 변경본 actual Debug C09의 여섯 trajectory는 자연 종료했지만 global-frame
covariance 비교에서 native8·113.03초로 실패했다. 원1e-10 기준을 유지하며
fixed selector의 비선형 chart 전환과 reduced HHT 이산화 영향을 조사한다.
[Read-only 진단](../hht-implicit-dynamics/channel-newton-covariance-diagnostic.md)은
순수 병진 비교 PASS와 유한회전 비교 FAIL을 분리했다. 같은 q/v/a의 회전된
assembly는 일치하지만 selected-coordinate 변환은 Newmark recurrence를
보존하지 않는다. [고정 null 보완공간 제안](../hht-implicit-dynamics/fixed-null-basis-proposal.md)은
별도 chart/integrator 변경으로 사용자 결정 전이며 기존 기준을 완화하지 않는다.
[실행 범위와 실패 기록](../hht-implicit-dynamics/temporal-remediation.md)을 따른다.
## Lumped shell C08b의 새 회전 좌표 예외
- 조건·현상(2026-10-12): 승인된 nodal lumped kinetic 변경본의 전체 Debug CTest에서
C08b는 `h=1/64,1/128`을 완료한 뒤 `h=1/256`에서 `invalid-dynamic-rotation`으로
종료했다. 이전 consistent 실행의 다섯 grid 완료 후 정확도 실패와 다른 경로다.
- 발견 당시 영향: 남은 세 grid와 마지막 refinement의 시간수렴·물리 기준이 미검증이었다.
원본 U 비교 PASS와 local 관성 검사의 통과로 이 예외를 대체할 수 없다.
최종 독립 diff 검토도 이를 FEM-REQ-HEX8-024의 P1 완료 blocker로 판정했다.
[후속 개발 인계](../hex8-structural-analysis/lumped-mass-adoption.md#최종-검토와-인계)에
필요한 관측량과 재검증 범위를 기록했다.
- 조사 상태: 별도 Debug probe에서 증분56·Newton 반복3·t=0.21875의 node index4
회전 좌표 `(0.64127523,-1.19777570,3.61620987)`가 유한하지만 크기가 π보다
큼을 확인했다. 후속 독립 조사에서 반복0부터 큰 보정이 생기며, q_n 시작의 큰 관성
잔차와 moving null의 미분이 정상적인 drilling 대수 접선을 거의 상쇄함을 확인했다.
확인한 상태·방향의 history·관성 항등식·접선 차분·선형 solve는 일치했다. Gate·
좌표 clamp·허용값은 유지한다. [상세 원인·후보 evidence](../hht-implicit-dynamics/newton-rotation-investigation.md).
- 후속 해결(2026-10-12): 사용자 요청으로 [HHT-ADR-013](../hht-implicit-dynamics/ADR.md)의
두 초기 형상·자유 energy 잔차 선택을 구현했다. 관련37/37 Debug PASS와 독립 source
검토, 실제 h=1/64..1/1024 전체5 grid 완료·새65-frame runtime 회귀 PASS로 조사한
회전 예외는 재발하지 않았다. [현재 구현·검증](../hht-implicit-dynamics/newton-start-policy.md).
원본101-frame U 재비교와 독립 kinetic/balance 대조도 완료했다.
- 남은 범위: C08b는 시간 정확도·차수와 roundoff 수준 P의 감소 기준에서 여전히 FAIL이다.
현재 C08b noise separation은 PASS이며 C08a noise INCONCLUSIVE와 구별한다. 전체802
Debug는11384.61초 뒤 native8:799 PASS·C08 정확도 FAIL2·기존 C04a SKIP1로 자연
종료했고 추가 예외0·검증 전후 source/원본/binary hash 동일성을 확인했다.
Runtime 개선을 가속도 정확도 해결이나 전체 green으로 표시하지 않는다.
## Python 운영 계약 검사의 기대값 불일치
+20 -7
View File
@@ -1,6 +1,6 @@
# 개발 현황
기준일은 2026-10-11이다. 주목적은 개인 연구용 솔버 개발이며 외부 사용자 배포는 장기
기준일은 2026-10-12이다. 주목적은 개인 연구용 솔버 개발이며 외부 사용자 배포는 장기
목표다. 아래는 실제 실행과 기능별 계약을 대조한 요약이며 상세 checklist를 대신하지 않는다.
2026-10-04 문서 정리 당시의 기존 기능 기록과 이후 Hex8 개발의 실행 증거를 구분한다.
@@ -27,18 +27,31 @@ PASS·새 예외0이다. 두 기존 실패의 metric body는 동일하고 SKIP
| MITC4 frequency | 승인된 첫 구현 완료 기록 | 당시417개 검사·외부 Value5%·독립 검토 PASS, 최신 기존 회귀도 PASS. [S3·정확도 개선](../mitc4-shell-feast-eigen2/README.md#실패와-남은-범위)은 보류 |
| HHT 동해석 | 입력부터 HDF5까지 구현, 기능 검증 미완료 | 101-frame U 비교 PASS 기록·UR 경고200건. [두 시간수렴 실패와 잔여 coverage](../hht-implicit-dynamics/README.md#실패시행착오다음-작업) 유지 |
| HHT 굽힘 단면력 복구 | 두께 계수 수정됨 | 관련 Debug 14 tests와 원본 HDF5 재생성·독립 식 대조 완료 기록. 전체 동해석 완료와 별개 |
| HHT 관련 전체 CTest | 기존 실패2개·SKIP1개 유지 | 체적 평균 Hex8 변경본의 전체787개를 제외 없이 실행. 두 실패 metric body·예외3개 status가 baseline과 동일하며 전체 green 아님 |
| HHT 관련 전체 CTest | Newton 시작 정책 변경본802개 자연 종료, 전체 green 아님 | native8:799 PASS·C08a/C08b 정확도 FAIL2·기존 C04a SKIP1, 추가 예외0. [초기 Newton 정책](../hht-implicit-dynamics/newton-start-policy.md)은 관련37/37 PASS·C08b 5개 grid 회전 예외 해소·원본 U101 PASS. 과거789개 FAIL4와 후속 focused 결과는 별도 이력이며 현재 시간 정확도·coverage는 미완료 |
| HHT ADR-018 최신 재검증 | C09·공식 Release C08a7 통과, 전체 검증 사용자 중단 | 2026-10-13 Debug44/856 PASS 후45번 중단. Release C08b·원본도 사용자 중단이며 원본은99증분·t=9.9까지 accepted 로그만 존재. 현재 HDF5가 없어 새 Abaqus 변위 비교 불가. [중단 구간 비교와 후속 순서](../hht-implicit-dynamics/interrupted-validation-comparison.md)에 따라 hexa 완료·성능 최적화 후 전체 재검증 |
| Shell transient heat transfer | 구현·내부 검증 완료, 필수 외부 비교 대기 | [추가139개 PASS·수렴/수지·독립 수치/물리 검토](../shell-transient-heat-transfer/README.md). 기존 NT11은87/729행 수치 FAIL인 diagnostic; 새 모델·CSV 준비 중 |
| Hex8 선형·기하비선형 강성·consistent mass | 체적 평균 구현·가능한 원본 비교·전체 회귀 실행 완료, modal 비교 대기 | [기능 PRD](../hex8-structural-analysis/PRD.md)의 범위를 따름. 두 정적 U/RF51/Gauss S와 두 동적101-frame U 필수 비교 PASS. 다섯 공식 CLI native0, 실제 원본 독립 수치·물리 검토 bounded PASS. 전체787=784 PASS·기존 FAIL2·SKIP1, 추가170개 모두 PASS. 고유치 readback precheck PASS이나 modal Value 원본 부재로 비교 NOT RUN. 과거 pointwise 원본 FAIL은 보존 |
| Hex8 선형·기하비선형 강성·lumped mass | 구현·필수 원본 비교·검토·인계 완료, 최신 전체 통합 판정 유예 | [최종 인계](../hex8-structural-analysis/final-handoff.md): 현재 관련C++91·Python96·보존된 원본5개 재대조 PASS. Hex8 경로의 source와 원본 hash 동일성 및 독립 수치·물리 검토 확인. 기존38/137·전체802·원본101-frame smoke는 과거 근거이며 최신 전체 통과로 승계하지 않음. 사용자 요청에 따라 장시간 전체 검증은 성능 최적화 후 수행 |
| Python 검증 실행기 | 구현됨 | 명시 build/test runner와 별도 Python suite가 존재. 일부 운영 계약 검사는 현행 절차와 맞지 않는 기대값을 유지 |
| 외부 사용자 배포 | 계획 | 배포 방식·설치·지원 정책과 dependency 재배포 검토가 아직 정해지지 않음 |
## 남은 작업과 의존성
Hex8은 2026-10-10 사용자 B 승인에 따라 다섯 절차의 체적 평균 energy를 구현하고 전체
재검증한다. 기존 정식화와 원본의 차이는 [미해결 문제](findings.md)에 보존했다.
원본·tolerance·strict gate·질량·HHT·schema는 유지하며, modal 원본 부재를 기능 검증
완료로 처리하지 않는다. 세부 현재 checklist는 기능 PRD 한 곳에 유지한다.
Hex8은 2026-10-10 사용자 B 승인에 따른 다섯 절차의 체적 평균 energy 구현과 재검증,
2026-10-11 승인된 lumped mass 변경본의 필수 원본5개 비교를 완료했다.
기존 정식화와 원본의 차이는 [미해결 문제](findings.md)에 과거 근거로 보존했다.
원본·tolerance·strict gate·HHT 계수·schema layout은 유지했다. 최신 전체 회귀는
자연 종료한 FAIL이며, [최종 검토와 인계](../hex8-structural-analysis/lumped-mass-adoption.md#최종-검토와-인계)는
완료했다. 후속 사용자 요청에 따라 [초기 Newton 정책](../hht-implicit-dynamics/newton-start-policy.md)을
구현해 실제 C08b 5개 grid의 회전 runtime 실패를 해소했다. 시간 정확도·P 감소 실패는
유지하며 전체802 회귀는799 PASS·2 FAIL·1 SKIP으로 자연 종료했다.
FEM-REQ-HEX8-024의 최종 완료 판정은 아직 보류다.
[원인 조사](../hht-implicit-dynamics/newton-rotation-investigation.md)의 private 후보와
현재 production 정책·닫힌 검사 evidence를 구분한다.
세부 현재 checklist는 기능 PRD 한 곳에 유지한다.
후속 [질량·요소 설정 조사](../hex8-structural-analysis/reference-mass-investigation.md)에서
공식 Abaqus1차 요소 row-sum lumped 질량 설명과 별도 mean K+lumped M의10개 λ 재현을
확인했다. 그 private 조사 이후 명시 승인으로 production 질량을 변경했다. 새 원본 modal
비교 PASS는 실제 변경본 evidence이며 다른 해석의 완료를 대신하지 않는다.
1. Shell 열해석은 준비 중인 새 reference 모델·CSV의 별도 경로·identity·시점·hash를
확정하고 승인 tolerance로 필수 비교를 실행한다. 기존 NT11 diagnostic FAIL과 고정