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
+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 운영 계약 검사의 기대값 불일치