# Hex8 정식화와 검증 불변량 적용: [PRD](PRD.md)의 FEM-REQ-HEX8-002–007,012–018,021. 물리 선택은 [ADR](ADR.md)에 있다. 이 문서는 승인된 식의 구현용 유도이며 외부 결과에 맞추어 physics를 바꾸는 권한이 아니다. 수치 controls는 [별도 원본](numeric-controls.md), 출력 tensor/identity는 [I/O](io.md)를 따른다. 2026-10-09 승인된 Solid HHT 내부 정밀도 변경의 구현 계약은 [precision formulation](precision-formulation.md)이다. 동적 paired 경로의 상대변위 gradient, 전체 상태·계수 연산과 반올림 출력 의미는 해당 문서를 함께 적용한다. ## Shape·기준 geometry·적분 절점 signs는 `---,+--,++-,-+-,--+,+-+,+++,-++`다. Point signs는 `---,+--,-+-,++-,--+,+-+,-++,+++`, coordinate는 각 ±1/√3이고 weight1이다. \[ N_a={1\over8}(1+\xi_a\xi)(1+\eta_a\eta)(1+\zeta_a\zeta),\quad J_{0,iJ}=\sum_aX_{ai}N_{a,J},\quad G_a=J_0^{-T}\nabla_\xi N_a. \] J0 column은 자연 ξ/η/ζ 미분이다. Gauss reference 위치는 ΣNaXa, volume weight는 det J0다. Translation 차이를 먼저 사용해 large coordinate offset의 취소 오차를 줄일 수 있지만 기준 좌표와 source identity는 변경하지 않는다. Shape의 partition of unity·linear reproduction와 gradient 합0을 검증한다. Invalid det/inverse는 abs/clamp나 corner 재배열로 숨기지 않는다. ## Cell 전체의 Jacobian 인증 Trilinear map의 det J는 각 자연 좌표에 대해 최대2차인 tensor polynomial이다. `s=(ξ+1)/2,t=(η+1)/2,r=(ζ+1)/2`에서 degree(2,2,2) Bernstein basis로 표현할 수 있다. 각 축 -1/0/+1의27개 determinant 값에서 다음1D 변환을 세 축에 적용한다. \[ b_0=p(-1),\quad b_2=p(1),\quad b_1=2p(0)-(p(-1)+p(1))/2. \] Bernstein basis는 nonnegative이고 합1이므로 모든 coefficient의 양의 lower bound는 cell 전체 det>0를 보증한다. 모든 sample가 양수인 것만으로는 충분하지 않다. Coefficient bound가 불확실하면 de Casteljau midpoint subdivision 후 child cell을 검사한다. Sample의 nonpositive upper bound 또는 완전히 nonpositive cell은 invalid이며, depth/resource 한계에서도 positive를 인증하지 못하면 uncertain geometry failure다. 인증용 연산은 outward-rounded interval arithmetic으로 수행한다. Addition/subtraction/ multiplication·변환·subdivision·current Xa+ua까지 실제 FP 오차를 포함하며 NaN/Inf/overflow를 거부한다. 단순 coefficient estimate에 임의 epsilon을 더해 positive라고 선언하지 않는다. Current geometry에도 같은 인증을 적용하고 point det F>0를 확인한다. Trial failure가 reference cache나 accepted state를 변경하지 않는다. 세부 종료 controls는 numeric-controls를 따른다. ## Linear elasticity와 K0 \(\mu=E/[2(1+\nu)],\lambda=E\nu/[(1+\nu)(1-2\nu)]\). \(E>0,-1<\nu<.5\)에서 bulk/shear modulus가 양수다. Engineering strain vector는 `[ε11,ε22,ε33,2ε12,2ε13,2ε23]`; stress vector는 실제 shear stress다. Normal C block은 diagonal λ+2μ/off-diagonal λ, shear diagonal μ다. \[ K_0=\sum_g B_g^TCB_gw_g,\qquad f=K_0u,\qquad U={1\over2}u^TK_0u. \] 동일 point의 block 형태는 \(\lambda G_{ai}G_{bk}+\mu\delta_{ik}G_a\cdot G_b+ \mu G_{ak}G_{bi}\)다. B/Voigt 코드와 독립 tensor/polynomial oracle를 구분한다. Unconstrained K0는 symmetry/PSD 및6 rigid modes를 가지며 BC 적용 후 mechanism/singularity를 solver가 명시적으로 처리한다. Full integration 잠김을 안정화로 바꾸지 않는다. ## Total Lagrangian energy·내력·접선 \[ F=I+\sum_a u_a\otimes G_a,\quad E_G=(F^TF-I)/2, \quad W={\lambda\over2}(\operatorname{tr}E_G)^2+\mu E_G:E_G. \] \(S=\partial W/\partial E_G=\lambda\operatorname{tr}(E_G)I+2\mu E_G\), \(P=FS\). \(\delta E_G=\operatorname{sym}(F^T\delta F)\)이므로 \(\delta W=P:\delta F\), \(\delta F=\sum\delta u_a\otimes G_a\)다. \[ U=\sum W_gw_g,\quad f_{ai}=\sum P_{iJ}G_{aJ}w_g. \] \(\delta P=\delta F S+F\delta S\)를 분리하면 \[ \mathbb C_{IJLN}=\lambda\delta_{IJ}\delta_{LN} +\mu(\delta_{IL}\delta_{JN}+\delta_{IN}\delta_{JL}), \] \[ (K_{geo})_{ai,bk}=\sum\delta_{ik}G_{aJ}S_{LJ}G_{bL}w_g, \quad (K_{mat})_{ai,bk}=\sum G_{aJ}F_{iI}\mathbb C_{IJLN}F_{kN}G_{bL}w_g. \] Kt=Kmat+Kgeo는 energy Hessian이며 load-independent CLOAD tangent는0이다. S는 symmetric이고 total Kt도 symmetric이나 stressed trial에서 SPD라고 가정하지 않는다. Zero state에서 F=I/S=0/geo=0/total=K0다. 유한 rigid R에서 F=R, Green/W/f는0이며 strained 상태를 global R로 회전하면 energy invariant·force/tangent covariance를 만족해야 한다. Affine deformation의 energy/stress 및 multi-element constant-stress patch가 독립 oracle다. 공식 비선형 stress는 \(\sigma=FSF^T/\det F\), Green strain은 기준 global tensor다. Linear 공식 strain은 infinitesimal tensor다. 저장 strain의 shear는 실제 tensor 성분이고 B 계산용 engineering shear의 절반이다.8점 값을 그대로 저장한다. ## Consistent mass와 generalized eigen \[ M_{ai,bj}=\delta_{ij}\sum_g\rho_0N_aN_bw_g, \quad T={1\over2}v^TMv. \] M은 reference-state 상수다. Positive weights와8점 interpolation matrix의 full rank에서 SPD가 따른다. Axis-aligned brick의 scalar block은 \(\rho V/216\)에 각 축 sign이 같으면2/다르면1인 세 factor의 곱이다. Direction별 총합은 rho V, row sum은 rho V/8다. Production에서는 lump하지 않는다. 8점 shape evaluation의 minimum singular value 제곱은1/27이다. Exact local quadrature에서 \(m_{e,lower}=\rho\min_gw_g/27\)는 local M의 positive lower bound다. Global scatter·principal free restriction에도 active-node incidence를 고려한 lower bound가 보존된다. 예를 들어 모든 active node에 적어도 하나의 element가 있는 경우 min_e bound는 conservative global lower bound다. 실제 FP matrix의 roundoff와 SPD evidence를 포함해야 하며 이 수학적 식만으로 설치 backend의 실행을 검증했다고 주장하지 않는다. \(K_{ff}\phi=\lambda M_{ff}\phi\)를 풀며 constrained component0으로 복구하고 \(\phi^TM\phi=1\), \(f=\sqrt\lambda/(2\pi)\)를 구분한다. Proven mass lower bound가 있다면 \(\lambda_{max}\le\|K_{ff}\|_\infty/m_{lower}\)는 search upper-bound 근거가 된다. Diagonal ratio classification scale 자체는 upper bound가 아니다. 검색/count의 실제 증거와 모든 backend pair의 original K/M 잔차·mass norm/Gram을 검증한 뒤 최저 N을 공개한다. Repeated modes는 cluster/subspace로 판단하며 arbitrary rotation의 개별 vector를 외부 비교하지 않는다. ## Static partition과 accepted 상태 Linear은 Kff uf=Ff−Kfc uc다. Nonlinear free residual은 fint−F이고 Ktff correction을 풀되 prescribed 값을 factor별 absolute target으로 복구한다. 외력과 prescribed target을 같은 factor로 증가시키며 이전 accepted state로부터 trial을 시작한다. Empty free solve는 유효한 recovery 경로다. Constrained reaction/full residual을 구분하고 모든 required recovery가 끝나야 commit한다. ## HHT constant-mass 식 Public alpha=−.05, beta=(1−alpha)²/4=.275625, gamma=.5−alpha=.55다. Algorithmic A와 physical endpoint a를 구분한다. \[ u_p=u_n+hv_n+h^2(.5-\beta)A_n,\quad v_p=v_n+h(1-\gamma)A_n, \] \[ A_{n+1}=(u_{n+1}-u_p)/(\beta h^2),\quad v_{n+1}=v_p+\gamma hA_{n+1},\quad a_{n+1}=(A_{n+1}+\alpha a_n)/(1+\alpha). \] \[ R=MA_{n+1}+(1+\alpha)(f_{n+1}-F_{n+1})-\alpha(f_n-F_n), \quad K_{eff}=M/(\beta h^2)+(1+\alpha)K_t. \] 이전 free endpoint가 \(Ma_n+f_n-F_n=0\)이면 R=(1+alpha)(Ma_next+f_next−F_next)다. Endpoint 표현을 쓰면 tangent도1/(1+alpha)로 함께 환산해야 한다. Incomplete previous endpoint를 동등하다고 가정하거나 weighted force에서 reaction을 계산하지 않는다. Physical reaction은 Ma+f−F의 constrained projection이다. Initial u/v0에서 Mff a0=Ff(0+)−ff(0), A0=a0다. 곡선은 endpoints에서 실제 평가하며 prescribed dynamic q/v/a/A는 exact0다. Physical momenta는 interpolated current x/v를 사용해 \(p=\int\rho v\,dV_0\), \(L=\int x\times\rho v\,dV_0\)다.8점 consistent quadrature와 nodal mass 표현이 일치해야 한다. Angular-momentum rate는 \(\int x\times\rho a\,dV_0\)이며 v×v 항은0이다. Consistent symmetric M에서 nodal 표현의 \(\sum v_a\times(Mv)_a=0\)도 성립한다. External/support moment는 같은 current 위치로 구한다. HHT 및 force trapezoid work는 frame별 exact energy conservation을 의미하지 않는다. Wext는 endpoint force·du trapezoid 누적, error=T+U−T0−U0−Wext다. Alpha0 linear unforced benchmark에서는 독립 보존을 확인한다. Current moment의 검사에는 선형화의 적용 범위를 구분한다. Full physical residual을 \(r=Ma+f_{int}-F\), 공개 constrained reaction을 \(Q=\Pi_c r\), free residual을 \(e=\Pi_f r\)라 하면 \(B_x=\sum x_a\times(F_a+Q_a)-\dot L =\sum x_a\times f_{int,a}-\sum x_a\times e_a\)다. 정적에서는 관성항을0으로 둔다. TL은 유한회전 불변성으로 \(\sum x\times f_{int}=0\)지만 선형 K0는 \(\sum X\times K_0u=0\)이며 \(\sum x\times K_0u=\sum u\times K_0u\)가 일반적으로 O(u²)이다. 선형 current 수지 차이를 exact0으로 보정하거나 roundoff gate로 거부하지 않는다. Current moment와 momentum은 그대로 계산하고 이 차이와 reference-arm identity를 내부 evidence/로그로 설명한다. Newton 허용오차의 free residual 기여도 함께 남긴다. 시간차분 \(\Delta L/h\)를 instantaneous \(\dot L\)와 exact equality로 판정하지 않는다. ## 정식화 검증 경계 Analytic brick/affine energy, independent tensor polynomial integrals,6 rigid modes, scaling/ covariance, gradient/tangent directional step sweep와 small-load limit를 결합한다. Warped geometry는 independent higher-order quadrature로 discretization error를 보고한다. Generalized eigen은 작은 independent dense oracle와 original sparse-pencil metrics로 검증한다. HHT는 analytic oscillator/비선형 constant-mass 제조해에서 u/v/physical a·h/h2/h4 수렴을 검증한다. 외부 comparison의5%/1%로 이 내부 검사를 대신하지 않는다.