15 KiB
MITC4 eigen 필수 verification portfolio
- Feature ID:
mitc4-shell-feast-eigen - Owner:
numerical-review-agent - Input contract revision:
r2 - 기본 보고서: numerical-review.md
- 수치 기준: controls C1~C7
아래는 Planning이 RED→observed failure→GREEN→focused/full VERIFY에 연결할 필수 logical cases다. C++ test 이름·파일과 final schema는 각 owner가 정한다. 새로운 reference 생성/수정 없이 synthetic test inputs는 tests의 승인 소유 경로에 둔다. Expected value를 production mass/reduction/FEAST 함수의 재호출로 만들지 않는다. 이 문서는 실행 결과가 아니다.
P1. Mass·좌표·조립
| Case ID | 입력·독립 oracle·필수 관찰 | 판정 |
|---|---|---|
| MFE-C01 | Affine rectangle 4×2, rho=3, t=1/2, parallel unit director. M10: C0=(rho t A/36)*[4,2,1,2;...], C1=0, C2=t²C0/12, node m=3, h=0, j=1/16. Full24와 physical20·각 translation energy·tangent inertia/drill null을 검사. rho×4, t×2의 C0/C2 scaling도 검사 |
C2 모든 관련 scalar/matrix/rank 기준 |
| MFE-C02 | r1 rational warped/director-varying fixture의 X,d,rho,t와 exact coefficient/row/first-moment oracle. Independent coefficient integration 또는 별도 고차 direct integration을 사용. C1을 강제0, 2-point mass, flat C2 비례식 mutation은 실패해야 함. 같은 shape/J production 호출만으로 oracle 구성 금지 | C2-02~10; 기존 geometry predicate를 먼저 적용. Custom-director kernel fixture를 input explicit normals 지원으로 확대하지 않음 |
| MFE-C03 | Consistent/moment snapshot을 유지하고 row-sum→lumped 연결 검사. C1/C2의 controlled symmetric perturbation이 원 mass와 derived block에 모두 반영됨. Independent nodal integral rho Ni Gi^T Gi 및 고정 velocities의 pairwise Jensen work와 비교. Uniform translation, drill-only, nonuniform translation, tangent rotation을 각각 검사 |
C2-02~10; nonnegative kinetic energy, zero branch 및 총질량·centroid 보존 |
| MFE-C04 | Square [-1,1]^2, rho=t=1, uniform m×m grid m=1,2,4, velocity (x,0,0), theta=0. Direct polynomial gives q^T MC q=4/3, q^T(ML-MC)q=8/(3m²). Independent constant velocity의 두 energy는 모두 총질량4 |
Exact sequence에 C2-03/04/06. 이는 이 smooth field의 lumping error 검산이며 일반 spectrum 수렴 차수 약속 아님 |
| MFE-C05 | C01/C02의 global proper rotation과 origin translation. Q는 rational proper rotation [[0,-1,0],[3/5,0,-4/5],[4/5,0,3/5]], shift=(7,-3,5). Geometry/director/frame/mass를 새로 계산. Scalar full-row lumping이 실패하는 d=(1,1,1)/sqrt3도 사용 |
두 mass congruence와 kinetic work C2-02; moment는 common Xref, drilling null 보존 |
| MFE-C06 | 공유 node·서로 다른 rho/thickness section의 shell patch. Element 순서와 source labels가 다른 입력의 대응 결과, sequential/병렬 contribution 및 stable reduction을 검사. 실제 constraints와 source indices를 독립 expected map으로 대조 | Exact structure/order/identity, C2 matrix equality. Input permutation 자체와 fixed source-order determinism을 구분 |
| MFE-C07 | rho=0/negative/NaN/Inf/missing/duplicate/unresolved/dependent, invalid t/material, inverted/degenerate/기존 미지원 geometry 및 27점 중 invalid evaluation을 각각 거부. Density가 없는 기존 static case는 허용 | Semantic/geometry/model failure, 상태·output 미반영. Mass zero 우회 금지 |
P2. Stabilization·partial BC·정적 영향
| Case ID | 입력·독립 oracle·필수 관찰 | 판정 |
|---|---|---|
| MFE-C08 | NR-MFE-001 원 rectangle와 Z45° 회전. S1을 새 frame에서 계산. Expected kd=19/4800, Mff=3/50, Kff=10369/7500, lambda=10369/450. 모든 DOF fixed, node1 URZ만 free. Old min rule은 이 case를 실패시켜야 함 | Complete K·두 mass·kd congruence C2, exact eigenvalue C3-07, 원 free residual. Full-free/clamp 대체 금지 |
| MFE-C09 | C08에 admissible moment m=(5/3)M0 b, M0=1, b=(-4/5,0,3/5). 각 geometry에서 load도 변환. Expected thetaZ=7500/10369. 원 full Kq-F의 모든 reaction 성분을 회전해 비교 |
C7 static response/full residual/reaction covariance, physical moment projection<=1e-12 |
| MFE-C10 | Eight diagonal inventory [0,0,2,4,0,6,0,4]이면 kref=2,kd=.002. All-zero, 한 negative, NaN/Inf는 failure. DBL_MAX 근방 양성 inventory는 scaled mean이 가능한 경우 finite; subnormal kd underflow는 failure. Independent node별 tangent changes O angles=(0,pi/6,pi/4,pi/3)에서도 trace 동일 |
C2-11/12; 분모8 고정, clamp/positive-only mean/min 금지 |
| MFE-C11 | Free affine element와 smooth patch의 세 rigid translation·세 tangent-projected rigid rotation. Pure drill은 별도 4개. Physical K20 rank14, consistent physical mass rank20, complete K24 rank18/nullity6; positive-space dimension20. Full massless reduction 후 six near-zero physical modes가 남음 | C2/C3 analytic rank·rigid K action·mass Gram; drill에 관성을 주거나 physical zero mode 삭제 금지 |
| MFE-C12 | 기존 nonlinear fixture에서 초기 scale=S1, trial/commit/rollback에 exact unchanged. 기존 objective gamma potential의 first/second directional variations, finite rigid motion, linear physical limit, physical recovery 제외와 reaction conversion | 기존 nonlinear 계약 및 C7. Trial scale 재선정·nonlinear Hessian SPD·linear Td entry equality를 요구하지 않음 |
P3. 실제 BC·mass whitening·FEAST
| Case ID | 입력·독립 oracle·필수 관찰 | 판정 |
|---|---|---|
| MFE-C13 | Nodal M6 h=0,m=j=1의 manufactured block. d=(0,0,1), d=(3/5,0,4/5), d=(1,1,1)/sqrt3에 full free, URX fixed, URZ only free, all rotations fixed, drill-only free, fully constrained 조합. 조합은 Cartesian product가 아니라 지원되는 global component BC로 표현 가능한 경우만 적용하며, drill-only free는 d=(0,0,1)에서 URZ만 free이고 나머지5 DOF constrained인 경우로 한정한다(MPC 없음). Expected null은 constrained director 성분의 exact-zero 교집합. Mixed nodes에는 local finite rank0가 있어도 다른 finite node 보존 | E2 analytic dimension, C2-07~14, recovered source mask. Global n=0 또는 N>n은 failure |
| MFE-C14 | d=(2p/(1+p²),0,(1-p²)/(1+p²)), p=1/2000와1e-8. m=j=1,h=0; URX만 fixed, 세 translation과 URY/URZ free. 첫 case positive rank5와 conditioning pass; 두 번째는 여전히 analytic rank5이나 conditioning/Cholesky failure. p=0은 정확한 null1 |
C2 rcond cutoff의 양옆 및 exact equality branch. Tiny positive mass를 rank4로 바꾸는 구현은 실패 |
| MFE-C15 | 독립 singular pencil K=6,2],[2,4, M=diag(2,0)에서 finite lambda=5/2,z=-p/2. 단순 삭제의3은 오답. Production shell projection path에 nonzero Kpz 또는 nonpositive Kzz 주입 시 실패. 일반 dense Schur 기능을 구현할 필요 없음 | Original residual oracle와 E3 admissibility rejection, 임의 fallback 금지 |
| MFE-C16 | SPD nodal whitening M=[[2,1],[1,2]], K=[[6,4],[4,6]]의 eigenvalues 2,10/3. Dense inverse 없이 congruence·복원·original-M normalization. 같은 eigenvectors에 틀린 lambda·mass variant·null coordinate/constraint를 각각 주입 |
C2/C3, injected wrong pairing/mass/full residual이 실패해야 함 |
| MFE-C17 | Actual FEAST diagonal known spectra: n1 λ=2,N1; [0,0,0,2,5,9]에 N1/4/6; [1,2,4,8] N1/2/4; n4 all-zero N1/4. 요청 N은 별도 input count이고 count output과 분리 |
C3/C5, lowest N/multiplicity/zero/N=n, count/guard/solve history; mock만으로 대체 금지 |
| MFE-C18 | Actual FEAST n64 spectrum: 앞40개 λ=1, 나머지 λ=2..25, N1 및N41. n4 tight spectrum [1,1+2^-28,1+2^-27,8], N2. B=Q diag(lambda) Q^T의 dense-pattern test도 추가; Q는 고정 Givens(pi/6,pi/4) 곱 |
C3-07/08, repeated group>N에서 c/m0가 N보다 커짐, 전체 c Gram, partial cluster merge 금지 |
| MFE-C19 | Actual backend에 [ -2,0,3 ], [ -1e-12,0,1 ]. Backend raw negative 보존; procedure는 첫 spectrum의 유의한 음수 실패, near-zero negative는 classification·frequency-validity/raw 보존. Exact ±tau_zero*s 및 그 양옆은 arithmetic/injection 경계 test |
C3 분류와 실패 보존. 부적합 물리 K를 accepted shell이라고 주장하지 않음 |
| MFE-C20 | Density×4에서 두 M×4, λ/4, normalized vector amplitude 1/2; C08과 simple/repeated known-spectrum fixture 사용. 길이×1024, rho/1024³,E/1024,t×1024의 일관 단위 변환에서도 λ 불변 | C2/C3/C4; baseline s·same physical BC, 단위 mixing/floor 검출 |
| MFE-C21 | Endpoint=eigenvalue collision, prefix0 반환, nonmonotone count, total!=n, m!=c, info1/2/3/4/-1..-5/200..202·invalid fpm, missing/duplicate/nonfinite CSR, B-not-SPD를 각각 주입. QR rank/Gram failure·insufficient capacity·nonfinite pair·wrong residual도 주입 | C5의 정확한 retry 대상·budget/최종 failure. Error를 empty interval 또는 부분 성공으로 바꾸지 않음 |
| MFE-C22 | 실제 operator에 near endpoint/repeated cluster의 C5 history 검증과 adapter-mock count-call512/solve-call3 최대 경계, budget 직전 certified bracket fallback. Index/nnz+1/n²/n*m0 overflow 및 allocation 실패 injection | 정수 exact checks, 유한 종료, controlled failure. 큰 메모리를 실제 할당해 실패시킬 필요 없음 |
MFE-C17/18 actual FEAST case에서 bounds를 expected eigenvalues로 설정하지 않는다. Production E6/C5 search를 실행하고 independent diagonal spectrum의 prefix count와 postsolve 결과로 history를 검증한다. Synthetic rotated pencil은 sparse CSR에 전 dense pattern을 저장할 수 있지만 다른 eigensolver로 expected values를 계산하지 않는다. False count/solve success가 lowest-N를 검증하지 못하는 mock도 포함해 missing low eigenpair를 Gram/residual만으로 성공시키는 경로를 잡는다.
P4. I/O·reference·운영 closure
| Case ID | 필수 관찰 | 판정 |
|---|---|---|
| MFE-C23 | 원본 input의 density/section mapping·S4/S4R common physical path·Step-2/N10·blank bounds·Lanczos/SIM/acoustic-free no-op·mass normalization. Unsupported fields, prior step/preload, nonzero BC, damping/acoustic/mixed elements는 fail-closed | I/O가 fixed syntax allowlist·진단으로 구체화. Source count와 actual FEAST count/backend 구분 |
| MFE-C24 | Source renumbering과 output self-check; logical mode/source identity·lambda dimension·actual mass/backend·candidate를 HDF5에서 복원. 기존 final hash/accepted state를 준비하고 solve/validation/write/close/replace failure 주입 | 정확한 schema는 I/O 소유. 모든 failure에서 계약 범위의 이전 state/final 보존, log는 별도 lifecycle |
| MFE-C25 | 새 eigen reference 10개 Value, 10 singleton families, comparator prechecks/1% RMS·5% row·near-zero·zero-scale inclusive 경계. Equal values의 distinct IDs와 reordered TXT는 허용, missing/extra/duplicate/NaN/Inf/wrong quantity/mass/schema는 실패 | 공통 policy 그대로, 모든 Value blocking. Actual FESA fresh binary 결과로 실행 |
| MFE-C26 | 아래 기존 linear/nonlinear static portfolio·configured 전체 regression suite·새 warning 없음. Density 없는 기존 static, source mapping·partial-BC response·Newton objective/tangent·평형·reaction·energy·rollback | C7와 기존 reference identity/policy. Old kd 수치 equality는 대체하되 다른 기준 유지 |
| MFE-C27 | RED가 변경 동작 때문에 실패했는지 확인, GREEN/focused/full MSVC x64 Debug CMake/CTest 실제 exit, actual FEAST/backend identity, fresh reference timestamps/hashes. 세 반복 구조/order/diagnostic 및 scalar 재현성 | C4, 전27개 requirement evidence 및 동일 r2 Physics/Release closure. 누락·실패·stale를 통과 처리 금지 |
기존 정적 포트폴리오의 원본 목록은
Requirement evidence와
현재 nonlinear reference-model이다.
shell/shellNL/shellNL-meshfine의 해당 .inp와 같은 폴더의 원본
<stem> displacements.csv, nonlinear의 required review-only reactions를 그대로 사용한다.
Linear shell-s4와 shell-s4-linear-limit는 같은 input의 서로 다른 검토 역할이며
같은 fresh solve를 재사용할 수 있어도 각 identity/회귀 증거를 생략하지 않는다.
U1/U2/U3는 global length blocking, UR1/UR2/UR3는 fixed-initial global rotation-vector
warning-only이며 같은 step/accepted state·case·dimension·coordinates·impact별 공통 family다.
Nonlinear RF1/RF2/RF3와 physical spatial RM1/RM2는 기존 source-key·finite·inventory 및
error/RMS report를 유지하는 review-only다. RM3/stress는 기존 numerical gate에 넣지 않는다.
Factor-one 내부 force/moment equilibrium은 별도 blocking이고 C7를 따른다.
shellnl-meshfine-02-s4-final의 post-closure 역할은 그대로 유지하며 등록 suite의 해당
실행·영향 evidence를 기록한다. 과거 세 case의 closure로 소급 합치지 않는다.
Root가 관찰한 중단 baseline/단독 재현/나머지 pressure tests는 새 binary 전체 suite의 성공 evidence가 아니다. Reference 테스트의 HDF5 cache가 이전 library보다 새롭다는 이유로 옛 solve를 재사용하지 않았는지 확인하고, r2 영향을 받는 final comparison은 새 binary의 fresh solve evidence로 남긴다. Reference input/results를 수정하거나 Hook state를 조작하지 않는다.
Requirement coverage
아래 전 행의 접두사는 FEM-REQ-MITC4-EIGEN-이고 모두 must다.
Mapping은 acceptance intent를 복제하지 않으며 requirements가 원본이다.
| Requirement suffix | 필수 cases |
|---|---|
| 001 | MFE-C23, MFE-C25 |
| 002 | MFE-C01, MFE-C08, MFE-C12, MFE-C23, MFE-C26 |
| 003 | MFE-C06, MFE-C07, MFE-C23 |
| 004 | MFE-C01, MFE-C02, MFE-C07 |
| 005 | MFE-C01, MFE-C02, MFE-C03 |
| 006 | MFE-C01, MFE-C03, MFE-C11, MFE-C13 |
| 007 | MFE-C06, MFE-C13, MFE-C27 |
| 008 | MFE-C08, MFE-C13, MFE-C14, MFE-C15, MFE-C16 |
| 009 | MFE-C13, MFE-C17, MFE-C18, MFE-C19, MFE-C22, MFE-C23 |
| 010 | MFE-C17, MFE-C18, MFE-C25, MFE-C27 |
| 011 | MFE-C03, MFE-C16, MFE-C17, MFE-C23, MFE-C25 |
| 012 | MFE-C14, MFE-C19, MFE-C21, MFE-C22, MFE-C24 |
| 013 | MFE-C11, MFE-C16, MFE-C17, MFE-C18, MFE-C21 |
| 014 | MFE-C01, MFE-C02, MFE-C03, MFE-C04, MFE-C05, MFE-C08, MFE-C11, MFE-C20 |
| 015 | MFE-C23, MFE-C25 |
| 016 | MFE-C07, MFE-C21, MFE-C23 |
| 017 | MFE-C24, MFE-C25 |
| 018 | MFE-C06, MFE-C13, MFE-C16, MFE-C24, MFE-C25 |
| 019 | MFE-C21, MFE-C22, MFE-C24 |
| 020 | MFE-C25, MFE-C26 |
| 021 | MFE-C25 |
| 022 | MFE-C25 |
| 023 | MFE-C27 |
| 024 | MFE-C09, MFE-C12, MFE-C26, MFE-C27 |
| 025 | MFE-C27 |
| 026 | MFE-C01, MFE-C02, MFE-C03, MFE-C04, MFE-C05 |
| 027 | MFE-C08, MFE-C09, MFE-C10, MFE-C11, MFE-C12, MFE-C26 |