Files
FESADev/docs/hht-implicit-dynamics/verification-cases.md
T
KOKO\Mimi eaa5cbeb21 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.
2026-10-13 16:57:19 +09:00

15 KiB
Raw Blame History

HHT 반증 가능한 검증 사례

HHT-ADR-012의 nodal-lumped-kinetic이 현재 필수 검증 대상이다. M, I, c, DqI, DvI, T, P, L 및 rates를 동일한 rhoN_idV0 measure로 계산한다. 기존 수치 기준, 검증 사례, reference 계약과 모든 허용값을 유지한다. 과거 consistent 구현의 결과는 변경본 통과로 승계하지 않으며 현재 재검증은 대기다.

공통 측정과 실행 상태

기본 alpha=-.05,beta=.275625,gamma=.55, A0=a0, 물리 damping=0. 명시한 정확해로 q0/v0/a0를 설정한다. 같은 종단시각과 nested checkpoint에서 q/v/physical a를 각각 비교한다. A와 물리 a의 차이는 별도 기록한다. Temporal error는 scalar 절댓값/vector 2-norm의 max_n ||quantity_n-exact(t_n)||이며 모든 accepted time points를 포함한다. Shell은 node별 3-vector 2-norm의 최댓값을 u/phi와 각 rate에 따로 사용한다. 첫 increment, t≥T/4 구간 최대, 전체 최대, 종단 오차를 분리 보고한다. 종단의 우연한 상쇄를 전체 통과로 쓰지 않는다.

C01–C04의 grid는 h=1/16,1/32,1/64,1/128,1/256, T=1이다. N7의 마지막 두 refinement order/error/noise 기준을 적용한다. C02의 STEP jump는 t0 이전에 있고 정확해는 0+ 우측이다. 첫 step를 제외하여 통과를 만드는 것은 허용하지 않는다. A0=a0 startup이 고차 국소조건을 모두 만족한다는 가정을 하지 않는다.

Evidence 현재 상태와 적용 한계
기존 SDOF·moving-null probe RUN / 제한된 독립 검산. h=1/32..1/1024의 종단 오차 및 moving-null hidden-defect 최대를 기록했다. 아래 전체 시점 max-error 계약의 실행 통과를 뜻하지 않는다.
C01–C12의 FESA/kernel/procedure 실행 NOT RUN. 구현 후 요구되는 검증 설계다. 기존 Python 수식 계산을 C++ solver 통과로 승계하지 않는다.
지정 reference inventory reference-model §5의 main 정적 조사 evidence. Solver/HDF5 comparison은 NOT RUN.

C01–C04. 정확해·초기화·시간 차수

