Files
FESADev/docs/hht-implicit-dynamics/README.md
T

12 KiB
Raw Blame History

HHT implicit dynamics

범위와 현재 상태

2026-10-18 후속 사용자 지시로 polar 반복 12→1회, 관성 회전/Jacobian 급수 32→3차, 질량 대칭·null/Gram·분해 복원 검사 1e-12→1e-3의 local 근사 실험을 적용했다. 최초 엄격한 기준의 관련 요소 46개 중 5개가 실패했다. 후속 사용자 지시로 관성·접선· HHT 물리 테스트의 오차 기준을 1e-3으로 완화했으며 최신 선택 50개는 두 빌드 경로에서 46 PASS·4 FAIL이다. 실제 해석 루틴의 수렴 조건은 이번 테스트 수정으로 바뀌지 않았다. 아래 정식화의 유한회전 항등식과 과거 검증을 이 근사본의 통과로 승계하지 않는다. 변경 범위와 실제 검증 한계는 실험 기록을 따른다.

MITC4 shell의 유한회전 기하비선형 동해석이다. S4/S4R은 FESA-MITC4로 해석하며 외부 solver 내부 알고리즘과의 동등성을 뜻하지 않는다. 현재 채택 경로는 nodal-lumped-kinetic 질량, reduced-coordinate HHT, 초기 null의 고정 직교 보완기저, shell schema v2다. 과거 consistent 질량·full-coordinate v1 근거를 변경본 통과로 승계하지 않는다.

2026-10-13 기록에서 ADR-018의 실제 C09와 공식 Release C08a 7-grid는 통과했다. 당시 전체 Debug는 856개 중 44개 PASS 후 사용자 중단됐고 Release C08b도 중단됐다. 당시 원본 Release 해석은 증분99·t=9.9까지 accepted 로그만 남아 HDF5 비교가 불가능했다. 사용자 중단 exit -1은 수치 FAIL이나 PASS가 아니다. 이후 2026-10-14 성능 baseline은 원본을6372.325621초/native0으로 완료하고 schema v2·729nodes/101frames를 확인했다. 9-node U blocking 비교는 PASS(최대 relative RMS .0022824245), UR은 경고200건이었다. 이는 baseline source의 결과다. 최신 최적화 source의 새 원본 비교·C08b·전체 회귀·독립 전체 물리 판정은 남아 있으며 전체 green이 아니다. 성능 요약을 함께 본다.

채택 방법과 산술 의미

현재 물리·관성은 관성 상세, 시간적분·graph는 축소 좌표, plane basis·scaling은 고정 null 기저를 순서대로 읽는다. 기본 정식화의 full-coordinate recurrence는 비교 이력이다. 초기 null과 실제 free 공간의 교집합에서 고정 sparse 열 Lp/Lz를 만들고 coupled graph root를 풀어 full q=Q(p,t)를 재구성한다. v와 physical a는 Q의 chain rule로 복원한다. 부분 회전구속을 full clamp로 바꾸거나 모든 node에 동일 reduced 차원을 강제하지 않는다. Fixed patch 밖에서 검증된 history transport가 없으면 실패한다.

HHT 계수는 alpha=-.05,beta=.275625,gamma=.55다. Private p/vp/ap/Ar가 적분 이력이며 Ar_n=(1+alpha)ap_n-alpha*ap_(n-1)다. 공개 full A_n=(1+alpha)a_n-alpha*a_(n-1)는 full-chart 진단용 filter combination이고 full q/v의 predictor driver가 아니다. Frame0은 q0=v0=0,A0=a0이며 full 초기평형·hidden consistency를 만족해야 한다. 공개 A 또는 Qp*Ar로 private history나 restart를 구성할 수 없다.

관성력 I=M(q)a+c(q,v), 접선, 에너지·운동량은 같은 nodal kinetic measure에서 계산한다. Lumped는 회전 block의 scalar diagonal 치환이 아니다. Epsilon inertia로 null을 없애지 않는다. Primitive hidden-gradient authority, tiny director increment와 coefficient-first inertia contraction은 큰 병진과 작은 회전의 소실을 줄이는 구현이다. Force·tangent·recovery는 같은 state/energy를 사용한다. Carried-A 산술은 noise indicator의 범위를, 가속도 복구 후보는 미채택 후보의 과거 연구를 설명한다.

