13 KiB
구속된 lumped pencil, FEAST와 modal 복구
Feature mitc4-shell-feast-eigen2, formulation r1. 기본 보고서와
질량·stabilization의 기호를 사용한다.
Intel evidence는 research R04/G01/G02에 따른다.
E1. 실제 BC를 먼저 적용한다
K와 M=M_L은 같은 source scatter와 stable contribution/reduction 순서로 조립한다.
활성 shell 최대 edge 길이의 최댓값 ell>0 [L]을 사용하여
D=blockdiag_nodes(ell I3,I3), q=D y로 둔다. 이는 단위 정합 congruence다.
Khat=D^T K D [ML²/T²], Mhat=D^T M D [ML²]이다.
실제 global homogeneous component BC의 stable free injection C에서
[ y=C y_f,\quad K_f=C^TKhat C,\quad M_f=C^TMhat C. \tag{E1} ]
Constrained 행은 0이며 nonzero prescribed base state는 이 procedure에서 허용하지 않는다. Global UR3를 drilling으로 간주하거나 local 회전을 먼저 삭제한 뒤 BC를 적용하지 않는다.
Node i의 full analytic null은 z_i=[0;d_i]다. 이 방향이 실제 free space 안에 있을
필요충분조건은 모든 constrained rotational component에 대해 해당 d_i 성분이 정확히 0인
것이다. 그때만 Zi=Ci^T zi를 null basis로 둔다. 아니면 null dimension=0이다.
Translation BC는 이 조건에 영향을 주지 않는다. 작은 비영 director 성분을 0으로
분류하여 null을 늘리지 않는다. 거의 정렬된 partial BC의 작은 양의 mass도 보존한다.
Node free space에서 Zi의 직교 여공간 Pi^f를 고정 component 순서와 sign/tie로 구성한다. 세 회전 free에서는 기존 tangent a_i,b_i를 쓸 수 있고 null이 없으면 Pi^f=I다. 다른 경우도 작은 orthogonal basis construction으로 같은 공간을 만든다. 수치 고유값 cutoff로 physical rank를 결정하지 않는다. 전체 block basis P,Z에서
[ [P\ Z]^T[P\ Z]=I,\quad M_fZ=0,\quad M_p=P^TM_fP\succ0. \tag{E2} ]
Positive dimension n=cols(P), null dimension nz=cols(Z)이며 n+nz=nf다.
Node의 finite dimension이 0이어도 다른 node는 유지한다. Global n=0 또는 requested N>n은
고유쌍 요청 실패다. 정적 해석의 유효한 0×0 Kff와 이 count 요구를 혼동하지 않는다.
E2. 이 shell의 정확한 massless 제거
공통 nodal director와 M2의 분리 때문에 Tp z_i=0,
Khat z_i=kappa_i z_i, kappa_i=sum_{e incident i} kd,e>0다.
E1에서 null이 실제 free space에 있는 경우에만 다음이 성립한다.
[ K_fZ=Z\operatorname{diag}(\kappa_i),\quad K_{pz}=P^TK_fZ=0,\quad K_{zz}=\operatorname{diag}(\kappa_i)\succ0,\quad K_p=P^TK_fP. \tag{E3} ]
Massless equation은 Kzz z=0이므로 finite mode의 z=0이다. 따라서
Kp p=lambda Mp p는 개선된 실제 constrained K/M의 모든 finite spectrum을 보존한다.
Null이 없는 partial BC에는 numerical drilling stiffness가 Kp에 그대로 남는다.
이를 제거하면 다른 pencil이 된다. Roundoff 잔차의 작은 coupling을 임의로 무시하는
것이 아니라 analytic identity로 축소하고 원 조립행렬에서 identity와 full residual을 검증한다.
불일치·conditioning 실패를 추가 DOF 삭제로 수리하지 않는다.
일반 pencil에서는 Kzz 가역일 때
z=-Kzz^-1 Kzp p, Keff=Kpp-Kpz Kzz^-1 Kzp가 필요하다.
예: K=[[6,2],[2,4]],M=diag(2,0)의 finite eigenvalue는 5/2, z=-p/2이며
행만 삭제한 값 3은 틀리다. 이는 독립 검증 oracle이며 이번 shell production에
일반 dense Schur fallback을 추가하라는 계약이 아니다. Singular/nonpositive Kzz,
공통 K/M null, 추가 mass null은 지원 전제 위반으로 진단한다. Pseudoinverse·epsilon
mass/stiffness를 넣지 않는다. E3를 nonlinear Hessian이나 prestress 문제로 확장하지 않는다.
E3. 양의 nodal mass whitening
Mp는 node별 최대 6×6 SPD block이다. Mp=L L^T를 block Cholesky하면
[ A=L^{-1}K_pL^{-T},\quad p=L^{-T}x,\quad Ax=\lambda x, \qquad \phi=D C P L^{-T}x. \tag{E4} ]
Global dense inverse 없이 nodal triangular solve로 congruence한다. Node topology를
늘리지 않으며 기존 coupling마다 작은 dense block만 생긴다. phi^T M_L phi=x^Tx다.
FEAST에 (A,I)를 넘겨도 실제 physical mass는 M_L이고 unit physical mass로 바꾼 것이 아니다.
Global physical 6 DOF와 source identity를 복구하며 constrained 성분은 정확히 0이다.
Cholesky positivity·reconstruction·conditioning 검증 실패 시 mode 후보를 만들지 않는다.
E4. Lowest N과 FEAST의 유한 탐색
N은 입력의 positive integer count이며 reference는 현재 10이다. Reference Value/Freq는
scale·bracket·subspace·coefficient 선정에 사용하지 않는다. s=||A||inf [T^-2]에서
s>0이면 B=A/s다. A가 정확히 0일 때만 모델 scale
s=min_e E_e/(rho_e ell²)>0로 두어 B=0을 유지한다. 잘못된 scale을 1로 대체하지 않는다.
반환값은 lambda=s mu다.
ri=sum_{j!=i}|Bij|의 Gershgorin bound에 outward accumulation 또는 증명된
roundoff error bound를 포함하여 gL<=spectrum(B)<=gU를 만든다.
NR의 finite endpoint margin과 outward nextafter로 a0<gL<=gU<b0를 확보한다.
B=0에는 dimensionless outer bracket (-1,1)을 쓸 수 있다. 이는 eigenvalue clamp가 아니다.
Lower a0는 항상 유지한다. 독립 enclosure 자체가 a0보다 낮은 spectrum 부재의 근거다.
(a0,b0)에 성공한 count=n을 확인한다. 독립 enclosure와 total count가 불일치하면 유한 endpoint 재시도 후 실패다. 성공한(a0,b0,count=n)을 fallback으로 보존한다.- 선택적 upper-prefix subdivision은
(a0,v)만 count한다. 유효한 성공 count c>=N이면 safe upper=v, c<N이면 search lower=v로 이동한다. 마지막 safe interval을 보존한다. Count-only zero가 보장되지 않으므로 실패·미정 status를 0으로 바꾸지 않는다. - Count=0에 대한 인증된 성공을 얻지 못하거나 endpoint/midpoint·budget 한계에 이르면 최적화를 끝내고 마지막 safe interval, 최소한 total enclosing interval을 사용한다. 별도의 empty-prefix 탐색이나 lower-bound 축소를 필수 경로로 두지 않는다.
- 최종 interval의 성공 count c>=N을 재확인한다. Capacity는
c<=m0<=n이며 padding, 탐색 중단 목표 및 유한 횟수는 NR가 고정한다. c=n이면 m0=n이다. N번째가 반복 cluster 안이어도 cluster 일부를 강제로 잘라 count하지 않는다. - FEAST로 c개 전체 eigenpair를 계산·검증하고 lambda 오름차순 첫 N개를 선택한다. 같은 eigenvalue의 multiplicity를 평균·merge·deduplicate하지 않는다.
모든 count/solve·endpoint 재시도를 합친 유한 call budget을 NR가 고정한다. Safe bracket으로 fallback해도 workspace 부족이나 넓은 interval의 실패 가능성은 남는다. Allocation·integer range·미수렴·count 불일치에 bounded failure로 종료하며 다른 backend, 작은 N 또는 유효성 검사를 생략한 부분 결과로 성공하지 않는다. Endpoint 근접을 해결할 수 없으면 실패다. 최적화 실패를 성공 count evidence로 기록하지 않는다.
Count monotonicity·solve returned m=c·Gram rank c·모든 값의 interval 내부성과 endpoint 분리·모든 pair residual을 확인한다. Total enclosure, count, rank와 residual은 별도 evidence다. Floating-point FEAST를 모든 conditioning에서 완전성 theorem으로 확대하지 않는다. 알려진 zero/negative/repeated/clustered spectrum, n=1, N=n, endpoint 근접 및 설치 runtime probe가 필수 후속 연결점이다. Significant negative mode를 건너뛰어 양수 N개를 내지 않는다.
E5. Vendor call 경계와 재현성
실제 eigenpairs는 MKL dfeast_scsrgv의 real symmetric (B,I)로 계산한다.
Strict finite emin<emax, n>0, 0<m0<=n, SPD second matrix를 만족한다.
Upper triangle·1-based CSR에서 sorted unique indices, terminal nnz+1, finite values를 검증한다.
K와 identity의 pattern이 같을 필요는 없다. Vendor types와 workspace는 private backend다.
매 call마다 feastinit 후 명시 controls를 채운다. C-index fpm[49]=1은 CSR count를
m0로 반환하고 flag가 0으로 reset된다. Count output m0·solve requested m0·allocated capacity를
분리한다. CSR/SPD 검사를 켜고 subspace-only를 끈다.
MFE2-ADR-011의 사용자 승인으로
fpm[5]=0 residual stopping을 사용한다. 내부 목표 1e-12와 전체 c개 독립 residual
기준 1e-10을 유지하며 zero/mixed-zero mode에도 실제 backend 회귀를 수행한다. epsout은
|trace_i-trace_previous|/max(|emin|,|emax|)이며 eigenpair 상대오차가 아니다.
info=1은 certified empty count가 아니다. 넓은 interval의 isolated cluster를 놓친
상태일 수 있다. info=0,m0=0의 empty-count 성공이나 count-only 작은/null scratch
면제는 공식 문서가 보장하지 않는다. 이 설계는 보수적으로 count용 m0=n,
x[nn], e[n], res[n]을 준비하되 이를 vendor의 최소 workspace 의무라고 부르지 않는다.
Count scratch는 재사용·solve 전에 해제할 수 있다. O(n²) 비용, shifted sparse fill,
checked nm0/nnz/index 변환 및 실제 peak memory를 후속 구현에서 검증한다.
Fixed initial subspace 생성법·seed·QR 순서·thread 설정·contour·loop·stopping controls는 NR가 고정하고 evidence에 남긴다. Full capacity m0=n에서는 identity initial basis를 쓸 수 있다. Seed를 바꿔 통과할 때까지 반복하지 않는다. 고정 source 입력의 assembly/reduction·row· diagnostic 순서를 유지하되 repeated eigenvectors의 유일한 방향을 주장하지 않는다.
E6. Original-global recovery와 검증식
복구된 yf=C^T D^-1 phi, k=||Kf||F, m=||Mf||F에서
[ r_f=K_fy_f-\lambda M_fy_f,\qquad \eta_r=\frac{|r_f|_2}{(k+|\lambda|m)|y_f|_2}. \tag{E5} ]
원 조립행렬의 모든 original free DOF에서 검사한다. 축소 residual만으로 복원 오류를
숨기지 않는다. M은 항상 actual lumped다. 제약 성분의 modal residual을 reaction으로 출력하지 않는다.
Mf Z, Kf Z-Z diag(kappa), P^T Z, Cholesky reconstruction 및 constraint 복원도 검사한다.
Nz=0이면 null 검사는 N/A이며 zero metric의 통과를 만들어내지 않는다.
gi=phi_i^T M phi_i가 finite positive일 때만 phi_i/=sqrt(gi)로 정규화한다.
정규화 후 최종 phi에서 gi=phi_i^T M phi_i와 yf_i=C^T D^-1 phi_i를 다시 계산한다.
이후 모든 residual·Gram·Rayleigh·energy 검사는 이 재계산 값만 사용한다.
전체 c개에 대해 Gij=phi_i^T M phi_j, G≈I, Gram rank c를 검사한다.
Rayleigh quotient Ri=(yf_i^T Kf yf_i)/gi와
[ \eta_{energy,i}=\frac{|y_{f,i}^TK_fy_{f,i}-\lambda_i g_i|} {(k+|\lambda_i|m)|y_{f,i}|_2^2} \tag{E6} ]
를 검사한다. 같은 단위 norm에서 symmetry·congruence error를 평가한다.
모든 ratio는 분모>0에서만 계산하며 numerator=denominator=0이면 해당 zero identity metric=0,
denominator=0,numerator!=0이면 실패다. Zero eigenvector 자체는 정규화 전 실패다.
임의 max(1,scale)·floor·zero clamp는 없다. 실제 수치 한계는 NR가 정한다.
Lambda를 pair와 함께 stable 정렬하고 exact tie는 solver column order로 둔다.
최대 절댓값의 scaled global component가 양수가 되게 sign을 정하며 tie는 source DOF 순서다.
Gram을 맞추려고 서로 다른 eigenvalue의 vectors를 섞지 않는다. Repeated group은 동일
mass metric의 projector로 비교하며 한 벡터의 방향을 external acceptance로 요구하지 않는다.
Mass-normalized phi_u 차원은 M^-1/2, phi_theta는 M^-1/2 L^-1이고 응답변위가 아니다.
모든 density를 c_rho>0배 하면 두 mass는 c_rho배, lambda는 1/c_rho배, normalized repeated eigenspace는 1/sqrt(c_rho)배와 내부 orthogonal mixing 관계다. 여섯 rigid motions와 same-physical-BC covariance는 질량·stabilization 상세의 field를 쓴다.
Raw lambda의 부호를 보존한다. NR 기준의 significant negative는 spectrum 실패,
near-zero는 raw value를 유지한 분류다. 양수일 때만 f=sqrt(lambda)/(2pi), 정확한 0이면
f=0이고 음수에는 실수 f를 만들지 않는다. 저장 validity·schema는 I/O가 정의한다.
E7. Candidate와 실패 lifecycle
Geometry/density→consistent moments→lumped→K/M assembly→실제 BC→analytic split→ SPD whitening→count/FEAST→global 복원·전체 c개 독립 검증→N개 candidate 순서다. 검증 전 accepted state를 바꾸지 않는다. Writer는 candidate를 완성·self-check·close한 뒤 final HDF5를 교체하고, 준비된 state 교환은 이후 실패하지 않도록 한다. 제어된 solve/ validation/write/finalization 실패에서 이전 state·final output을 보존한다. Live log는 별도 lifecycle이며 crash/power-loss 원자성을 새로 주장하지 않는다. 추가 nonlinear/material history나 modal stress/reaction state를 만들지 않는다.