# MITC4 질량·FEAST 근거와 downstream 검증 후보 - Feature ID: `mitc4-shell-feast-eigen` - Owner: `research-agent` - Input contract revision: `r1` - 기본 보고서: [research.md](research.md) - Web access date: `2026-09-06` `Fact`는 출처에서 확인한 내용, `Derivation/Inference`는 그 근거를 승인된 FESA에 적용한 연구 판단, `Candidate`는 Formulation/NR가 확정할 항목이다. 이 문서는 최종 수식·API·schema· tolerance나 benchmark acceptance를 승인하지 않는다. ## Source inventory 모든 외부 source는 원 논문 또는 공식 문서다. `P`는 프로젝트 계약이며 독립 검증 근거가 아니다. 공식 Abaqus 자료는 공개 입력·출력 의미만 설명한다. | ID | Source identity / stable locator | 신뢰도·적용·한계 | | --- | --- | --- | | S01 | Dvorkin & Bathe, *A Continuum Mechanics Based Four-Node Shell Element for General Non-linear Analysis*, Engineering Computations 1 (1984), 77–88, DOI `10.1108/eb023562`; [author PDF](https://web.mit.edu/kjb/www/Publications_Prior_to_1998/A_Continuum_Mechanics_Based_Four-Node_Shell_Element_for_General_Nonlinear_Analysis.pdf), Eq.(1),(2), Eq.(25) 직후 및 Fig.7/Tables 3–4; [local transcription](../reference-papers/MITC4/AContinuumMechanicsBasedFourNodeShell/AContinuumMechanicsBasedFourNodeShell_001.md) | 1차 운동학·5 DOF·consistent-mass vibration 예제. Local OCR의 도표값은 검증 없이 acceptance 값으로 채택하지 않음. 비선형·가변두께 범위를 새로 허용하지 않음 | | S02 | Voet, Sande & Buffa, *A mathematical theory for mass lumping and its generalization with applications to isogeometric analysis*, CMAME 410 (2023), 116033, DOI `10.1016/j.cma.2023.116033`; [author preprint v2](https://arxiv.org/html/2212.03614v2), §1, Definition 3.7, Remark 3.8, Lemma 3.19, §3.3 | 원 연구의 row-sum·positivity·Loewner 근거. 일반 scalar algebra를 회전 tensor에 그대로 옮기는 것은 입증되지 않음 | | S03 | Bathe & Wilson, *Solution methods for eigenvalue problems in structural mechanics*, IJNME 6 (1973), 213–226, DOI `10.1002/nme.1620060207`; [author PDF](https://web.mit.edu/kjb/www/Publications_Prior_to_1998/Solution_Methods_for_Eigenvalue_Problems_in_Structural_Mechanics.pdf), `STATIC CONDENSATION`, Eqs.(9)–(13); [publisher record](https://onlinelibrary.wiley.com/doi/pdf/10.1002/nme.1620060207) | 원 연구의 massless elimination과 fill/storage 한계. 임의 massive DOF를 제거하는 근사 Guyan reduction의 정확성을 주장하지 않음 | | S04 | Intel oneMKL C Developer Reference, 2026.0 URL edition, page date `2026-04-28`, [Extended Eigensolver Functionality](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/extended-eigensolver-functionality.html), `generalized` 및 sparse interface 설명 | 공식 admissibility·PARDISO 사용. 설치 runtime와 같은 version string이라는 가정 없음 | | S05 | 같은 edition, [?feast_scsrgv/?feast_hcsrgv](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/feast-scsrgv-feast-hcsrgv.html), `Syntax`, `Input/Output Parameters`; [Matrix Storage](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/matrix-storage.html) | 공식 signature·storage·capacity·결과 의미. `emin≤emax` 본문은 S07의 strict validation과 함께 읽음 | | S06 | 같은 edition, [Extended Eigensolver Input Parameters](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/extended-eigensolver-input-parameters.html), C-indexed `fpm` 표 | 공식 count/check/iteration 옵션. Standalone FEAST 다른 버전의 fpm 번호를 대입하지 않음 | | S07 | 같은 edition, [Extended Eigensolver Output Details](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/extended-eigensolver-output-details.html), return-code 표와 `info=1` 주의 | 공식 오류·구간 폭·endpoint 위험. Warning은 Feature 성공으로 자동 승격하지 않음 | | S08 | E. Polizzi, *Density-Matrix-Based Algorithm for Solving Eigenvalue Problems*, Physical Review B 79 (2009), 115112, DOI `10.1103/PhysRevB.79.115112`; [author preprint](https://arxiv.org/pdf/0901.2665), §II.A Eqs.(6)–(9), §II.B | 원 FEAST의 contour/Rayleigh–Ritz와 B-orthonormality. MKL 옵션·상태 정의는 S05–S07 우선 | | S09 | Abaqus 2025 [*FREQUENCY](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-frequency.htm), `Optional parameters`, Lanczos data line | 공식 count·bounds·SIM·normalization·acoustic semantics. FESA가 source Lanczos를 구현한다는 근거가 아님 | | S10 | Abaqus 2025 [Natural Frequency Extraction](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEANLRefMap/simaanl-c-freqextraction.htm), `Eigenvalue Extraction`, `Normalization`, `Initial Conditions`, `Output` | 공식 `omega²`·generalized mass·base state. Abaqus 내부 질량 정식화에 대한 추론 금지 | | S11 | Abaqus 2025 [OdbFrame object](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKERRefMap/simaker-c-odbframepyc.htm), modal constructor와 members; [Mode Domain Output](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEOUTRefMap/simaout-c-dboutput-frequency.htm), `Controlling Output Frequency in a Mode Domain Analysis` | 공식 mode/frame 의미. TXT에 없는 step을 임의 생성하는 권한이 아님 | | P01 | [기존 MITC4 formulation](../linear-static-mitc4-shell/formulation.md), §§5,8,9,12,17; [실제 kernel](../../src/fesa/elements/mitc4_shell.cpp), `PhysicalTransformation20`, `DrillingTransformation4`, `EvaluateStiffness`, `GeometryAt`; [ARCHITECTURE](../ARCHITECTURE.md) | 현재 FESA 기하·부호·stabilization·소유권 계약. Legacy research의 오래된 tolerance/승인 절차는 이번 계약에 재사용하지 않음 | | P02 | [requirements r1](requirements.md), [원본 reference evidence](requirements-evidence.md), [공통 TOLERANCE](../TOLERANCE.md), [ADR](ADR.md) | 승인된 사용자 흐름과 acceptance boundary. 수치 통과 자체의 evidence가 아님 | Hinton–Rock–Zienkiewicz (1976), DOI `10.1002/eqe.4290040305`의 [publisher abstract](https://onlinelibrary.wiley.com/doi/10.1002/eqe.4290040305)는 확인했으나 본문을 확보하지 않아 HRZ의 shell-specific 수식을 근거로 채택하지 않았다. NASA SP-160은 optional plate benchmark 탐색에서 발견했으나 이번 포트폴리오는 S01 및 직접 검산 가능한 oracle로 충분하므로 필수 artifact나 새 acceptance 요구로 추가하지 않았다. Configured FEM vault는 이번 요청의 지정 evidence source가 아니며, 기존 wiki/연구 요약은 탐색에만 참고하고 핵심 주장을 위 1차 source에 연결했다. ## R01 — Consistent physical mass와 적분 **Fact, S01/P01:** 기존 보간은 `u = sum Ni(ui + z*(theta_i cross d_i))`, `z=t*zeta/2`이며 director-parallel rotation은 입자 속도에 기여하지 않는다. 원 논문의 elastic example은 surface `2×2`, thickness 2-point Gauss 및 consistent-mass 주파수 분석을 사용한다. 이는 임의 geometry의 mass 적분이 정확하다는 증명은 아니다. **Derivation:** `T=1/2 integral rho*|u_dot|² dV`에서 `M_C=integral rho*H^T H dV`가 따른다. Geometry는 기존 `X=sum Ni(Xi+z*di)`와 같은 `J=det(dX/dnatural)`를 사용한다. 양의 quadrature weight·density·유효 J에서는 대칭 PSD와 drilling null action이 직접 따른다. MITC의 assumed shear는 strain 보간이므로 velocity 보간을 바꾸거나 shear factor `5/6`를 물리 질량에 곱하는 이유가 되지 않는다. **평판 oracle:** 평행 director·centered flat section이면 병진 scalar block은 `rho*t*integral Ni*Nj dA`, rotary block은 `rho*t³/12*integral Ni*Nj dA`와 tangent 변환의 곱이며 translation–rotation coupling은 0이다. 축정렬 직사각형 면적 A에서는 scalar consistent block이 `rho*t*A/36`에 다음 행렬을 곱한 것과 같다. ```text 4 2 1 2 2 4 2 1 1 2 4 2 2 1 2 4 ``` Rotary oracle의 scalar 배율은 위 병진 배율의 `t²/12`다. 이는 bilinear 형상함수의 직접 다항식 적분 결과이며 구현 함수를 다시 호출하는 테스트와 구분한다. **Candidate/한계:** 곡면에서는 J가 zeta에 의존하여 odd thickness moment와 translation–rotation coupling이 남을 수 있다. Centered section만으로 이를 0으로 두지 않는다. 현재 trilinear geometry의 J 및 H 다항식 차수를 확인해 충분한 적분을 선택할 수 있다. 보수적인 tensor-product 3-point 후보는 각 좌표의 degree≤4 mass integrand를 적분하지만, 정확한 차수·기하 검증 위치·채택 quadrature는 Formulation/NR가 증명한다. 기존 stiffness quadrature나 기존 geometry 허용 범위를 연구 단계에서 변경하지 않는다. ## R02 — Consistent에서 유도하는 좌표 일관적 lumping **Fact, S02:** Row-sum, nodal quadrature, diagonal scaling은 일반적으로 서로 다른 근사다. Nonnegative partition of unity는 scalar row-sum의 positivity를 설명한다. 논문의 absolute-row-sum operator는 일반 행렬의 positivity를 확보하지만 물리 total mass나 회전 nullspace를 보존하는 shell-specific theorem은 아니다. **Derivation — 피해야 할 적용:** global rotary tensor는 `I-di*di^T`와 다른 director 사이의 cross block을 포함한다. Scalar `diag(M*ones)`는 좌표 회전과 commute하지 않는다. 예를 들어 단위 director `d=(1,1,1)/sqrt(3)`의 `P=I-dd^T`는 `P*ones=0`이지만 rank는 2다. Row-sum은 두 물리 관성을 모두 없애며 absolute row-sum은 drilling에 관성을 더한다. 혼합 translation/rotation 행의 무차별 합은 단위도 섞는다. **Candidate — scalar moment를 통한 node block:** Consistent의 구성 moment `Ck_ij=integral rho*Ni*Nj*z^k dV`, `k=0,1,2`를 식별하고 해당 물리 scalar moment에서 row-sum한 뒤 각 node의 director tangent tensor로 재구성하는 방법을 검토할 수 있다. 이는 consistent 결과와의 유도 관계를 증명해야 하며, 별도 unrelated diagonal을 생성하는 우회 경로로 쓰지 않는다. Full consistent block에서 moment를 추출하거나 계산 중 동일 moment를 보존하는 구체적 방식은 Formulation 소유다. `sum Nj=1` 때문에 이 후보는 node별 `integral rho*Ni*Gi(z)^T Gi(z) dV` 형태로 설명된다. 여기서 `Gi(z)`는 그 node의 병진과 director 변화로 particle velocity를 만드는 map이다. 따라서 양의 measure에서 physical block PSD, director nullspace, tensor congruence와 총 병진 질량 보존을 독립적으로 검산할 수 있다. Flat case에서는 `m_i=sum_j C0_ij`, 두 tangent inertia `m_i*t²/12`, drilling 0으로 단순화된다. **한계:** 곡면의 nodal rotational frames를 component별로 직접 더하지 않는다. Node block은 global 좌표에서 diagonal일 필요가 없다. Translation–rotation moment를 보존하면 6×6 block에 coupling이 있을 수 있다. 이 후보의 positivity와 각 inertia/centroid 보존 관계는 Formulation에서 완성하고 NR가 독립 검토해야 한다. Uniform translation energy는 보존하지만 일반 회전의 orbital inertia 및 모든 속도장의 consistent energy는 보존한다고 가정하지 않는다. 물리 node velocity의 convexity로 설명 가능한 에너지 차이와 refinement 거동을 검증 후보로 삼을 수 있으며, Abaqus 내부 lumping 동일성을 주장하지 않는다. ## R03 — Massless 좌표, 제약과 유한 spectrum **Fact, S03:** Massless 좌표를 분리하여 mass가 `diag(Mp,0)`, `Mp` SPD이고 대응 강성 `Kzz`가 가역이면 `Kr=Kpp-Kpz*Kzz^-1*Kzp`와 `Mp`의 문제로 축소하며, massless 성분은 `z=-Kzz^-1*Kzp*p`로 복원한다. 이 경우 정적 제거는 massless row의 정확한 식이다. 축소 stiffness는 일반적으로 dense가 될 수 있다. **Inference, P01에 적용:** 먼저 원래 global homogeneous BC의 free injection C로 `Kf=C^T K C`, `Mf=C^T M_L C`를 만들고, 그 공간에서 positive/null basis를 정의한다. Director가 global axis와 기울어져 있으면 `UR3=drill`은 성립하지 않는다. 일부 global 회전을 고정한 node에서는 원래 drill 방향 전체가 free space에 들어가지 않을 수 있으므로 실제 `Mf`가 full rank가 될 수 있다. 이때 물리 질량이 있는 자유도를 제거해서는 안 된다. P01의 공통 nodal director와 `Kphys=Tphys^T K20 Tphys`, `Kdrill=Td^T kd I Td` 때문에 massless 방향의 decoupling을 algebraically 증명할 가능성이 있다. 증명된 경우 node별 작은 basis로 projection하여 sparsity를 유지할 수 있다. 단순히 coupling을 작다고 버리는 것은 그 증명이 아니다. Partial global constraints로 finite space에 남는 기존 stabilization contribution도 보존한다. 새 massless 처리는 **기존 constrained stabilized K와 선택된 lumped M의 finite spectrum**에 대한 동등성이다. Unstabilized 다른 shell formulation이나 consistent spectrum과의 동등성이 아니다. **Candidate 검증:** 비축정렬 director, partially constrained rotation, constraint-free shell의 6 physical rigid motions, `Kpz!=0`인 작은 manufactured pencil로 축소/복원과 full free residual을 확인한다. Physical rigid rotation의 nodal UR은 기존 계약의 tangent projection을 사용한다. Null block이 비가역인 경우 generic inverse/pseudoinverse로 우회하지 않는다. 공통 K/M nullspace는 regular finite-spectrum 문제와 구분해 진단한다. 물리 rank 0, request>rank, nullspace가 없는 경우를 각각 정의한다. 일반 dense basis/Schur를 채택하면 `O(n²)` storage와 factorization fill을 평가해야 한다. Reference의 25×25 interior nodes는 flat full clamp에서 free DOF 3750, massive physical dimension 3125로 예상되며, 3125² double 한 행렬만 약 78.1 MB다. 이는 topology에 따른 계산 추정이고 실제 rank/runtime 측정이 아니다. FEAST workspace와 complex shifted factorization을 더해야 하므로 한 행렬 크기로 memory feasibility를 주장하지 않는다. ## R04 — oneMKL FEAST API와 completeness 근거 **설치 관찰:** `mkl/2026.1/include/mkl_solvers_ee.h` lines 33,87에 `feastinit`, `dfeast_scsrgv`가 있다. `mkl_version.h`는 major `2026`, minor `0`, update `1`, build date `20260612`, `INTEL_MKL_VERSION=20260100`이다. Directory `2026.1`과 header version 표기를 임의로 통일하지 않는다. 실제 linked runtime는 Implementation이 기록한다. `mkl_types.h`의 `MKL_INT`는 LP64에서 `int`, `MKL_ILP64`에서 64-bit다. N, nnz+1, row/column index와 N×m0 allocation을 checked conversion해야 하며 vendor type은 adapter 내부다. **Fact, S04/S05:** Real symmetric generalized `A*x=lambda*B*x`에서 B는 SPD여야 한다. `dfeast_scsrgv`는 A/B 각각 values·row pointer·column index를 받으며 같은 storage family를 사용한다. `uplo=U/L/F`, `n>0`, `0=interval multiplicity count`다. `fpm`은 128개 `MKL_INT`; `e/res`는 m0, eigenvectors는 N×m0의 column storage로 준비하고 첫 m columns만 소비한다. Documented CSR은 row pointer terminal `nnz+1`인 1-based convention으로 대응한다. A/B sparsity pattern은 같을 필요가 없다. 내부 0-based CSR을 인덱스 변환 없이 넘기지 않는다. `epsout`은 trace 변화량이고 개별 residual을 대신하지 않는다. **Fact, S06 — C index 표:** | Parameter | 문서 의미 / 연구 적용 | | --- | --- | | `feastinit(fpm)` | 호출 전 초기화; 다른 FEAST 배포판의 설정 배열을 복사하지 않음 | | `fpm[1]` | contour points; 허용된 값만 사용 | | `fpm[2]`, `[3]` | double precision stopping exponent, refinement loop bound; 값은 NR/계약에서 고정 | | `fpm[4]` | 0=generated initial subspace, 1=user subspace; 재현성과 projection rank 검증 필요 | | `fpm[5]` | 0=residual stopping, 1=trace stopping; zero mode는 독립 scale-aware residual 필수 | | `fpm[13]` | 1은 한 contour의 subspace만 반환; 완료 eigenpairs로 소비하지 않음 | | `fpm[26]`, `[27]` | CSR validity, B SPD check 옵션 | | `fpm[49]` | CSR interval eigenvalue count를 m0에 반환하고 flag를 0으로 재설정; count와 solve는 구분 | | `fpm[63]` 및 `[64..127]` | PARDISO user iparm 적용 여부 및 매핑; 후반부는 output도 되므로 call 간 변경 고려 | **Fact, S07:** `info=0` successful; `1` empty interval/검색 실패 가능, `2` nonconvergence, `3` insufficient subspace, `4` subspace-only이다. `-1/-2` allocation/inner solver, `-3/-4` reduced solver/B-not-SPD, `-5` count failure(구간 끝이 eigenvalue 또는 근접할 수 있음), `200/201/202`는 interval/subspace/N 오류다. `100+i`는 `fpm[i-1]` 오류다. S05 본문은 `emin<=emax`로 쓰지만 명시적인 `200` 검증은 `emin>=emax`를 거부하므로 실제 계약은 strict `emin