입력·출력·reference 계약

Single Part/identity Instance, homogeneous centered shell, 상수 isotropic elastic material과 양의 DENSITY, NLGEOM=YES인 단일 *DYNAMIC, DIRECT를 지원한다. INC 기본값은100이며 양의 uint32 증분 상한이다. h<=T이고 double(N)h==T, N<=INC를 요구한다. h/T/INC는 정수 증분 수와 binary64 nh의 exact schedule로 검증한다. 영 BC·영 초기 q/v·일정 global 병진 CLOAD만 허용한다. 사용자 계수, adaptive/explicit, amplitude/follower/분포하중, 회전 CLOAD, 비영/시간변화 BC, 비영 초기조건, restart는 제외한다. 허용된 *RESTART, WRITE, FREQUENCY=0은 warning no-op이다. CLI·lease·공통 identity/비교 정책은 solver 공통 요약을 따른다.

Schema identity는 (hht-implicit-dynamics,hht-implicit-dynamics,2)다. /metadata::time_integration_formulation은 reduced-coordinate-HHT-with-physical-rate-reconstruction, mass_formulation=nodal-lumped-kinetic, acceleration_convention=physical-endpoint-and-auxiliary-separated다. 모든 result dataset version도 2이며 A의 quantity_semantics는 full-chart-HHT-filter-combination-not-predictor-driver다. 잘못된 marker·혼합 version·mass· inventory·nonfinite는 dynamic-output-schema 실패다. Historical v1 reader branch는 과거 full-coordinate 결과만 읽으며 marker를 보충하거나 v2로 재표시하지 않는다.

각 /steps/Step-1/frames/<n>의 주요 F64 little-endian 결과는 다음과 같다.

상대 경로 Shape와 의미
nodal/displacement, velocity, acceleration, algorithmic_acceleration [N,6]; translation/global total rotation-vector chart의 q/v/physical a/public A
nodal/angular_velocity, angular_acceleration [N,3]; Jlphidot 및 Jlphiddot+DJl[phidot]phidot
nodal/triad, director [N,3,3], [N,3]
nodal/generalized_inertia_force, generalized_internal_force, generalized_external_force, generalized_residual, generalized_reaction [N,6]; residual=I+f-F, generalized reaction=constrained projection
nodal/reaction [N,6]; support-on-structure spatial RF/RM, moment는 Jl^-T 변환
element/shell/local_frame, generalized_strain, section_resultant, stress [E,4,3,3], [E,4,8], [E,4,8], [E,4,3,3]; stress는 bottom/middle/top × S11/S22/S12
global/energy, global/equilibrium [5] kinetic/physical/drill/work/defect, [6] 관성 포함 force/moment balance

Row는 model source inventory와 결합한다. Generalized moment와 spatial moment, physical a와 A, drilling force와 physical stress를 혼합하지 않는다. 영 BC는 q/v/a/A exact zero다. 일정 외력의 work는 F*^T(qn-q0), defect는 T+Uphysical+Udrill-E0-W다. Momentum·hidden 진단 전체가 HDF5 필수 dataset인 것은 아니다.

Reference는 reference/shellNL-dyn-meshfine의 INP와 displacements CSV다. 전체729-node/ 101-frame identity·finite를 먼저 확인한 뒤 고정9-node subset으로 투영한다. Instance/node/ Step-1/increment0..100으로 join하며 CSV decimal n/10과 binary double(n)*double(.1)을 각각 검증한다. U는 displacement 앞3성분, UR은 뒤3성분이다. Frame별27 scalars의 U blocking· UR warning-only 총202 families다. S=max|reference|, near-zero band/error limit .01S, 일반 상대오차 .05, family RMS/S .01, S=0 exact-zero다. Warning-only여도 schema/identity/ nonfinite 오류는 blocking이다. CSV에는 V/a/A/energy가 없어 변위 일치로 이들을 검증할 수 없다.

코드 흐름과 수명

