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.
145 lines
16 KiB
Markdown
145 lines
16 KiB
Markdown
# 제약 일관 가속도 복구 후보
|
||
|
||
2026-10-11 질량 정책 변경: [HHT-ADR-012](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다.
|
||
|
||
- 상태: `candidate-for-independent-review; not-adopted`, 2026-09-26.
|
||
- Owner: `formulation-agent`. 할당 범위는 이 문서이며 source·시험·상위 계약은 변경하지 않는다.
|
||
- 기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [공통 ADR](../ADR.md#adr-028), [Feature PRD](PRD.md), [시간적분](formulation.md), [관성 상세](formulation-inertia.md).
|
||
- 발견 근거: [구현 수치 검토 NR-009 이후](implementation-numerical-review.md), [C08](verification-cases.md), [N1–N7](numerical-controls.md).
|
||
|
||
## 1. 제안과 변경 경계
|
||
|
||
사용자는 기존 정확도 요구를 유지하고 **채택 전에 별도의 constraint-consistent acceleration recovery를 정식화·검증**하는 경로를 선택했다. 후보는 수렴한 endpoint의 `q,v`와 시간적분 이력 `a_h,A`를 그대로 두고 현재 질량 영공간에서만 가속도를 보정한다. 여기서 `a_h`는 기존 정식화에서 `a`라 부른 endpoint 평형/이력 변수다. 이름 구분은 후보를 설명하기 위한 것이며 현행 API·HDF5 의미 변경은 아니다.
|
||
|
||
\[
|
||
a_{rec}=a_h+N\eta,\qquad (\psi_qN)\eta=-r_2(q,v,a_h,t).
|
||
\]
|
||
|
||
이 식은 endpoint 평형을 보존하며 acceleration hidden constraint를 만족시키지만, q/v 정확도나 물리 질량 방향 가속도 오차를 고치지 않는다. C08a/b와 기존 NR-009 FAIL은 유지한다. 본 문서는 구현·공식 출력 채택·기능 통과의 승인이 아니다.
|
||
|
||
## 2. 적용 가정과 좌표
|
||
|
||
[관성 상세 §§1–4](formulation-inertia.md)의 유한회전 shell, consistent kinetic mass, 선형 탄성 및 기존 objective numerical drilling potential을 그대로 사용한다. DOF는 절점별 fixed-global `[u_x,u_y,u_z,phi_X,phi_Y,phi_Z]`, `v=dot q`, 좌표 가속도 단위는 병진 `length/time²`, 회전 `rad/time²`다. 외력 부호는 `E=Ma+c+f_int-F`. 새 재료 상태·감쇠·질량·공간 적분은 없다. 기존 scalar mass moments `3×3×3`, 내력/물리 에너지 `2×2×2` 및 drill 합을 보존한다.
|
||
|
||
이하 q/v/a와 미분은 고정 zero BC를 제거한 free 좌표에서 쓰며, 전체 좌표로 올릴 때 constrained 성분은 0이다. `N(q)`는 실제 admissible free 공간의 analytic mass-null basis로, `M_ff N=0` 및 **`N^T I_f=0`**를 만족한다. 후자는 shell의 `I=∫rho H^T(Ha+B_x[v,v])dV0`, `HN=0`에서 성립한다. 일반 singular mass만으로 `N^Tc=0`가 보장되는 것은 아니므로 velocity-dependent algebraic constraint를 가진 다른 DAE에 이 후보를 그대로 적용하지 않는다.
|
||
|
||
각 admissible nodal null은 `[0;J_l(phi)^(-1)d]`다. 현재 total rotation-vector chart, geometry 및 swing/twist 유효성과 일정 null rank, 양의 physical mass 및 bounded algebraic inverse가 전 구간에서 필요하다. Partial BC는 null과 free 공간의 **교집합**을 구한다. N의 constrained 성분을 단순 삭제하거나 작은 positive mass를 null로 재분류하지 않는다. Empty null에서는 `a_rec=a_h`; all-fixed 모델도 empty recovery로 처리한다.
|
||
|
||
이 문서의 N은 [N3/N4](numerical-controls.md)의 고정 scale `D=diag(ell I3,I3)`, `x=D^-1 q`, 연속 정규화 analytic basis Z와 **`N=D_f Z(x)`**로 대응한다. 따라서 `psi=N^T g_f=Z^T(D^Tg)_f`, `g=f_int-F`. 미분 시 basis도 현재 q의 함수로 미분한다. N은 시간 grid와 무관한 같은 정의·source 순서를 사용하며 eigen/SVD 부호 변경으로 선택하지 않는다.
|
||
|
||
## 3. 복구 방정식과 필요한 미분
|
||
|
||
정확한 연속 궤적의 대수조건과 첫 두 시간미분은
|
||
|
||
\[
|
||
\begin{aligned}
|
||
\psi(q,t)&=N(q)^Tg_f(q,t)=0,\\
|
||
r_1(q,v,t)&=\psi_qv+\psi_t=0,\\
|
||
r_2(q,v,a,t)&=\psi_q a+\psi_{qq}[v,v]+2\psi_{qt}v+\psi_{tt}=0.
|
||
\end{aligned}
|
||
\]
|
||
|
||
`C=psi_q`, `k=psi_qq[v,v]+2psi_qt v+psi_tt`, `G=C N`라 두면 후보 solve와 유일해는
|
||
|
||
\[
|
||
G\eta=-(C a_h+k),\qquad
|
||
a_{rec}=a_h-NG^{-1}(C a_h+k).
|
||
\]
|
||
|
||
`G^-1`는 수식 표기이며 행렬 역을 만들라는 지시가 아니다. G는 null 개수 차원의 선형 operator이고 대칭·양정성을 전제하지 않는다. 정해진 q/v/t에서 복구 residual은 `R_rec(eta)=G eta+r2_h`, tangent는 정확히 G다. 기존 endpoint Newton residual·Keff는 수정하지 않는다.
|
||
|
||
공개 constant force/고정 BC subset은 `t>0`와 `0+` 우측에서 **autonomous**하므로 `psi_t=psi_qt=psi_tt=0`. 반면 C08a와 explicit-time 제조해는 내부 시험 전용이다. q와 무관한 smooth `F(t)`에 대해
|
||
|
||
\[
|
||
\psi_t=-N^T\dot F_f,\quad
|
||
\psi_{qt}[p]=-DN[p]^T\dot F_f,\quad
|
||
\psi_{tt}=-N^T\ddot F_f.
|
||
\]
|
||
|
||
이는 공개 amplitude·시간변화 BC 지원을 추가하지 않는다. STEP jump 자체의 미분이나 impulse는 이 복구의 대상이 아니며 초기 우측 smooth branch를 사용한다.
|
||
|
||
미분 구현에 필요한 contraction은 다음과 같다. K는 현재 `D_q f_int`, F는 q-independent다.
|
||
|
||
\[
|
||
\begin{aligned}
|
||
\psi_q[p]&=DN[p]^Tg_f+N^T(Kp)_f,\\
|
||
\psi_{qq}[p,s]&=D^2N[p,s]^Tg_f
|
||
+DN[p]^T(Ks)_f+DN[s]^T(Kp)_f
|
||
+N^T(DK[s]p)_f.
|
||
\end{aligned}
|
||
\]
|
||
|
||
`N^Tg=0`이어도 `g=0`가 아니므로 DN/D²N 항을 삭제하지 않는다. Endpoint 접선만 보유한 것으로 `DK`까지 제공된다고 가정하지 않는다. 필요량은 전체 3차 tensor가 아니라 지정 방향 contraction이지만, 해석/정확 미분의 제공 가능성과 독립 derivative oracle는 후속 구현·검토의 미해결 항목이다. 공개 autonomous subset에서 physical energy와 병진 force의 null work가 항등적으로 0임을 사용하는 drill-only 표현은 별도 항등식 검증 후에만 동등식으로 사용할 수 있다. C08a에는 time-dependent generalized force가 있어 같은 단순화를 자동 적용할 수 없다.
|
||
|
||
## 4. 보존량과 달라지는 가속도
|
||
|
||
고정 q/v에서 `delta a=N eta`이므로 정확 산술에서
|
||
|
||
\[
|
||
\Delta I=M N\eta=0,\quad \Delta E=0,\quad
|
||
\Delta\ddot x=H N\eta=0.
|
||
\]
|
||
|
||
이는 **full residual과 support reaction**에도 적용한다. 선택한 질량은 positive Gram integral이므로 free null을 zero constrained 성분으로 올린 `bar N`에 대해 `bar N^T M bar N=0`이면 `H bar N=0`와 `M bar N=0`이다. `M_ff N=0`만 수치적으로 관찰하고 full constrained-row 불변성을 생략해서는 안 된다.
|
||
|
||
q/v가 같으므로 `T,U_phys,U_drill,W,P,L`도 같고, material point 가속도가 같으므로 `Pdot,Ldot`와 global force/moment balance도 같다. 따라서 energy drift나 C08b q/v/P/L 오차를 이 복구가 개선할 수 없다. 수치 계산에서는 큰 eta와 null-action 오차가 곱해져 잔차 차이를 만들 수 있으므로 전후 차이를 직접 검증한다.
|
||
|
||
절점별 `delta a_phi=J_l^-1 d lambda`라 쓰면
|
||
|
||
\[
|
||
\Delta\ddot d=B\Delta a_\phi=0,\qquad
|
||
\Delta\dot\omega=J_l\Delta a_\phi=d\lambda.
|
||
\]
|
||
|
||
즉 director acceleration과 물질점 acceleration은 보존되지만, **공간 angular acceleration의 axial spin 성분**과 chart acceleration은 변한다. `omega=J_l v_phi`는 그대로다. `omega_dot_rec=J_l a_rec,phi+DJ_l[v_phi]v_phi`를 계산할 수 있으나, hidden1이 남아 있는 이산 q/v와 완전히 일관된 연속 triad 궤적을 얻었다는 뜻은 아니다. Director-only 검증으로 full chart a 또는 spatial spin 정확도를 대체하지 않는다.
|
||
|
||
## 5. 이력·regularity·오차 전파의 경계
|
||
|
||
기존 적분은 반드시
|
||
|
||
\[
|
||
A_{n+1}=(1+\alpha)a_{h,n+1}-\alpha a_{h,n},\qquad A_0=a_{h,0},
|
||
\]
|
||
|
||
및 기존 q/v predictor를 유지한다. `a_rec`를 다음 old-a history나 A에 대입하면 다른 적분법이다. 이 후보는 초기 q/v/a_h/A를 다시 설정하지 않으며 초기 hidden2가 일관하면 exact arithmetic에서 초기 correction은 0이다. q/v/A/a_h의 전후 동일성은 전체 history로 확인해야 한다.
|
||
|
||
향후 채택한다면 integration acceleration과 recovered estimate의 의미를 구별하고, 같은 source/frame/q/v identity의 candidate로 평가·검증해야 한다. 현재 물리 a라는 명칭, 공개 quantity와 저장된 history의 의미에 영향이 있으므로 formulation/main/I/O owner의 후속 결정이 필요하다. 이 문서는 field·API·schema·저장 방식이나 recovery 실패의 새 공개 진단을 정하지 않는다. 실패한 recovery를 성공 frame으로 표시하거나 기존 state에 부분 반영하는 것은 허용하지 않는다.
|
||
|
||
Scaled form은 `b_rec=b_h+Z eta`, `G=psi_x Z`, `r2=psi_x b_h+psi_xx[w,w]+2psi_xt w+psi_tt`. N1의 finite-first/단위 scale, N4의 현재 algebraic stiffness scale W와 `W^-1 G W^-1` regularity를 그대로 대조한다. 새 tolerance, diagonal shift, epsilon mass, pseudoinverse 또는 clamp를 정하지 않는다. Solve residual과 보정된 hidden2의 uncancelled contraction scale, eta 및 `N eta` 크기, full equilibrium 전후 차이를 함께 기록한다. Hidden2의 post-recovery 수치 판정과 신규 error estimate의 최종 승인자는 numerical reviewer다.
|
||
|
||
`Q=I-NG^-1 C`이면 `QN=0`, `C Q=0`이고 `a_rec=Q a_h-NG^-1 k`다. 이는 C에 따른 oblique projection이며 최소 Euclidean correction이나 질량 norm 최소화라고 부르지 않는다. 동일 q/v의 null 오차는 제거하지만 물리 complement `P_N a_h`, `P_N=I-N(N^TN)^-1N^T`는 보존한다(혼합 단위 전체 비교는 scaled Z의 projector 사용).
|
||
|
||
q/v와 현재 null을 제외한 a_h가 정확해에 대해 O(h²), 초기값도 같은 정확도이고, G inverse 및 필요한 미분이 구간 전체에서 균일하게 bounded이면 위 smooth recovery map은 O(h²) 가속도 추정을 줄 수 있다. 이는 **조건부 오차 전달 설명**이며 현재 HHT DAE가 그 전제를 만족한다는 증명이 아니다. r1과 psi를 고치지 않으며 r2=0 하나는 정확도 증거가 아니다. N7의 기존 a_h cancellation/noise estimate가 a_rec의 완전한 오차 추정으로 자동 승계되지도 않는다. 후속 검토는 `delta eta=-G^-1(delta r2+delta G eta)`, `delta a_rec=delta a_h+delta N eta+N delta eta`에 기초해 derivative·basis·solve 오차까지 구별해야 한다.
|
||
|
||
Basis 표현에도 주의한다. `tilde psi=S(q,t)psi`에서 연속 2차 미분은 `S r2+2 dot S r1+ddot S psi`다. 따라서 정확 manifold와 hidden1에서 표현 독립성이 성립하지만 이산 r1이 비영이면 q-dependent basis 교체가 recovery를 바꿀 수 있다. N3/N4의 smooth normalized basis를 고정하고 그 미분을 포함한다. Constant invertible 재표현은 같은 correction을 주어야 하지만, arbitrary q-dependent normalization에 대한 exact invariance를 요구하지 않는다.
|
||
|
||
## 6. 독립 검토용 반증 사례
|
||
|
||
아래는 추가 검증 제안이며 [기존 C08/N7](verification-cases.md)의 grid·전체 시점·원 정확도 요구를 바꾸지 않는다. 기존 a_h와 후보 a_rec를 함께 보존하고 실패 결과를 대체하지 않는다.
|
||
|
||
| ID | 모델/조작 | 반드시 확인할 결과 |
|
||
| --- | --- | --- |
|
||
| AR-01 cubic DAE | NR-009의 무차원 `M=diag(1,0)`, `U=(z-x³)²/2`, `F=0`, `x=t,z=t³`, `v0=(1,0)`, `a0=A0=0`; 기존 5 grids와 계수 유지 | `N=(0,1)`, `C=(-3x²,1)`, `k=-6x vx²`, `G=1`; `a_rec,z=3x² a_h,x+6x vx²=6t` exact. q/v/a_h/A는 기존 recurrence와 동일, a_h 전체 최대의 1차 FAIL은 남고 a_rec는 exact branch. 고정밀 독립 계산으로 startup first/peak/late/final 모두 측정 |
|
||
| AR-02 explicit time | 시험 전용 `psi=z-sin(t)`, `M=diag(1,0)`, `U=z²/2`, `F_z=sin(t)`, `x=0` | `psi_tt=sin(t)`로 `a_rec,z=-sin(t)`. 명시 시간항을 누락하면 잘못된 0이 되어야 함. Mixed-time 항은 아래의 별도 추상 DAE로 검사 |
|
||
| AR-03 physical error | AR-01의 같은 q/v에 `a_h,x=epsilon≠0`를 의도적으로 삽입 | `a_rec,x=epsilon` 그대로, `a_rec,z=3x²epsilon+6xvx²`; r2=0이어도 physical error와 endpoint residual은 유지. 복구로 equilibrium 실패를 숨길 수 없음 |
|
||
| AR-04 q/v error | `psi=z-x²`, 현재 `x=1,z=1`, `vx=1+delta`, `a_h,x=0` | `a_rec,z=2(1+delta)²`이므로 vx 오차가 그대로 전파. 별도로 `psi=z`, `z=epsilon`, `vz=delta`이면 a_rec,z=0이어도 psi/r1 오류 유지 |
|
||
| AR-05 null/BC/basis | C05의 finite/warped/partial-BC fixture와 constant basis permutation·sign·scale, empty null, rank loss | admissible current N만 사용; constant basis 재표현 후 correction 동일. Fixed-global UR3 또는 truncated null mutation은 MN/BN/전후 평형 검사 실패. G singular/conditioning 실패를 보정으로 통과시키지 않음 |
|
||
| AR-06 derivative/보존 | 현 q±s p에서 basis·g를 모두 다시 평가하여 C/psi_qq contraction을 독립 고정밀/차분으로 대조 | DN/D²N/explicit-time mixed 항 누락 검출. Full I/E/reaction, xddot/ddot d/Pdot/Ldot, q/v 에너지 전후 보존 및 axial angular-a 변화의 해석식 확인. 기존 N5 sweep·N6 기준에 대조 |
|
||
| AR-07 C08a | 원 manufactured orbit, force oracle, 초기값, 모든 5 grids 유지; 정확한 Fdot/Fddot와 mixed terms 포함 | 기존 q/v/a_h와 후보 a_rec의 **full chart** 오차 및 null/physical 분해. 추가로 spatial omega_dot·director acceleration oracle. 각 quantity의 전체/first/peak node·time/late/final, N7 noise와 원 정확도 기준을 모두 보고 |
|
||
| AR-08 C08b | 원 free plate·초기화·T·모든 5 grids 유지 | nested 공통 시점의 q/v/a_h/a_rec full self difference와 null/physical 분해, grid-independent 초기값, 대표 frame residual/Keff. q/v/P/L/energy 결과 전후 동일. q/v FAIL 또는 physical-a FAIL이 남으면 recovery만으로 기존 acceptance 충족 불가 |
|
||
|
||
AR-02의 mixed-time 검사는 **derivative-mutation용 추상 DAE**다. `M=diag(1,0)`, 명시 시간의존 potential `U(q,t)=(z-t x)²/2`, `F=0`의 endpoint 식은 `x''-t(z-t x)=0`, `z-t x=0`이다. 초기 `q0=(0,0)`, `v0=(1,0)`, `a0=(0,2)`에서 정확해는 `x=t,z=t²`. 따라서 `psi=z-t x`, `psi_q=(-t,1)`, `psi_qt=(-1,0)`, `psi_qq=0`, `psi_tt=0`이고 `a_rec,z=t a_h,x+2vx=2`다. 이 모델은 §3의 **시간불변 내력과 q-independent F(t)**에 대한 외력 미분 특수식으로 계산하지 않고, 일반 r2 식에서 psi를 직접 미분한다. 공개 shell 또는 C08a force convention의 사례가 아니며 시간의존 potential 지원도 추가하지 않는다.
|
||
|
||
C08의 분해는 차이를 먼저 같은 fixed chart에서 구한 다음 **하나의 공통 projector**로 나눈다. C08a는 정확 q의 `Z_*`, C08b는 각 비교쌍의 fine state `Z_fine`을 기준으로 scaled difference `e`에 `e_N=ZZ^T e`, `e_P=(I-ZZ^T)e`를 적용한다. 이 선택과 node/time을 기록하고 각 해를 서로 다른 basis에 먼저 projection한 차이를 같은 양으로 취급하지 않는다. a_rec-a_h의 실제 correction이 current null인지 확인할 때는 해당 해 자체의 current Z를 쓴다. q 차이의 분해는 현 tangent 방향에 대한 진단이며 유한 회전 두 형상의 물리적 동일성 판정이 아니다.
|
||
|
||
현재 NR-009 로그에서 C08a finest angular-a 최대의 current-null 오차는 `5.58582318e-4`, complement는 `1.00582661e-4`다. 따라서 null 제거만으로 finest `1e-4` 통과를 예상할 수 없다. C08b finest rotational q/v/a self difference는 `1.38700902e-4 / 1.15434080e-2 / .868938812`이며 q/v는 후보로 바뀌지 않는다. 기존 로그 분해와 위 공통-projector 진단은 정의를 대조한 후 비교해야 한다.
|
||
|
||
## 7. 인계와 미해결 항목
|
||
|
||
- `startup_review`의 독립 검토: 식·basis 미분·full reaction 불변식·조건부 차수 논리·반례 및 recovery noise의 검증 가능성. 작성자의 식 유도를 수치 승인으로 취급하지 않는다.
|
||
- 구현 전 근거 공백: shell의 C/psi_qq contraction, C08a Fdot/Fddot 독립 oracle, finite/warped/partial-BC regularity와 derivative 오차 전파. 미확인 상태에서 finite difference 값을 production 계약으로 선택하지 않는다.
|
||
- 원 정확도 요구의 충족 여부: AR-01 성공은 C08a/b 성공을 뜻하지 않는다. C08b q/v 및 physical-a 원인과 기존 FAIL 해소는 별도 남은 과제다.
|
||
- 채택 여부와 state/output 의미는 검증 후 main·formulation·I/O owner가 결정안을 작성한다. 본 문서는 현행 계약·공개 subset·영속 schema를 변경하지 않는다.
|
||
|
||
실행 범위는 기존 문서·evidence 대조와 자체 수식 유도, 문서 링크/diff 정적 확인이다. 새 수식 probe, source 변경, build/test와 reference 실행은 하지 않았다. 위 AR 사례는 제안 상태이며 통과 evidence가 아니다.
|