ID 정확한 모델·초기값 측정·반증 대상
C01 m=1,k=4,F=0, q=cos(2t)+.15sin(2t), v0=.3,a0=-4. q/v/a scale는 sqrt(1+.15²), 그 2배/4배 외력 0에서도 Newton scale 유효, turning points, alpha 부호·physical a와 A 구별. Constant-M 표준 HHT 독립 recurrence와 q/v의 scaled 차이도 <=1e-12
C02 m=2,k=8,F(t≥0+)=2, q0=v0=0,a0=1, 정확해 q=.25(1-cos 2t),v=.5sin 2t,a=cos 2t. Scale .5,.5,1 STEP 전값·초기 acceleration·old force, 최초 increment부터 모두 측정. 의도적으로 F0=0/a0=0/RAMP로 바꾼 mutation이 oracle에 실패해야 함
C03 T=.5(1+q²)v², c=qv², q=.4+sin t, F=(1+q²)(-sin t)+q cos²t, q0=.4,v0=1,a0=0. q/v/a scale 각각 1 Variable-M와 convective term, naive force-weighted M(q) 확대의 1차 반례. 올바른 candidate는 N7; naive 구현은 p<1.5의 negative evidence를 별도 기록하며 합격 구현으로 채택하지 않음
C04a q=(x,z), M=diag(2,0), U=.5*8*x²+.5*3*(z-.7x)², F=(2,0). q0=v0=0, a0=(1,.7), A0=a0; x=.25(1-cos2t), z=.7x. Vector q/v/a scales는 sqrt(1+.7²)*(.5,.5,1) Coupled zero-mass acceleration, full 2×2 solve와 exact algebraic reduction을 1e-10 대조. Pseudoinverse의 a_z=0는 초기 hidden-constraint 검사에 실패. κ=0, negative positive-mass m, inconsistent z0=.1은 각각 regularity/positive-mass/initial-consistency 실패
C04b `y(q)=q/ q

C04b는 position constraint max|r-1|<=1e-10. max|q·v|, max|q·a+v²|의 마지막 두 refinement는 각각 감소해야 하며 finest에서 각각 <=1e-6, <=1e-4다. 이 raw threshold는 무차원 unit-circle oracle의 조건이며 실제 shell에 그대로 적용하지 않는다. 같은 수치를 Newton 초기 consistency tolerance로 사용하지 않는다. Correct full-coordinate 해와 기존 angle-reduced 해는 같은 grid에서 q/v/a의 scaled 차이 <=1e-8여야 한다. 미세 h에서 cancellation이 차이를 지배하면 N7 inconclusive 규칙으로 처리한다.

C05. 질량·null·조건수와 단위

기본 element는 X=(-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0), d0=(0,0,1), t=.2,E=1000,nu=.3,rho=1. Analytic rectangle C0는 rho*t*area/36에 [4,2,1,2] cyclic matrix, C1=0, C2=t² C0/12; lumped (m,s,j)=(rho*t*area/4,0,rho*t³*area/48)다. Consistent rank20, lumped node rank5, total4 analytic drill null과 physical rigid field의 positive kinetic energy를 각각 검사한다.

추가 fixture는 node3 z=.1인 warped quad이며 initial director는 기존 deterministic geometry 규칙으로 생성한다. 3³ 적분과 독립 5³ Gauss moment/kinetic integral을 N4로 대조한다. Density 배율 1e-180,1e180에서 scalar mass positivity는 overflow 없는 variance 식으로 같은 verdict여야 한다. 이 extreme density fixture에서 필요하지 않은 stiffness/mass time solve를 실행해 unrelated overflow를 요구하지 않는다.

현재 phi_i=(.2,-.3,.1) 및 node별 phi_i=(.05i,-.03i,.02i), i=1..4에서도 Jl^-1 d null을 확인한다. 동역학 질량의 기존 초기 M 고정 mutation과 fixed global UR3 deletion mutation을 검출한다. Partial-BC oracle는 한 node의 physical tangent에 대한 free scalar direction의 positive mass가 p²에 비례하도록 p=0,1/2000,1e-8을 구성한다. p=0은 exact null, p≠0은 positive dimension을 유지한다; conditioning guard 미달이면 positive mass conditioning failure이며 null로 분류하지 않는다. 이 scalar-only projected block의 rcond=1이라는 점도 확인하고, 작은 mass를 이웃 positive DOF와 함께 둔 mixed block의 conditioning과 구분한다.

독립 guard boundary는 scaled SPD diag(1,c) 및 algebraic diag(1,c)의 c=2^-31,2^-32,2^-33: 첫 둘 통과·마지막 conditioning 실패다. c=0은 singular failure로 구별한다. Regularity/positive mass 두 기준은 각각 실행한다.

단위변환은 numeric multipliers c_L=1e-3,c_M=1e-6,c_T=1e2: X/u/t→c_L, h/time→c_T, density→c_M/c_L³, E→c_M/(c_Lc_T²), force→c_Mc_L/c_T², moment→c_M*c_L²/c_T²를 적용한다. v/a의 시간·길이 배율도 변환하고 동일 physical predicate·normalized metric을 N4/N6로 비교한다. Unit change로 rank/conditioning 분류를 바꾸지 않는다.

C06. D3·관성·접선 독립 미분

C05 기본/warped geometry와 phi=(0,0,0), (1e-6,-2e-6,3e-6), (.2,-.3,.4)를 사용한다. Small-angle boundary에는 phi=(1e-4*(1±2^-10),0,0)를 추가한다. Direction은 e1/e2/e3, (1,2,-1)/sqrt6; 모든 distinct triple permutation과 pure/mixed actions를 포함한다. 영점 D3 oracle는 추가 연구 N6의 sum_permutation H_p H_s H_r d0 / 6, 비영점은 독립 24×24 block exponential의 high-precision evaluation을 사용한다. Production의 같은 Jl scalar derivative를 oracle에 재사용하지 않는다.

Element state는 u_i=.01*(i,-i,.5i), phi_i=(.05i,-.03i,.02i), v_ui=(.1,.05i,-.03i), v_phi_i=(.2,-.1i,.04i), a_ui=(.3,-.2,.1i), a_phi_i=(-.07i,.06,.05)다. q/v/a 중 하나씩 perturb한 DqI/DvI/DaI와 같은 q에서 종속 rate를 갱신한 Keff를 서로 다른 검사로 실행한다. Keff에는 h=.1,.025 두 값과 N5의 고정 sweep을 쓴다.

필수 mutation: D(Hᵀ)항, D3, convective c, DvI 각각을 하나씩 누락하면 적어도 한 nonzero-direction oracle가 실패해야 한다. Correct derivative의 N5 pass와 이 detection evidence를 함께 기록한다. 이 미분 실험은 stability·시간 정확도 검증을 대체하지 않는다.

C07. 선형 에너지·소산·관성 반력

m=1,k=4,q0=1,v0=0,a0=-4에서 alpha=0, beta=.25,gamma=.5, h=1/64,T=10의 energy maximum defect / E0는 <=1e-10. 같은 문제의 기본 alpha에서는 에너지·위상·진폭 오차를 보고하고 exact conservation을 요구하지 않는다.

독립 3×3 amplification matrix를 q/v/A recurrence로 만들고 omega*h={.01,.1,1,10,100,1000}에서 spectral radius를 확인한다: alpha=0의 physical pair modulus는 1±1e-10, 기본 alpha의 radius는 <=1+1e-10. High-frequency limit rho_infinity=(1+alpha)/(1-alpha)는 analytical limit로 대조하고 omega*h=1000 값을 limit exact equality로 강제하지 않는다. Consistent initial physical a를 설정해 숨은 parasitic 초기 mode를 구별한다.

반력 oracle는 M=[[2,.5],[.5,1]], K=diag(8,3), q2=v2=a2=A2=0, F=(2,0)에서 C02와 같은 x(t)를 사용한다. Physical support reaction R2=.5*a1이고 algorithmic constrained residual과 다르다. Endpoint M a+Kq-F의 physical reaction 및 momentum balance를 N2/N6로 검사한다. 이 mass coupling은 constrained acceleration=0이어도 inertial reaction이 생김을 검증한다.

C08. 실제 shell 유한회전·자유운동·에너지

C08a manufactured rigid orbit: C05 기본 1 element와 동일 물성으로, phi(t)=(.4sin t,.6sin(.7t),.2sin(1.3t)), 모든 node에 R=exp(phi×), u_i=(R-I)X_i, d_i=R d0_i를 준다. T=1,h=1/16,1/32,1/64,1/128,1/256,1/512,1/1024; 원 16–256 결과와 실패를 보존하고 HHT-ADR-015에 따라 512/1024를 최종 grid로 추가한다. q/v/a 초기값은 해당 analytic curve와 독립 exponential derivative로 구한다. max|phi|>0.5 rad를 실제 관측하여 small-rotation만 통과한 사례로 대체되지 않도록 한다.

제조된 generalized force는 선택된 nodal lumped mass의 독립 volume oracle에서 F_i=∫rho N_i H_i^T xddot_i dV0로 생성한다. Objective internal/drill force는 rigid orbit에서 0이어야 한다. Production I를 다시 호출해 F를 만드는 자기검증을 금지한다. Time-dependent generalized forcing과 nonzero initial rates는 내부 verification fixture이며 공개 CLOAD/초기조건 지원을 뜻하지 않는다. 실제 full q/v/physical-a 전체 이력에서 finest normalized error <=1e-4, 마지막 두 refinement 차수 >=1.8, 최종 세 grid의 N7 factor100 separation을 요구한다. Moment/power와 analytic drill null을 검증한다. C08a hidden1/2는 strict 감소 대신 모든 frame의 |ψk_i|/Sk_i <=1e-10을 요구한다(HHT-ADR-015). 원 uncancelled scale을 유지하고 scale0이면 raw defect exact0이어야 하며 floor·clamp·projection을 쓰지 않는다. Raw defect·scale·normalized 최대값을 기록한다.

C08b free deformable plate: [−1,1]²의 2×2 정사각 mesh(9 nodes/4 elements), C05 물성, 모든 DOF free, F=0, q0=0. 초기 midsurface velocity는 V+Omega×X+(0,0,.02 X_x X_y), V=(.125,-.25,.0625), Omega=(.8,.6,.4)다. 초기 physical director rate는 Omega×d0; 남은 null velocity는 ψ_x w=0으로 결정한다. a0는 physical equation과 초기 2차 ψ 조건으로 구한다. Arbitrary null velocity/acceleration=0을 넣지 않는다.

T=.25, h=1/64,1/128,1/256,1/512,1/1024의 기존 결과를 보존한다. 2026-10-12 HHT-ADR-014의 사용자 승인으로 h=1/32768,1/65536,1/131072를 최종 시간수렴 판정에 추가한다. 모든 grid에서 principal/swing/geometry branch를 만족해야 한다. 최종 최대 회전이 0.2 rad 이상인지 기록한다; 미달이면 이 fixture의 finite-rotation coverage가 부족한 것이며 값을 바꾸어 통과를 만드는 대신 별도 보강 설계를 검토한다.

공통 coarse time points에서 d_h=max||q_h-q_h2||와 v/a 차이를 각각 측정한다. Translation scale ell, rotation 1 rad, v/a는 각 scale/T, scale/T²를 사용한다. 마지막 두 self-convergence ratios의 log2(d_h/d_h2)>=1.8, finest normalized difference <=1e-4, N7 noise separation을 요구한다. 이것은 self-convergence이며 정확해 error bound라고 표시하지 않는다. 각 frame의 N2/N4/N6 평형도 필수다.

F=0의 positive E0에 대해 e_E(h)=max|T+U_phys+U_drill-E0|/E0를 기록한다. 마지막 두 refinement에서 감소, 마지막 ratio e_E(h/2)/e_E(h)<=.6, finest e_E<=1e-3를 요구한다. Momentum은 P0/L0 및 변화가 존재하는 각 quantity의 자연적인 초기 integrand norm 합으로 정규화한다. L에는 같은 감소/finest 1e-3를 요구한다. Flat centered all-free fixture의 P에는 finest absolute <=1e-3와 원 balance/HHT update consistency를 요구하고 strict 감소는 요구하지 않는다(HHT-ADR-014). Reduced-coordinate 적분에서는 실제 복구된 full rates와 해당 update로 보존·balance를 독립 확인하며 기존 full-coordinate velocity recurrence를 자동 적용하지 않는다. 초기 합 scale=0인 component는 scalar component floor 대신 vector integral의 sum-of-norm scale를 쓴다. 매 frame energy 단조감소·exact nonlinear momentum 보존은 요구하지 않는다.

문헌 free-flying plate는 추가 연구 N7의 case-family 근거일 뿐이다. 위 C08은 FESA의 별도 완전 지정 synthetic fixture이며 미열람 문헌 그림의 하중·곡선을 재현한다고 주장하지 않는다.

C09–C12. 경계·실패·결정론·reference

ID 반드시 반증할 동작 판정
C09 All-fixed 유효 모델, free force channel만/rotation channel만, 정확 무하중 q=v=a=A=0, 무하중 uniform translation Empty solve/empty channel 정상 처리; nonempty zero-scale branch exact zero; rigid translation은 T/P 보존·internal/drill0 N6. 모든 항0 분모를1로바꾸는 mutation검출
C10 NaN/Inf, invalid density/thickness/J, principal/swing branch, near-singular positive block, algebraic rank loss, Newton100 종료 각각 최초 해당 predicate에서 실패. 허용 끝점100과101금지, fixed dt failure/no retry, epsilon mass/diagonal shift/삭제없는실패. Valid 원상태에 invalid trial을 주입하여 committed q/v/a/A/history/frame/output 보존
C11 동일 input 3회; stable element/thread partition 변화; proper global rotation Q=R_z(.7)R_x(.4)로 geometry부터재조립 N7 결정론 및 N6 covariance. 회전된 BC/loads가 같은 물리공간인지 확인; schema identity와 값 norm을 따로 검사
C12 원본 101 frames×9 nodes 전부, initial exact-zero U/UR, reordered CSV, missing/extra/duplicate/nonfinite/wrongtime mutation reference-model·공통 tolerance. UR warning도 precheck오류는blocking. Urow5%/RMS1%, nearzero1%, S0exactzero 경계 포함. HDF5→debugCSV는공식출력대체불가

최종 기능 acceptance에는 채택 mass의 위 필수 사례와 C12, 구성된 build/CTest가 필요하다. 이번 Numerical 문서 gate에서는 solver/build/CTest/Abaqus/reference를 실행하지 않는다. Fixture 구현 중 upstream 수식·지원 범위를 바꿔야 하는 발견은 formulation/main에 돌리고 문서의 tolerance를 결과에 맞추어 바꾸지 않는다.