HhtDynamicProcedureExecutor::Execute는 ExecuteReducedHht로 연결된다. FixedChart/FixedBasisColumn과 BuildFixedChart·SolveEmbeddingRoot·rate/augmented operators는 analysis-private다. Sparse support가 projection/lift authority이며 DOF label만으로 단일 성분 injection을 가정하지 않는다. Domain은 non-owning AnalysisModel보다 오래 살아야 하고 호출자 소유 solver/parallel adapter는 Execute 동안 유효해야 한다.

Private chart/history와 DynamicAnalysisState의 full accepted frame은 같은 acceptance 뒤 commit한다. Full residual·recovery·finite·constraint 검증 전에 일부 이력을 commit하지 않는다. DynamicHdf5ResultsWriter는 완결 이력을 write/close/reopen/self-check한 뒤 final을 교체한다. 실패 candidate는 기존 final을 보존한다. Accepted history는 실행 중 메모리에 있어 강제 종료 로그만으로 복구되지 않는다.

검증 기준·교훈·남은 한계

N2 full force/moment·q/v/a/A correction은 채널별 1e-10, 실제 scaled solve backward error는 1e-12다. N3 update는 상쇄 전 same-unit scale의 1e-12와 exact-zero branch를 유지한다. Pair increment의 exact expansion 검사와 RN-even 저장 검사는 별도다. Hidden 위치 조건·rank/ regularity를 유지하되 hidden rate 진단을 임의 Newton gate로 바꾸지 않는다. 일반 dynamic operator에 대칭성을 강제하지 않는다. 일반 nonlinear HHT energy에 매 frame 보존·감소를 요구하거나 numerical dissipation을 physical damping으로 기록하지 않는다.

시간 검증은 q/v/physical a의 마지막 두 refinement 감소·차수 >=1.8 및 finest normalized error <=1e-4를 요구한다. N7 read-only linear/nonlinear defect solves와 arithmetic indicator는 100배 separation을 확인하며 state polishing이 아니다. 원본의 성긴 dt/T1≈7.4567에서 변위 일치와 시간 정확도를 구분한다.

과거 전체617의 HHT2 FAIL/1 SKIP, lumped 전체789의784 PASS/4 FAIL/1 SKIP, 후속802의 799 PASS/2 FAIL/1 SKIP은 각 당시 source 이력이다. 초기 C08b runtime 예외는 두 시작점 정책으로 해소됐고 후속 C09/C08a7 통과와 구분한다. 최신 Debug h=1/64 완료 요약의 이전 Release 일치는 전체 raw state bitwise나 전체 시간수렴 증거가 아니다. 원본 accepted residual 최대 병진1.889238010e-15·회전1.452384011e-15도 Abaqus 변위 오차가 아니다. C08b finer-grid·최신 최적화 source의 원본 HDF5 비교·전체 회귀·전체 물리 closure가 남는다.

보존한 과거 수식과 연구의 위치

원본 현재 해석
2026-10-04 본식, 관성 원본 당시 consistent 정책의 수식·검토 이력이다. 현재 lumped/reduced/fixed-null 정책이 우선한다.
C08b Newton 연구, DAE 연구 원인·후보 조사이며 모든 Newton/DAE 후보의 채택을 뜻하지 않는다.
운동량 연구, graph certificate 초안 불변량·controller/certificate 연구의 원본이다. 현재 acceptance나 엄밀한 전역 오차 보증을 자동 대체하지 않는다.

통합된 실행 경계

공통 AnalysisProcedure 선택 뒤 reduced 절차를 실행한다. ShellHhtIntegrator는 predictor/rate 복원을, EquilibriumStep은0부터 시작하는 correction과 typed pending을 분리한다. History는 procedure가 소유하고 동일 acceptance 뒤 commit한다.

2026-10-18 사용자가 장시간 HHT 검증을 중단하고 정적해석만 검증해 다음 단계로 진행하도록 변경했다. Native 전체 실행의 부분 stdout·기존 결과와 비정적 테스트는 보존했다. 당시 interrupted run·finest binary64 noise의 미판정은 현재 HHT 전체 PASS나 수치 FAIL로 승계하지 않았다. 완료된 개별 검사와 중단된 C08b 및 병합 선별 검사의 범위·근거는 통합 현황을 따른다. 이 실행 범위 변경은 정식화·허용치·시간수렴 요구 자체의 변경이 아니다.