Files
FESADev/docs/hht-implicit-dynamics/numerical-controls.md
T

17 KiB
Raw Blame History

HHT 내부 수치 판정

Numerical Review의 구현용 계약이다. IEEE binary64를 기준으로 하며 정식화, 관성 상세, 검증 사례를 함께 적용한다. 사용자 결정 HHT-ADR-007에 따라 이번 HHT 구현은 consistent kinetic mass를 사용한다. 아래 lumped 대조는 기존 eigen/대안 evidence의 경계이며 새 HHT lumped 지원 요구가 아니다. 외부 reference는 TOLERANCE만 따른다.

N1. Scale와 공통 규칙

ell은 활성 요소의 초기 최대 edge 길이이며 finite positive여야 한다. D=diag_i(ell I3,I3), x=D^-1 q, w=D^-1 v, b=D^-1 a, B=D^-1 A, r=D^T E, Khat=D^T K D, Mhat=D^T M D를 사용한다. x는 무차원, w는 시간^-1, b/B는 시간^-2, r/Khat은 energy, Mhat은 mass·length²다. D는 분석 내 고정이다. Element 독립 비교에는 해당 element의 ell을 양쪽에 동일 적용한다.

별도 표시 없는 vector norm은 infinity norm, matrix norm은 infinity norm이다. Frobenius/2-norm은 식에 표시한다. Euclidean/Frobenius norm에는 scaled sum-of-squares, 조립에는 stable source 순서의 reduction을 사용한다. 원 force와 moment, 원 translation과 rotation을 직접 합하지 않는다. N2의 u/phi 채널도 분리한다.

모든 검사는 finite-first다. 항등식 ratio의 분자=분모=0은 metric 0, 분모=0·분자≠0은 실패다. 필요한 positive mass, 길이, stiffness, conditioning scale가 0이면 이 zero-pass 대상이 아니다. max(1,physical_scale), absolute-force floor, epsilon mass, rank 잘라내기, raw 값 clamp를 금지한다. Nonzero 값이 필요한 변환에서 underflow-to-zero/overflow이면 진단하고 실패한다.

N2. Full Newton 종료와 선형 solve

매 trial의 원래 free endpoint 식 E=Ma+c+f_phys+f_drill-F를 다시 계산한다. 각 free row i의 uncancelled scale는

s_i = sum_element,j |(M_e)_ij a_ej| + sum_element |c_ei| + sum_element |f_phys,ei| + sum_element |f_drill,ei| + sum_load |F_load,i|.

Ma+c나 physical/drill을 먼저 상쇄한 값을 분모로 사용하지 않는다. q/v/a는 같은 trial이며 원 mass와 physical a를 쓴다. 채널 J=u,phi에 대해 S_J=max_(i∈free J) s_i, rho_J=max|E_i|/S_J. 반력과 constrained row는 Newton norm에서 제외한다. 외력만 0이거나 acceleration turning point여도 남은 항이 scale를 제공한다. 모든 항이 0인 branch는 E의 exact zero만 통과한다. Zero vector 근방에서 임의 분모를 만들어 통과시키지 않는다. Empty free channel은 N/A다.

