# 고정 초기 null 기저의 sparse reduced HHT 정식화 읽기 구분: 현재 고정 null 기저·sparse lift·augmented scaling의 수식 원본이다. [축소 좌표](formulation-reduced-coordinate.md)를 전제로 읽는다. 아래 인계 당시의 대기·미구현 표현은 그 시점의 기록이며 현재 구현·검증은 [기능 요약](README.md)을 따른다. 본문의 검토·ADR·N1–N7 등 과거 기록명은 당시 근거의 식별명이며, 이 문서의 현재 요약 링크가 원자료 전문을 제공한다는 뜻은 아니다. 작성 당시 상태: `implementation-ready; independent-review-and-runtime-pending`, 2026-10-13. 승인 범위는 `고정 null 기저 제안`과 `HHT-ADR-018`([현재 요약](README.md))의 사용자 결정이다. 본 문서는 수식·연산 계약이며 자기 수치 승인이나 현재 production PASS 기록이 아니다. [기존 축소 정식화](formulation-reduced-coordinate.md)의 fully-free rotation component selector를 아래 고정 ON 기저로 대체한다. 기존 `N1–N7`, `제한 Newton`, `독립 검토`와 허용값은 유지한다. ## 1. 적용 가정과 물리 계약 Total Lagrangian MITC4, 큰 변위·유한회전·작은 탄성 변형률, 등방 선형 탄성, 선택한 drilling potential, `nodal-lumped-kinetic`, 기존 공간 적분·두께 적분과 fixed-initial total rotation vector를 유지한다. 재료 history update는 없다. 관성·내력·공간 각속도·단면력은 [기존 물리 정식화](formulation.md)와 [관성 상세](formulation-inertia.md)가 소유한다. 좌표 변경은 constitutive law, mass measure, drilling stiffness 또는 recovery formula를 바꾸지 않는다. 2026-10-20 기본 직접 스프링은 별도로 승인한 numerical potential 변경이다. 고정 기저·partial-BC 교집합·graph/rate 복원·regularity 계약은 유지하며, hidden primitive만 직접 힘과 실제 cubic 관성 null에서 일관되게 계산한다. 기존 objective twist를 선택하면 그 현행 계산과 판정을 보존한다. 현재 null을 초기 director로 고정하거나 partial BC를 full clamp로 바꾸어 새 스프링의 rank/regularity 실패를 피하지 않는다. Full node-major ordering은 `q_i=(u_x,u_y,u_z,phi_X,phi_Y,phi_Z)`다. `u`: length, `phi`: rad, `v=dot q`, `a=ddot q`이며 `v_phi`와 `a_phi`는 공간 각속도·각가속도가 아니다. Zero fixed BC를 제거한 공간에서 \[ E=I(q,v,a)+g(q,t),\quad I=M(q)a+c(q,v),\quad g=f_{int}(q)-F(t),\quad \delta q^T E=0. \tag{FB-01} \] Residual 부호는 internal+inertia−external이고 Newton RHS는 −residual이다. 공개 CLOAD는 constant global force이고 damping/follower load/nonzero BC/initial condition 입력을 확대하지 않는다. `Fdot,Fddot`는 C08a private oracle에만 사용하며 원 analytic 시간미분을 보존한다. 이 변경은 continuous equation의 roots를 유지하는 **승인된 private 좌표 시간 이산화 변경**이다. ## 2. 고정 기저와 혼합 chart Frame0의 actual rotation kinematics에서 \[ n_{raw}=J_l(\phi_0)^{-1}d(\phi_0),\quad n_0=n_{raw}/\|n_{raw}\|_2,\quad k=\arg\min_{X,Y,Z}|n_0[k]|, \] \[ b=e_k-(e_k^Tn_0)n_0,\quad t_1=b/\|b\|_2,\quad t_2=n_0\times t_1,\quad B_p=[t_1,t_2],\quad B_z=n_0. \tag{FB-02} \] Exact tie는 X,Y,Z 순서다. Norm은 finite positive이며 scaled sum-of-squares를 사용한다. `||b||>=sqrt(2/3)`이므로 tiny-vector fallback/floor는 필요 없다. 기존 `1e-12` ON/Gram 검사를 적용한다. Model director/phi를 정규화하지 않고 reference geometric director를 actual analytic null 대신 사용하지 않는다. 기저는 run 내 불변이며 current null에 맞추어 회전·pivot 변경·rechart하지 않는다. | 절점의 실제 free rotation/null | 고정 분해 | | --- | --- | | 세 회전 모두 free, admissible analytic null 1개 | `phi=Bp p_rot+Bz z`, 두 angular p와 한 z | | 부분 회전 BC, admissible null 1개 | 기존 maximum-null-component pivot 및 component selector 유지 | | 부분 회전 BC가 null을 절단하여 admissible null 0개 | 모든 free component를 p에 유지 | | 세 회전 fixed | rotation private unknown 없음; exact prescribed0 유지 | Null 교집합은 기존 exact component 계약이다. Tiny constrained null 성분을 0으로 자르지 않는다. Initial admissible-node inventory와 각 trial inventory가 달라지면 fixed-rank branch 실패다. Partial global BC를 `p_rot`의 같은 번호에 복사하면 다른 BC가 되므로 금지한다. 일반 partial-BC frame covariance는 주장하지 않는다. Full에 대한 constant sparse injection을 `Lp,Lz`로 표기한다. 병진과 기존 component-chart 열은 identity support, 고정 plane 열은 세 global rotation 성분 support다. Constrained rows는 exact0이고 free 공간에서 \[ q= L_p p+L_z z,\quad L_p^TL_p=I,\quad L_z^TL_z=I,\quad L_p^TL_z=0,\quad L_pL_p^T+L_zL_z^T=I_f. \tag{FB-03} \] 이는 exact-arithmetic identity이며 stored binary64 Gram은 기존 gate로 검산한다. Production full dense basis matrix는 요구하지 않는다. Projection `Lp^T y`, lift `Lp x+Lz w` 및 `Lp^T K Lz` 등은 동일 sparse support의 source-ordered product/sum이다. 한 full DOF가 두 p 및 한 z에 기여할 수 있으므로 direct index scatter나 one-index reverse map으로 대체하지 않는다. Private column metadata에는 immutable canonical node/source identity, `U`/`angular` channel, full support와 coefficient, fixed-plane/component-chart 구분을 둔다. z/constraint rows는 initial null-node canonical order다. 정확 저장 타입은 구현 owner가 결정한다. Plane column 번호를 full DOF 번호로 간주하거나 `%6`로 channel을 판정하지 않는다. Public equation/source identity는 기존 DofManager 계약이며 private ordering을 영속 결과에 노출하지 않는다. Proper `Q`에서 `n0'=s Q n0` (`s=±1`)이면 retained planes 사이 `T2=Bp'^T Q Bp∈O(2)`, `p_rot'=T2 p_rot`, `z'=s z`다. `Bp'=Q Bp` 자체는 필수 조건이 아니다. Axis/tie 선택이 달라도 이 전환은 상수 선형이며 HHT recurrence와 exact arithmetic에서 commute한다. Floating rounding·infinity norm·mode branching의 실제 `1e-10` 통과는 별도 검증이다. ## 3. Graph, hidden rates와 서로 다른 regularity Current normalized analytic null의 lift를 `N(q)`로 둔다. 물리 inertia의 null identity `N^T I=0`와 기존 direct scalar primitive \[ \psi=N^Tg=N^TE,\quad C=\psi_q,\quad G=C L_z, \] \[ G z_v=-C L_p v_p-\psi_t,\quad v=L_pv_p+L_z z_v, \] \[ G z_a=-C L_p a_p-\psi_{qq}[v,v]-2\psi_{qt}v-\psi_{tt}, \quad a=L_pa_p+L_z z_a \tag{FB-04} \] 를 사용한다. Position graph `psi(Lp p+Lz z,t)=0`은 coupled global solve다. Gradient/Hessian/third·external time-mixed terms는 기존 RC-02, RC-13–15의 analytic primitive를 그대로 사용하고 모든 injection을 FB-03으로 일반화한다. Shared node external term은 한 번만 추가한다. Numerical FD는 production tangent가 아니다. 검사는 다음처럼 분리한다. | Operator / 조건 | 의미 | | --- | --- | | `G=psi_q Lz` 및 기존 `W^-1 G W^-1` conditioning | 선택된 graph의 implicit derivative/rate solve 가능성 | | `N(q)^T Lz`와 아래 normalized spanning matrix S | selector residual의 full-root equivalence와 정량적 횡단성 | | `psi_q N(q)`의 N4 null-coordinate conditioning | 실제 moving null 방향의 물리 대수 regularity | | `J=Lp+Lz z_p` rank, `J^T M J` positivity 및 기존 mass/N4 검사 | 축소 물리 range의 비퇴화 | 여기서 `W_i=sqrt(k_i)`, `k_i=N_i^T Kdrill_metric N_i>0`는 원 N4 scale다. G 검사와 moving-null 검사는 기존 `2^-32` 정책·finite-first·실제 operator로 수행하며 하나의 PASS를 다른 operator의 PASS로 승계하지 않는다. Node-local `N^T Lz`는 fixed-plane node의 `n(q)^T n0`, component node의 원 nonzero pivot component다. Exact0/nonfinite는 실패다. 작은 비영 내적의 정량적 검사는 `D_f`를 N1의 free-row scale로 둔 다음 무차원 square matrix에서 수행한다. \[ S=[D_f^{-1}L_{p,f}D_p,\ D_f^{-1}N_f(q)],\qquad rcond_\infty(S)=1/(\|S\|_\infty\|S^{-1}\|_\infty)\ge2^{-32}. \tag{FB-04a} \] S의 all-free angular block은 `[t1,t2,n(q)]`이고 부분 null block은 `[retained component axes,n_free(q)]`, null이 없는 block은 identity다. 병진 열은 ell로 정규화되어 identity다. Canonical node/block 순서의 inverse-action solves로 S와 inverse의 최대 row-sum을 계산하고 global dense inverse는 만들지 않는다. 1×1 `N^T Lz`의 rcond는 비영일 때1이므로 작은 횡단각을 검출하지 못한다. S 대신 `S^TS`에 동일 threshold를 대입하면 conditioning 의미가 바뀌므로 하지 않는다. 이 검사는 기존 `2^-32` 기준을 새 fixed-plane complement의 실제 normalized operator에 적용한다. 임의 cosine cutoff를 추가하지 않는다. G/moving-null/range 검사는 별도다. Principal `||phi||