Files

16 KiB
Raw Permalink Blame History

HHT implicit dynamics

범위와 현재 상태

2026-10-20 현재 drilling 기본값은 gamma_i=d_i0·phi_i의 직접 작은 스프링이며 기존 상대 비틀림도 모델 전체의 코드 설정으로 선택한다. 직접 경로는 drilling용 polar/swing/twist를 생략하고 physical 회전·관성·고정 null 기저·시간적분은 유지한다. 직접 hidden scalar는 실제 cubic 관성이 계산한 normalized null n_i(phi)에 대해 sum_e kd*gamma_ei*(n_i·d_i0)-n_i·Fext_rot다. 그 같은 식의 gradient·Hessian· 필요한 3차 방향미분을 사용한다. 초기 director를 현재 null로 고정하지 않는다.

현재 source 6bbbb2b를 전체 실행한 Debug Native/CTest는 각각1035개 중 1024 PASS·기존10 FAIL·1 INCONCLUSIVE SKIP이며 별도 Python164개는 PASS다. 정식729node·101frame Direct Release 해석과 외부9node U의101 families 비교는 CLI0/비교0, 최대 정규화 RMS0.2282326248391787%로 통과했고 UR 경고200개를 유지했다. 기존 방식은 별도 Debug의 관련 검사와 실제 소형3frame HHT 출력을 확인했다. 729node 기존 방식의 외부 U 재해석은 이번에 하지 않았다. 과거 결과를 현재 PASS로 승계하지 않는다. 기존10개 물리 실패·N7 미판정·정식 자료 누락이 남으므로 전체 검증 완료는 아니다. 아래 2026-10-19 수용 기록은 이전 수렴 실험의 결정이며 현재 전체 PASS를 뜻하지 않는다.

2026-10-19 후속 사용자 승인으로 이번 수렴 규칙 실험은 Abaqus 변위 검증 통과·실패10개 보류로 조건부 완료한다. 수용 범위를 따르며, 아래 미해결 물리 검사· N7와 실제 FAIL/SKIP은 보존한다. 전체 상태729절점·101프레임 진단과 관측 시간 비교는 최종 결과에 있다. 공식 speedup은 미확정이다.

2026-10-18 후속 사용자 지시로 polar 반복 12→1회, 관성 회전/Jacobian 급수 32→3차, 질량 대칭·null/Gram·분해 복원 검사 1e-12→1e-3의 local 근사 실험을 적용했다. 최초 엄격한 기준의 관련 요소 46개 중 5개가 실패했다. 후속 사용자 지시로 관성·접선· HHT 물리 테스트의 오차 기준을 1e-3으로 완화했다. 이후 Abaqus2025 공개 field 규칙을 양의 증분의 실제 종료에 연결하고 accepted 평균 이력·hht-log-v2를 구현했다. 2026-10-19 Native Debug/CTest 전체는 각각998개 중987 PASS·10 FAIL·1 SKIP이다. 새 정책의 실제 조기 종료·rollback·강체 병진 oracle는 통과했으나 D3·drilling·C08와 후속 mass-null/triad 검사가 실패한다. 실제 비선형 후보 시간 정확도는 미검증이다. 아래 정식화의 유한회전 항등식과 과거 검증을 이 근사본의 통과로 승계하지 않는다. 변경 범위와 실제 검증 한계는 실험 기록을 따른다.

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의 결과다. 2026-10-19 같은 승인 local 근사본의 strict 원본을 6350.7895521초/native0으로 완료했고 정식 U 비교는 통과했다. T6/T7에서는 수치 실패로 field 후보100증분을 실행하지 않았다. 후속 사용자 요청으로 Release 후보 원본을 5662.144854초/native0으로 완료했고9-node/101-frame U 비교는 PASS다(최대 정규화 RMS0.22824245%). 변위 비교 보고서에 빌드·시간·coverage를 기록했다. 비선형 시간수렴·전체 물리 판정과 공식 speedup은 미성립이다. 전체 회귀는 위 수치대로 실제 실행했으며 전체 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다. 기존 schema2 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
global/drilling_moment, global/equilibrium_with_drilling [3] 내부 spatial drilling moment, [6] raw force와 raw moment에서 drilling moment를 차감한 진단; frame0 포함

새 MITC4 출력에는 실제 방식의 UTF-8 mitc4_drilling_formulation과 U64LE drilling_diagnostics_version=1을 metadata에 추가한다. 기존 schema2와 raw equilibrium은 유지한다. 직접 방식의 기존 전역 gate만 보정 moment를 사용하고 기존 방식은 raw 판정이다. Marker 없는 옛 결과는 방식 미상이며 새 진단을 추정하지 않는다. 변위 비교기는 새 진단의 모든 frame을 사전검사하지만 새 평형 수치 family나 verdict를 만들지 않는다.

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는 실행 중 메모리에 있어 강제 종료 로그만으로 복구되지 않는다. Field 평균 후보는 반복마다 재계산하고 accepted 증분에서 한 번 갱신한다. State의 staged copy에서 commit을 검증하고 로그 flush 성공 뒤 state·private/flux history를 공개한다. 누적 frame 이력 복사 비용이 있으며 공식 후보 elapsed에 포함할 대상이다.

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

현재 양의 증분은 abaqus2025-field-on-fesa-v1로 종료한다. 힘/모멘트 flux 평균과 full endpoint u/total-φ의 실제 보정·증분을 사용하며 normal/zero-flux/linear/nonquadratic과 추정 보정을 구분한다. 기존 N2 full force/moment·q/v/a/A의1e-10은 strict 진단이다. PrivateCorrectionEqual과 회전 전용 보정의 기존 strict 선택 자격은 유지했다. Frame0·후속 hidden/rank/regularity·전역 평형1e-8도 별도 gate다. 실제 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을 요구한다. 이번 승인 근사 실험의 관련 테스트 오차는1e-3이다. 기존 strict algebra의 finest1e-4 검사도 그대로 통과했지만 실제 비선형 후보의 refinement·finest 오차 판정은 미완료다. 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·현재 field 후보의 비선형 시간 정확도·전체 물리 closure가 남는다. 전체 회귀의 실제 실패와 해상도 SKIP을 과거 통과로 덮지 않는다.

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

원본 현재 해석
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 및 병합 선별 검사의 범위·근거는 통합 현황을 따른다. 이 실행 범위 변경은 정식화·허용치·시간수렴 요구 자체의 변경이 아니다.