ID 판정 고정 값
N2-R Force와 moment의 rho_u, rho_phi 각각 <=1e-10
N2-Q 마지막 적용 correction의 `
N2-V `h
N2-a `h²
N2-A `h²
N2-L Scaled solve Khat_ff Δx=-r_f: `

모든 적용 가능한 gate의 AND다. a와 A의 서로 다른 chain-rule 계수를 반영한다. h-based rate gate는 증가량의 운동학 일관성을 검사하며 physical acceleration의 시간 정확도를 인증하지 않는다. 해당 정확도는 N7의 독립 검증으로 확인한다.

Newton 초기 추정은 constant-acceleration q_trial=q_p+beta h² A_n으로 둔다. 이는 Newton 시작값이며 시간 scheme 변경이 아니다. 모든 trial에서 고정 q/v/a/A 성분은 exact 0이다. Residual이 이미 통과하는 초기 추정은 correction=0으로 명시하여 동일 gate를 평가한다. 그 외에는 Keff를 매회 새로 조립하고 correction을 수정 없이 적용한 후 residual을 다시 검사한다. Initial guess가 chart/geometry 밖이면 실패이며 clamp·line search·cutback으로 바꾸지 않는다.

최대 100개의 Newton correction을 허용한다. 100번째 correction 뒤의 candidate가 모든 gate를 만족하면 통과, 아니면 실패하며 101번째 solve는 없다. 기존 정적 100회/no-cutback 제한을 동일 실패 상한으로 채택한 것이고, 동적 문제가 100회 안에 수렴한다는 보장은 아니다. Backend success나 작은 correction 하나만으로 성공하지 않는다. Singular/invalid/nonfinite/linear backward-error failure는 즉시 실패다.

N3. Update·초기화·대수조건

HHT 기본 alpha=-.05,beta=.275625,gamma=.55, A0=a0, A1=(1+alpha)a1-alpha*a0. q,v는 A로 적분하고 endpoint I에는 a를 넣는다. 각 update 식의 결함을 동일 차원의 우변 항 절댓값 합으로 나누어 <=1e-12를 요구한다. 큰 q 두 값을 빼서 잃은 작은 increment를 숨기지 않도록 q1-qn과 저장된 predictor/correction의 일치도 함께 검사한다. Fixed boundary의 exact zero는 이 ratio보다 우선한다.

Scaled analytic null basis Z는 Mhat_ff Z=0, Z^TZ=I이며 ψ=Z^T(D^Tg)_f다. Physical inertia의 null action도 N4로 검사한다. 초기 ψ는 || |Z|^T (D^T s)_f ||로, 초기 velocity/acceleration hidden residual은 각각 || |ψ_x| |w|+|ψ_t| ||, || |ψ_x| |b|+|ψ_xx|[|w|,|w|]+2|ψ_xt| |w|+|ψ_tt| ||로 나누어 <=1e-10을 요구한다. Matrix/tensor contraction 내부 상쇄도 분모에서 제거한다. 초기 acceleration solve는 physical range equation과 null consistency equation 둘 다 통과해야 한다. 비영 ψ에 대해 초기 q/v를 몰래 보정하지 않는다.

초기 q0=v0=0, STEP의 0+ force 전값과 우측 Fdot=Fddot=0을 사용한다. M a_P=F-f_int-c, Z^T D^-1 a_P=0 후 a0=a_P+D Z eta의 η를 differentiated ψ 식으로 결정한다. Null acceleration을 0으로 고정하거나 pseudoinverse 결과만 채택하지 않는다. c0=0은 v0=0에서 유도되는 값이지 일반 초기조건 생략 규칙이 아니다.

Accepted endpoint의 ψ도 <=1e-10으로 검사하되 denominator는 || |Z|^T (D^T s)_f ||로 계산한다. 매 frame의 1·2차 hidden-constraint 결함은 같은 항 norm 합으로 정규화해 raw value와 함께 진단한다. 이산 v/a가 미분 제약을 exact zero로 만족한다는 주장은 하지 않는다. Hidden defect에 N2 Newton tolerance를 강제하지 않으며, 기능 acceptance는 N7/C04/C08의 시간수렴으로 검증한다. Nonfinite 또는 rank/regularity 실패는 진단 수준에 머무르지 않고 즉시 실패한다.

N4. 질량·null·대수 regularity

Analytic expected null은 각 node의 [0;Jl^-1 d]와 실제 free component 공간의 교집합이다. Constrained 성분 중 하나라도 정확히 비영인 null vector는 그 node의 admissible null이 아니다. Tiny nonzero를 0으로 취급하지 않는다. Rank-changing partial BC 구성은 regular branch를 벗어나므로 실패한다. 처음 예상한 rank를 numerical eigenvalue cutoff로 다시 정의하지 않는다. 지정 reference의 625 free nodes는 expected positive dimension 3125/null 625이며 실측 rank가 아니다. Z의 nodal 방향은 위 analytic 식을 positive norm으로 정규화하여 연속적으로 정의한다. Trial마다 eigen/SVD basis나 최대성분 부호 규칙을 새로 선택하여 ψ 미분에 불연속을 넣지 않는다.

대상 판정·수치
Mhat symmetry, analytic null action `
Basis·complement `
Positive mass Consistent element physical20와 lumped node physical5의 projected scaled block에 Cholesky strict-positive pivot; assembled free physical mass factor도 SPD. Small positive pivot을 없애지 않음
Local conditioning 각 nonempty element/node positive block의 `rcond_inf=1/(
Lumped scalar positivity finite m>0,j>0, j-(s/m)*s>0; m*j-s*s의 overflow/underflow에 판정을 맡기지 않음. Independent centered thickness integral과 1e-12 대조
Mass/inertia identities Scalar Ck entry error / [m_e(t/2)^k], 총질량·uniform translation energy·직접 volume kinetic energy·Cholesky reconstruction: 각각 1e-12. Nonlinear physical inertia null action과 kinetic power identity는 1e-10

초기 및 각 accepted state에서 A_alg=ψ_x Z의 null-coordinate regularity를 검사한다(A_alg는 HHT 보조가속도 A와 다른 행렬이다). Scale는 numerical drill Hessian의 단순 현재 diagonal 대신 k_i=sum_e kd_e ||Dχ_e[D Z_i]||²>0를 사용한다. W=diag(sqrt(k_i)), B_alg=W^-1 A_alg W^-1. Empty null system은 N/A. 모든 k_i finite positive, factorization nonsingular와 rcond_inf(B_alg)>=2^-32를 요구한다. Small synthetic/local blocks는 inverse-action norm을 직접 계산한다. 실제 assembled sparse matrix는 1/∞ norm condition estimator를 사용하고 추정값·알고리즘을 기록한다; 추정치는 정확한 forward-error certificate가 아니므로 같은 ψ/solve/시간수렴 검사를 대체하지 않는다. 추정 불능이나 기준 미달은 실패다.

Newton 도중 Keff 자체는 대칭·SPD일 필요가 없다. Positive mass 및 regular null constraint를 Keff의 양정성 검사로 대체하지 않는다. 오래된 N 또는 초기 M을 현재 geometry에 고정하지 않는다. Free support가 전부 fixed인 유효 모델은 0×0 free solve를 건너뛰고 반력을 회복한다.

N5. Rotation·geometry·관성 tangent

기존 finite_rotation와 nonlinear shell의 predicates를 보존한다: pi-|phi|>sqrt(DBL_EPSILON), proper Q/director의 1e-12 일관성, director opposition margin 1e-8, positive valid Jacobian·polar/swing/twist branch. Mass의 추가 27점도 정식화의 유효성 검사를 적용한다. Small-angle series 전환은 기존 |phi|=1e-4 경계 양쪽의 D1/D2/D3 연속성 검증을 포함한다. 허용 geometry를 넓히거나 norm을 재정규화하는 승인이 아니다.

x±s p, ||p||2=1의 perturbation에서 모든 상태는 원 q±s Dp부터 재평가한다. s=2^-j, j=8,10,12,14,16,18,20의 고정 sweep을 사용한다. Keff 검증에는 각 q perturbation에 종속 v/a/A까지 재계산하고, partial DqI/DvI는 나머지 독립변수를 고정한다. 각 u-only, phi-only, mixed direction과 nonzero v/a를 검사한다.

검사 Metric와 한계
Nonzero tangent action `
Exact zero action FD mismatch / `[
D3 director 중앙차분 D2d(phi±s p)[r,t]와 D3 비교, nonzero ratio 1e-6; zero analytic direction은 `
Symmetry M, conservative internal Hessian만 scaled Frobenius <=1e-12; 일반 dynamic Keff에는 symmetry gate 없음

j=10..18 안에서 연속한 두 sweep 점이 통과해야 한다. 모든 raw error/step을 보고하고 가장 작은 s 하나만 골라 통과시키지 않는다. Truncation 감소와 roundoff plateau를 구별하며, analytic polynomial/zero directions에 인위적인 2차 FD 기울기를 요구하지 않는다. 전체 sweep이 branch 밖이면 fixture 실패이며 한쪽 derivative로 바꾸지 않는다.

N6. 불변식·평형·에너지

동일 물리 문제의 proper global frame change·단위변환·direct kinetic-energy oracle는 positive physical scale에 대해 비교한다. Matrix congruence와 질량 항등식 1e-12, nonlinear objectivity·energy/power·derivative-recovered rates 1e-10. Zero-energy rigid mode는 E_ref=sum_e E_e t_e area_e로 나눈 physical/drill energy <=1e-10와 element force action / [||Khat_initial||F ||x||2]를 함께 확인한다. E_ref는 테스트의 알려진 물리 stiffness scale이며 Newton residual 분모에 넣는 absolute floor가 아니다.

전체 force balance는 sum(F_applied+F_reaction)-Pdot, moment는 같은 현재 위치와 공간 moment를 쓴 sum((x-O)×F+M)-Ldot다. 분모는 같은 식에 들어간 절점/적분점별 force·moment norm의 상쇄 전 합이며 채널별 normalized error <=1e-8. 기존 비선형 global balance 기준과 같은 값이지만 새 inertial terms, current arms, Jl^-T를 포함해 새로 검증한다. Free residual N2와 함께 통과해야 한다.

Alpha=0 선형 무감쇠 oscillator에서 max|E_n-E0|/E0<=1e-10; nonlinear/alpha<0에는 적용하지 않는다. 일반 nonlinear T+U_phys+U_drill-W는 부호·최대 절댓값·시간수렴을 보고하며 매 frame 감소·정확 보존을 요구하지 않는다. 자세한 수치 bounds는 C07/C08에 고정한다. HHT algorithmic dissipation을 physical damping으로 기록하지 않는다.

N7. 수렴·결정론·실행 근거

Temporal 측정량·grid·amplitude scale는 검증 사례가 고정한다. Exact solution이 있는 C01–C04/C08의 q/v/physical a는 마지막 두 refinement에서 error 감소 및 log2(e_h/e_h2)>=1.8, finest normalized max error <=1e-4를 요구한다. 이는 지배적인 2차항의 asymptotic window를 허용하는 내부 oracle 조건이고 외부 reference tolerance가 아니다. A에는 physical a의 2차 기준을 적용하지 않는다. 모든 error가 정확히 0이면 exact branch를 보고하고 관측 차수를 만들지 않는다.

Temporal 검증에서만 다음 read-only defect solve를 추가한다. 마지막 Newton 선형계의 계산된 correction Δx와 잔차 e_L=Khat_k Δx+r_k에 대해 같은 행렬로 Khat_k z_L=-e_L을 푼다. 별도로 accepted endpoint에서 새로 평가한 Khat_* z_N=-r_*를 푼다. z_L은 선형 solve의 결함, z_N은 비선형 endpoint의 남은 defect correction이며 서로 대체하지 않는다. 두 해의 N2-L backward check도 필요하다. 이 결과를 q/history에 적용하거나 Newton100 제한을 우회하는 polishing step으로 쓰지 않는다.

채널/node별 eta_x=||Δx_last||2+||z_L||2+||z_N||2로 두고, eta_w=gamma/(beta h)*eta_x, eta_b=eta_x/[(1+alpha)beta h²], eta_B=eta_x/(beta h²)로 전파한다. 각 항은 같은 scaled coordinate channel의 norm이며, D를 적용한 뒤 case별 q/v/a amplitude로 나누어 temporal error와 같은 단위·정규화로 비교한다. 최소 산술 해상도도 기록한다: gamma32=32u/(1-32u), eta_x,round=gamma32*(||x_*||2+||x_p||2), eta_b,round=eta_x,round/[(1+alpha)beta h²]; v/A도 해당 chain-rule 계수를 사용한다. 이 해상도는 position cancellation을 보여 주는 보수적 산술 지표이며 모든 element evaluation의 엄밀한 forward-error bound라는 주장은 하지 않는다.

시간오차는 각 grid의 전체 시점에서 위 estimate/산술 지표의 최댓값보다 100배 커야 order evidence로 사용한다. 미달이면 roundoff/iteration dominated로 inconclusive, 통과가 아니다. 정해진 coarse grids 또는 고정밀 독립 oracle로 다시 검토하며 실패한 판정값을 완화하지 않는다. 실제 shell self-convergence에는 C08의 별도 기준을 적용한다. 일반 production analysis/reference 비교에 이 두 추가 solve를 매 frame 수행하라는 요구는 아니다.

동일 binary/runtime/thread/input 세 실행의 source/frame/diagnostic order와 sparse structure는 exact 일치, scaled scalar state 차이는 1e-12 이하를 요구한다. Failed trial은 committed q/v/a/A·history·frame count·기존 최종 HDF5를 바꾸지 않아야 한다. Reference fixed DIRECT는 100 increments이며 원 n*h schedule과 identity를 검사한다.

수치값의 근거: u=2^-53, gamma4096≈4.55e-13에 대해 작은 dense/27점 항등식 1e-12, 그보다 100배 큰 assembled residual 1e-10을 사용한다. rcond>=2^-32는 gamma64/rcond≈3.06e-5의 local worst-case 규모를 제한하며 보편 forward accuracy 보장이 아니다. FD 1e-6/zero 1e-10, objectivity 1e-10, balance 1e-8은 기존 비선형 검토 및 eigen2 controls의 해당 식을 현재 관성/좌표에 대조해 채택했다. 기존 정적 Newton 외력 상대 1%·typed absolute 1e-3, FEAST controls, eigen 외부 RMS 예외는 채택하지 않았다. 새로운 runtime/solver 사례의 실행 상태는 아직 NOT RUN이며 숫자를 실행 통과처럼 보고하지 않는다.