Files
FESADev/docs/hex8-structural-analysis/numeric-controls.md
T

5.7 KiB
Raw Blame History

Hex8 numeric controls

행동/외부 acceptance 원본은 PRD, 식은 formulation이다. 여기의 내부 tuning default는 독립 numerical review와 영향 재검증을 기록해 조정할 수 있다. 외부 common-reference-tolerance 및 승인 physics/schema는 변경하지 않는다.

계산·형상 인증

모든 input/파생 값/결과를 finite 검증하고 positive Jacobian·밀도·material capability를 확인한다. Production 계산 precision은 Float64다. Whole-cell 인증은 outward interval coefficient bounds와 subdivision이며 estimate-only positive 검사와 abs(det J)를 허용하지 않는다. Depth default10, 처리한 cell budget default65536이며 uncertain 시 fail-closed다. 이 값은 resource/precision tuning이고 accepted geometry의 positive 조건을 완화하는 tolerance가 아니다. 현재 Xa+ua를 인증할 때 addition uncertainty도 포함한다. Failed trial은 immutable cache를 보존한다.

정적 Newton

Force residual numerator는 free residual infinity norm이다. 기존 nonlinear_static_control.cpp::EvaluateResidualChannel과 같이 free external infinity norm이 exact0이면 denominator=0의 absolute branch를 선택한다. External이 nonzero이면 같은 trial의 free internal/external infinity norm maximum을 relative denominator로 사용한다. Translation correction numerator는 fresh free correction infinity norm, scale은 현재 증분의 free translation increment infinity norm이다. 기존 force/translation norm·branch 의미를 유지한다. 순수 prescribed 변위 문제에서 fint_free 자체를 denominator로 사용해 residual ratio가 항상1이 되게 만들지 않는다. Nonfinite/크기 불일치는 branch와 관계없이 실패다. Relative branch limit1e-2, exact-zero scale branch absolute1e-3의 force 또는 length 단위다. Max iteration100/increment가 default다. Moment/rotation dummy channel은 없다. Raw norms·branch·threshold unit·iteration·passed를 기록한다. 수렴은 recovery/geometry까지 검증한 candidate에만 적용하며 normalized residual만 수정해 accept하지 않는다.

동적 Newton와 update

Residual은 physical free endpoint에서 평가한다. Componentwise uncancelled scale Si=|(Ma)i|+|finti|+|Fi|, normalized metric은 max_i(|ri|/Si)다. Si=0은 ri=0을 요구하며 그 외의 zero branch는 failure다. Internal cancellation으로 작은 residual이 나온 것만 평가하지 않는다. Weighted residual을 사용할 때도 physical endpoint와 동일한 scale/판정을 함께 기록한다.

L은 reference nodal bounding-box 대각 길이로 finite positive다. Correction u/L, h·dv/L, h²·da/L, h²·dA/L를 모두 확인한다. Residual/correction limit1e-10, update equality1e-12, max iteration100이 default다. Update scale은 동일 단위의 uncancelled formula term 합이며 scale0은 exact-zero다. 빈 free vector는 vacuous convergence이며 required prescribed/recovery validation은 유지한다.

Eigen 검증과 분류

Vector norm은 Euclidean, matrix norm은 Frobenius로 original free pencil을 평가한다. eta_r=||Kphi−lambda Mphi||/((||K||F+|lambda|||M||F)||phi||2), eta_norm=|phiᵀMphi−1|, eta_energy=|phiᵀKphi−lambda phiᵀMphi|/((||K||F+|lambda|||M||F)||phi||2²)다. Zero denominator는 numerator exact0이면0, 아니면 failure다. All returned-pair limits는1e-10. eta_gram은 ||PhiᵀM Phi−I||F, max_eta_orth는 normalized off-diagonal maximum이고 limit1e-10다.

분류 scale=max_i |Kii|/Mii는 finite positive여야 하며 default normalized near-zero1e-9, 인접 cluster gap1e-8이다. 유의한 negative lambda는 실패한다. Near-zero negative는 원 값으로 남기고 frequency를 만들지 않는다. 이 분류 scale은 FEAST interval upper bound가 아니다. 실제 search/count·SPD/roundoff budget은 backend 연결에서 검증하며 최저 N 보장 근거를 기록한다.

독립 local/temporal 검사의 수치 기준

Zero 기대량에는 임의 absolute floor 대신 same-unit uncancelled term scale 또는 수식에 따른 strain/force/energy scale을 사용한다. Initial invariant budget은 double eps와 연산 길이·geometry condition 추정에 비례하는512 eps scale이다. Scale0은 exact-zero다. Conditioning 때문에 budget이 물리 결함을 가릴 정도로 커지면 검사를 통과시키지 않고 모델/검사 유효 범위를 보고한다.

Directional difference는 signed direction과 h sweep으로 truncation/roundoff 구간을 확인한다. 기본 목표는 유의한 nonzero oracle scale에 대해 gradient/tangent 최적 구간 relative1e-7 이하다. 한 h에서 가까운 값만 고르지 않고 예상 error curve·analytic affine 사례·zero-state linear limit를 함께 확인한다. 필요 budget 수정은 oracle conditioning과 independent review evidence로 설명한다.

HHT temporal case는 analytic/manufactured u/v/physical a를 각각 평가한다. Smooth forcing 구간의 기본 목표는 h/h2/h4에서 observed order1.8 이상이며 noise floor에 가까운 quantity는 다른 유의한 case/time/step 범위로 검사한다. Knot를 가로지른 비매끄러운 forcing을 smooth-order 증거로 쓰지 않는다. Spatial refinement·locking은 수렴 경향과 적용 한계의 검사이며 reference tolerance를 재정의하지 않는다.

원본 비교

Reference-only S/B, row5%, RMS1%, exact-zero는 common policy를 따른다. Identity/finite/completeness 오류를 tolerance로 처리하지 않는다. Stress point 좌표는 출력 precision에 따른 auxiliary convention 검사이며 ID matching은 element/IntPt다. Input/CSV raw SHA는 현재 working-tree byte 기준이며 Git LF blob과 Windows CRLF bytes를 혼동하지 않는다. 실제 읽은 원본 byte identity를 evidence에 남긴다.