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
+141
View File
@@ -1,5 +1,11 @@
# HHT 연구 근거와 수치 설계
2026-10-11 질량 정책 변경: [HHT-ADR-012](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다.
2026-10-12 후속 조사: [C08 시간 정확도·P 감소 실패 해결 후보](#temporal-remediation-research)는
현행 lumped mass·HHT-ADR-013 변경본의 evidence를 대상으로 한다. 해결 후보의 조사이며
새 적분법·startup·수치 기준의 채택 또는 solver 변경 승인이 아니다.
<a id="research"></a>
@@ -364,3 +370,138 @@ Numerical Review에 인계할 결정은 scaling·conditioning/hidden-defect 판
시간 수렴 구간·case 최소 조합이다. Formulation에 남는 사항은 singular-mass regularity의
실제 shell 적용과 full-coordinate hidden constraint 검증이다. 사용자 결정에 따라 이번
HHT 구현은 consistent mass를 사용한다. 위 lumped 비교 근거는 연구 이력이며 현재 지원 요구가 아니다.
<a id="temporal-remediation-research"></a>
## 2026-10-12 C08 시간 정확도·P 감소 실패 해결 후보
사용자 요청에 따른 `fem-research-evidence` 조사다. 전문 research-agent의 DAE 문헌 조사와
메인의 현재 evidence·시간 해상도·합산 조사 결과를 대조했다. Production·tests·reference·
tolerance·PRD checklist·ADR 결정은 변경하지 않았다. 아래 제안은 정식화·독립 검토를
거쳐야 하는 후보이며 현재 실패를 통과로 대체하지 않는다.
문서 정적 검토는 로컬 참조528개 누락0·git diff --check native0이다. 이전 완료 검증의
production190·원본16·task source/test6·binary4 hash가 그대로임을 확인했다.
### 현재 판정과 공동 해결책이 아닌 방법
[현재 실행 기록](newton-start-policy.md)의 전체802 결과는799 PASS·2 FAIL·1 SKIP이다.
C08a는 finest 정규화 angular-a error 약5.67473e-4와 finest noise 분리 미달을 유지한다.
C08b는 N7 noise 분리에 성공했지만 finest angular-a self-difference 약.474897과
q/v/a 일부 시간수렴·P 감소 기준에 실패했다. 별도 복구 진단의 physical complement는
약.474897, null 성분은 약.001844다. P drift는 약2.84555e-14→8.03575e-14로 증가했다.
- 현재 endpoint 평형·물리 a/보조 A 분리는 이미 Arnold–Brüls variant와 같은 방향이다.
같은 variant를 다시 채택하는 것은 해결책이 아니다. [R1]의 일반 constrained 결과를
singular moving-null shell의 정확도 보장으로 확대하지 않는다.
- A0만 바꾸는 방법은 [NR-009의 Decimal80 cubic 반례](implementation-numerical-review.md)에서
실패했다. Newton이나 double roundoff 없이도 전체 시점 최대 null 가속도 오차가1차다.
- 기존 [null 가속도 복구 후보](formulation-acceleration-recovery.md)는 physical complement와
q/v를 바꾸지 않는다. 같은 q/v에서 physical mass block의 가속도를 다시 풀어도 이미
endpoint 평형으로 결정된 physical a의 시간오차를 자동으로 없애지 못한다.
- 추가 고정밀·refinement 조사는 원인을 구분하는 diagnostic이다. 공식 grid·최대 시점
범위를 바꾸거나 초기 구간을 제외해 기존 acceptance를 통과시킨 것으로 표시하지 않는다.
### 후보 비교와 채택 경계
| 후보 | 기대 효과 | 제한·필요한 결정 |
| --- | --- | --- |
| **국소 대수 drilling 좌표 제거와 q/v/a 미분 복구** | 독립적인 physical 좌표를 적분하고 대수 평형으로 drilling 좌표를 재구성해 null 좌표의 이력 차분 문제를 피하는 후보 | 전체 좌표의 현 이산 recurrence가 바뀐다. Smooth chart·rank·partial BC·양의 reduced mass·원 full residual 동등성 정식화가 필요하다. C08b 고주파 해상도 해결은 별도 검증 |
| **위치·속도 수준 제약을 함께 처리하는 DAE 적분** | Hidden velocity drift와 startup의 일관성을 같이 다루는 SOI2/stabilized index-2 후보 [R2,R3] | 추가 보조 변수·수정 kinematic update가 필요하다. Force-derived psi를 표준 holonomic reaction 제약으로 대입하면 다른 모델이 될 수 있으므로 동등성 증명이 선행돼야 함 |
| Constraint-consistent numerical startup | 초기 가속도 transient 감소 가능성 [R3, §4.1 Example8] | 유효한 문헌 방법은 속도의 O(h²) 수치 보정도 포함한다. Exact frame0 q/v/a 보존과 이력 일관성 검증 필요; A0-only 재시도는 근거 부족 |
| Same-schedule 산술 개선 | Compensated/error-free sum·dot, 작은 증분의 차감 계산, 높은 정밀도의 residual 및 refinement로 noise 감소 [R5,R6] | C08a noise와 P 계산의 일부 문제에 유용할 수 있으나 DAE order reduction·C08b의 큰 physical 오차를 고치는 증거는 아님 |
| Momentum/energy를 보존하거나 소산하는 새 적분법 | Nonlinear shell dynamics의 보존·안정성에 맞춘 별도 알고리즘 [R4,R7] | Algorithmic force/stress·관성 및 시간 update가 바뀌는 범위. 현 HHT 대체에 대한 사용자 결정·정식화·독립 검증 필요; 보존만으로 현재 fixed-grid 정확도 PASS를 보장하지 않음 |
국소 제거 후보는 DOF를 삭제하거나 drilling 질량을 추가하는 방식이 아니다. 원래 대수
평형 psi=N(q)^T(f_int-F)=0을 풀어 full q를 복구한다. G=psi_q N의 가역성은 국소
transversality 근거이지만 전 구간의 독립 좌표 chart를 제공하지는 않는다. 적절한 국소
chart에서 대수 좌표가 독립 좌표·시간의 함수임을 확인해야 한다. 복구된 속도·가속도에는
embedding의 미분·곡률과 explicit-time 항이 모두 필요하다. Current N/P를 매 frame 곱하고
그 미분을 생략하는 projection은 이 방법과 다르다. 특히 C08a의 F(t)에 대한 시간미분을
누락하면 올바른 oracle가 아니다. 이는 개념 후보이며 구현-ready 정식화가 아니다.
### C08b의 시간 해상도 판별
[이전 private elastic-scale 조사](newton-rotation-investigation.md)는 일부 state에서
omega≈311.3/time을 관측했지만 current trajectory의 dynamic Jacobian spectrum·실제
가진 amplitude를 확인한 결과가 아니다. [R4]의 stiff shell-like 사례는 선형 안정성과
비선형 시간 정확도·보존의 구별을 뒷받침한다.
이번에 같은 HHT 계수(alpha=-.05,beta=.275625,gamma=.55)와 endpoint physical a를 쓰는
**독립 scalar unit-amplitude oscillator**를 계산했다. Omega311.3, T=.25,
q0=1/v0=0/a0=A0=-omega²이며 전체 endpoint 최대 q error를 측정했다.
Scratch `.dryforge/hht-accuracy-research-20261012/oscillator-resolution.py`와 JSON의
실제 실행 native0이며 FESA build/test 또는 실제 shell 검증은 아니다.
독립 numerical-review-agent가 별도3×3 증폭행렬로8개 grid를 재계산했으며 저장된
q/v/a 최대 오차와의 차이는 최대3.36e-15였다. 후보의 전제·채택 경계도 검토했고,
P floor 확정 표현은 아래처럼 의심 단계로 수정했다. 이는 후보 연구의 검토 결과다.
| h | omega*h | 주기당 증분 수 | 최대 정규화 q error | 직전 grid 대비 관측 차수 |
| --- | ---: | ---: | ---: | ---: |
| 1/512 | .6080 | 10.33 | 1.76413 | .04693 |
| 1/1024 | .3040 | 20.67 | .645985 | 1.44939 |
| 1/2048 | .1520 | 41.34 | .167876 | 1.94410 |
| 1/4096 | .0760 | 82.67 | .0421431 | 1.99403 |
| 1/8192 | .0380 | 165.34 | .0105458 | 1.99863 |
이 계산은 coarse grid에서 비단조 오차가 발생하고 더 작은 h에서2차 구간에 들어갈 수
있음을 보여 준다. **C08b의 원인을 확정한 재현은 아니다.** 실제 모드 amplitude가 작을
수 있고 회전·DAE 결합도 다르다. 2차 차수의 회복과 finest1e-4 달성도 별개다.
Current C08b의 공통 시점에서 physical mass block의 spectrum/가진 amplitude와
오차 history를 대응시키고, 별도 finer-grid·고정밀 oracle와 비교해야 한다. 공식5개
grid는 그대로 판정한다. 해상도 부족이 확인되면 현 fixed-grid·HHT 요구와의 양립성을
검토해야 하며 silent substep·alpha 변경·benchmark 초기조건 변경으로 해결하지 않는다.
### P 감소 실패의 조사·처리 방법
P의 두 finest 값은 roundoff floor가 의심되는 크기이며 strict decrease를 보장하는 수정은
아직 없다. 실제 floor 판정은 아래 고정-state·고정밀 대조로 확인해야 한다.
우선 같은 accepted q/v를 고정하고 다음 세 계산을 대조해 오차 위치를 구분한다.
1. 현재 quadrature/global P 합과 deterministic compensated/error-free sum·dot의 P 합.
2. 동일 binary64 입력값의 arbitrary-precision 적분·차감 결과. 이 대조는 저장·평가
오차만 구분하며 원 accepted history 자체의 roundoff를 복구하지 않는다.
3. 현재 flat centered C08b의 독립 nodal 식과 시간 update에서 유도한 momentum 증분.
이 fixture의 zero first moment를 일반 warped shell에 자동 적용하지 않는다.
평가 오차가 원인이면 같은 P의 정의·source 순서를 유지한 산술 개선을 검증한다.
History 오차가 지배하면 합산만 바꿔 strict decrease가 회복된다고 보장할 수 없다.
같은 물리/이산 식의 더 정확한 계산과, momentum projection으로 q/v/history를 바꾸는
새 방법을 구분한다. Exact conservation 또는 새 energy-momentum method도 finite
precision의 감소 조건을 자동 보장하지 않는다. Roundoff floor가 확인되면 absolute
보존 기준과 시간 truncation의 감소 판정을 분리하는 **계약 검토 후보**를 제시할 수 있으나
현재 strict 조건·허용값·FAIL은 유지한다. 결과 clamp나 P를 P0로 덮어쓰는 방법은 배제한다.
MSVC의 long double은 double과 같은 representation이므로 단순 타입 교체를 고정밀
검증으로 부르지 않는다 [R6]. 고정밀 oracle 또는 double-double/error-free 연산은
검증할 연산·입력·누적·반올림 경계를 명시해야 한다.
### 권장 검증 순서
2026-10-12 사용자 요청으로 수행한 후속 수학·private 실행 결과는
[시간 정확도·운동량 후속 검증](temporal-remediation.md)에 기록한다. 아래는 조사 당시
권장 순서이며 private 후보 실행과 production 채택을 구별한다.
1. 기존 Decimal80 cubic 반례로 후보의 exact frame0 보존·전체 시점 q/v/a 정확도와
hidden0/1/2를 확인한다. 초기 구간과 후반 구간을 진단상 분리하되 전체 최대 기준은 유지한다.
2. Explicit-time 및 실제 moving-null 소형 모델에서 축소 embedding/새 DAE update를
검증한다. Partial BC·empty null·원 full residual·physical momentum/energy와의
동등성을 확인하고 고정 null 모델의 성공을 shell로 확대하지 않는다.
3. C08a의 null/physical error와 recurrence/solve/recovery noise를 구분하고 C08b의
가진 모드·physical rate·time resolution을 대조한다. Finer oracle는 기존 grid의
정확도를 평가하는 자료이지 기존 FAIL의 대체가 아니다.
4. P의 고정-state 평가와 history drift를 분리한 뒤 원인에 맞는 수정 또는 계약 검토를 선택한다.
5. 채택 후보만 구현-ready 정식화·독립 수치 검토·필요한 사용자 결정으로 넘긴다.
실제 구현 뒤 기존 C08/N7·lifecycle·필수 원본·전체 MSVC 회귀와 물리 검토를 수행한다.
### 일차 출처와 적용 한계
Accessed2026-10-12. 위 문헌은 방법 선택 근거이며 FESA 실패 해결의 실행 evidence가 아니다.
| ID | 출처·locator | 열람 범위·한계 |
| --- | --- | --- |
| R1 | Arnold–Brüls(2007), [Convergence of the generalized-alpha scheme for constrained mechanical systems](https://orbi.uliege.be/bitstream/2268/27094/1/pa_ArnoldBruls2007_ConvergenceOfTheGeneralizedAlphaSchemeForConstrainedMechanicalSystems.pdf), §2.1·§3 | 현재 endpoint/auxiliary 방식과의 연결. 원 singular shell의 theorem 아님 |
| R2 | Jay–Negrut, [A Second Order Extension of the Generalized-alpha Method for Constrained Systems in Mechanics](https://homepage.divms.uiowa.edu/~ljay/publications.dir/GenerAlphaDAEs.pdf), §4 Eq.9/Theorem1·§6 | Research-agent가 author PDF 열람. 메인의 fetch는 timeout. Position+velocity SOI2·bordered regularity 조건; force-derived shell psi에 대한 직접 적용 증명 없음 |
| R3 | Arnold(2016), [DAE aspects of multibody system dynamics](https://www2.mathematik.uni-halle.de/reports/sources/2016/01-2016.pdf), §2.3·§4.1 Example8·§4.2 | PSD mass/index 분류·startup 보정·stabilized index-2. FESA index와 동등성은 별도 검토 |
| R4 | Lavrenčič–Brank(2020), [Comparison of numerically dissipative schemes for structural dynamics](https://www.sciencedirect.com/science/article/pii/S0263823120309496), abstract·Introduction | Publisher의 공개 본문 열람, 직접 open은 오류. Stiff shell-like 모델의 비교; 원 FESA benchmark나 적용 증명 아님 |
| R5 | Demmel–Hida(2002), [Accurate floating point summation](https://people.eecs.berkeley.edu/~demmel/AccurateSummation.pdf), §1–4; Ogita–Rump–Oishi(2004), [Accurate Sum and Dot Product with Applications](https://www.tuhh.de/ti3/paper/rump/OgRuOi04a.pdf) | Cancellation과 정확 합산·dot의 방법 근거. 입력 history의 오차 제거 또는 strict 감소 보장 아님 |
| R6 | Microsoft, [IEEE Floating-Point Representation](https://learn.microsoft.com/en-us/cpp/build/ieee-floating-point-representation?view=msvc-170) | MSVC long double representation. 다른 compiler·arbitrary precision으로 일반화하지 않음 |
| R7 | Simo–Tarnow–Wong(1992), [Exact energy-momentum conserving algorithms and symplectic schemes for nonlinear dynamics](https://www.sciencedirect.com/science/article/pii/004578259290115Z), abstract; Kuhl–Ramm(1999), [Generalized Energy–Momentum Method for non-linear adaptive shell dynamics](https://www.sciencedirect.com/science/article/pii/S0045782599000249), abstract·Introduction | Publisher 공개 설명 열람. 새 algorithmic force/stress의 범위 근거; current drill DAE·회전 chart·정확도 기준에 맞춘 정식화 없음 |