# MITC4 질량·FEAST 근거와 downstream 검증 후보 - Feature ID: `mitc4-shell-feast-eigen` - Owner: `research-agent` - Input contract revision: `r2` - 기본 보고서: [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을 임의 생성하는 권한이 아님 | | S12 | LAPACK 3.12.1, [DLAEV2 original source/documentation](https://www.netlib.org/lapack/explore-html/d4/d5a/dlaev2_8f_source.html), source lines 31–39 (`Purpose`), 102–113 (`Further Details`); authors Univ. Tennessee / UC Berkeley / Colorado Denver / NAG | 공식 2×2 대칭 eigendecomposition과 작은 고유값의 determinant cancellation 한계. FESA scale 선정 규칙이나 새 vendor 호출 의무를 제공하지 않음 | | S13 | Müller & Bischoff, *A Consistent Finite Element Formulation of the Geometrically Non-linear Reissner-Mindlin Shell Model*, ACME 29 (2022), 3387–3434, [updated original article](https://link.springer.com/article/10.1007/s11831-021-09702-7), Abstract, §2, §§6.1–6.2; corrections [April 2022](https://link.springer.com/article/10.1007/s11831-022-09725-8), [November 2022](https://link.springer.com/article/10.1007/s11831-022-09832-6) | 자체 shell 정식화의 potential 선형화·objectivity 근거만 사용. Review로 분류된 논문의 자체 유도 부분이며 문헌 요약을 1차 근거로 대용하지 않음. FESA의 MITC4·drilling 수식과 동일하지 않음 | | 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 기하·부호·소유권 계약; 옛 scale 공식은 r2 대체 대상. Legacy research의 오래된 tolerance/승인 절차는 이번 계약에 재사용하지 않음 | | P02 | [requirements r2](requirements.md), [원본 reference evidence·승인 delta](requirements-evidence.md), [공통 TOLERANCE](../TOLERANCE.md), [ADR](ADR.md) | 승인된 사용자 흐름과 acceptance boundary. 수치 통과 자체의 evidence가 아님 | | P03 | [기존 nonlinear formulation §§10.2–10.4](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential), [기존 linear requirements 034/056](../linear-static-mitc4-shell/requirements.md), [NR-MFE-001 반례](numerical-review-evidence.md#nr-mfe-001-직접-계산-반례), [r2 static 회귀 계약](requirements-evidence.md#r2-승인-범위와-정적-재검증) | 기존 initial-fixed scale·objective potential·미분 및 r2 대체/회귀 경계. NR 반례를 재실행한 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도 보존한다. r2의 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 `emin0`, `Kpz=0`이므로 기존 analytic projection의 정확성 근거가 유지된다. 이는 [E3](formulation-eigen.md)의 적용 조건 재확인이지 새 수식/실제 조립의 검증 완료가 아니다. Null이 없는 partial BC에는 개선 stabilization이 남으며 이를 삭제해서는 안 된다. 새 K와 옛 K 사이의 partial-BC spectrum 동일성은 요구하지 않는다. **Fact, S13:** 논문의 자체 shell 정식화는 director manifold에 맞는 potential의 일관 선형화와 objective interpolation을 함께 다룬다. 이것은 FESA의 drilling potential를 제공하지 않는다. April correction은 proofing 오류, November correction은 Eq.(5.26)의 LaTeX rendering 오류를 알리며 현재 원문이 교정되었다고 명시한다. 그 식을 이 후보에 복사하거나 FESA의 기존 운동학을 해당 논문의 보간으로 교체하지 않는다. **Derivation/조건, P03:** 기존 nonlinear `Pi_d=k_d*gamma^T gamma/2`에서 새 scale을 초기 reference physical K로 계산한 뒤 모든 increment/iteration에서 불변으로 유지하면 `Dk_d=D²k_d=0`이다. 따라서 기존 exact residual/Hessian은 동일한 `gamma`, `Dgamma`, `D²gamma`에 새 scalar를 곱하는 구조를 유지한다. 기저 불변 reference scale과 objective gamma를 함께 유지하면 같은 물리 상태의 좌표 변경에 따른 potential 불변성도 보존할 조건이 된다. Trial tangent에서 scale을 다시 선정하면 추가 미분항과 min의 비매끄러움이 생길 수 있어 이 initial-fixed 계약을 대체할 수 없다. Scale이 같다는 이유로 nonlinear의 corotation coupling을 linear의 단순 director projection과 동일하게 만들지 않는다. **Limit:** 양의 `k_d`는 numerical potential의 비음성과 pure-drill 양의 작용을 뜻한다. 변형된 nonlinear Hessian에는 `sum gamma_i D²gamma_i`가 있어 모든 상태의 SPD를 뜻하지 않는다. Linear E3 decoupling 증명을 nonlinear Hessian이나 prestressed eigenproblem에 일괄 적용하지 않는다. 새 feature의 eigen 상태는 승인된 원형상·무응력 상태다. ### Verification 연결과 남는 owner 작업 NR-MFE-001의 동일 물리 partial BC에서 새 scale과 complete K를 독립 재계산하고, 대응 eigen spectrum 및 정적 response의 좌표 검증을 수행해야 한다. 옛 계수를 외부에서 고정한 tensor 변환만 비교하면 원래 결함을 검출하지 못한다. 동일 물리 BC/loads의 변환과 허용된 입력 범위는 유지한다. 추가 새 reference 모델을 요구하지 않는다. 기존 static 회귀의 원본 경로·quantity·identity·policy는 P03의 [Requirement evidence portfolio](requirements-evidence.md#r2-승인-범위와-정적-재검증)에 한 곳에서 유지한다. Linear `shell` 및 nonlinear `shellNL`/`shellNL-meshfine`와 linear-limit case, 내부 tangent·선형극한·objectivity·평형·reaction·energy·rollback 검증을 새 scale로 실행해야 한다. 기존 U blocking/UR warning-only와 nonlinear reaction review-only를 eigen Value-only 요구로 삭제하지 않는다. 오래된 통과 보고서는 새 실행 evidence가 아니다. 남는 작업은 Formulation의 단일 후보 채택·positivity/변환 증명·적용 경계, NR의 독립 반례 해소·conditioning·metric·필수 case와 수치 기준, Implementation/Physics의 실제 정적/eigen 재검증이다. R07에서 새 authoritative conflict나 사용자 재결정 필요는 발견하지 않았다. ## 실행 evidence와 미실행 ### r1 조사 이력 Read-only `Get-Content`, scoped `rg`, `Get-FileHash`로 필수 공통/Feature/기존 MITC4 문서, 실제 kernel과 원본 두 reference 파일을 읽었다. 해당 읽기·hash 명령은 exit `0`이다. 아래는 핵심 재현 진입점이다. ```powershell Get-Content -Raw '.codex/skills/fem-research-evidence/SKILL.md' Get-Content -Raw 'docs/mitc4-shell-feast-eigen/requirements.md' rg -n 'PhysicalTransformation20|DrillingTransformation4|drilling_stiffness' 'src/fesa/elements/mitc4_shell.cpp' Get-Content 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp' -Tail 52 Get-Content -Raw 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine eigenvalues.txt' Get-FileHash 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp','reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine eigenvalues.txt' ``` SHA-256은 input `913b1abc604e62bc5f995bf5523924e17ea03925102a7bd22d39226ba0ea7339`, TXT `20d97ca3fd51f5b956f2c1ed7565557c68f74e61e41b913748515ef43a0f7f0b`로 P02와 같다. 설치 include에서 `rg`로 위 R04의 declarations/version/type을 확인했다. 별도 `rg -n 'MKL_INTERFACE|MKL_ILP64|lp64' cmake CMakeLists.txt`는 no-match exit `1`이며 linked ABI를 판정한 것이 아니다. Numpy/pypdf/fitz 탐색은 exit `0`, 모두 미설치였고 설치·수치 실험·외부 solver를 수행하지 않았다. Web `search_query/open/find`로 S01–S11을 조사했다. S03 PDF는 초기 검색·열기에서 `STATIC CONDENSATION`과 Eqs.(9)–(13) 텍스트를 얻었으나 후속 부분 열기는 timeout이 발생했다. S01의 수식은 보존된 원문 transcription과 현재 승인 계약도 대조했다. S02 author HTML, S04–S07 Intel 본문, S08 author PDF, S09–S11 공식 문서는 접근했다. NASA PDF/일부 publisher/feastinit 개별 URL 접근 실패를 필수 근거로 사용하지 않았다. 한 차례 tool orchestration의 quote syntax 오류는 도구 실행 전 실패했으며 수정 후 검색을 수행했다. 이런 접근 실패를 구현 또는 reference comparison 성공으로 기록하지 않는다. Owned 두 문서의 metadata/상대 링크/requirement coverage를 read-only Python here-script (`python -B -`, `pathlib`, `re`, `urllib.parse.unquote`)로 검사했다. Exit `0`, documents `2`, local links `21`, requirement coverage `26`, issues `0`이다. `git diff --check`는 exit `0`이며 다른 owner의 관리문서 LF/CRLF 경고가 출력되었다. 신규 untracked 연구 문서는 별도 Python 정적 검사로 trailing whitespace·final newline·상대 링크를 확인했다. Exit `0`, files `2`, local links `21`, issues `0`이다. `git status --short`에서 연구 두 파일과 Coordinator 관리문서 변경을 구분했으며 관련 없는 파일을 수정하거나 stage하지 않았다. CMake/CTest, Harness, FEAST runtime와 numerical reference comparison은 이 연구 단계의 범위가 아니므로 미실행이다. Source/tests/build/phase/upstream/tolerance/reference는 편집하지 않았으며 다른 owner의 변경을 되돌리지 않았다. ### r2 bounded 조사와 정적 확인 관리문서·requirements r2·기존 research 및 NR/Formulation/static 계약을 `Get-Content`와 scoped `rg`로 읽었다. 정상 조회는 exit `0`이다. 초기 `rg`의 literal `research*.md` 경로는 Windows 경로 오류였고 `rg ... docs/nonlinear-static-newton-raphson -g 'research*.md'`로 수정하여 exit `0`으로 재조회했다. 최초 patch는 context 불일치로 적용되지 않았으며 실제 문맥을 확인한 뒤 owned 두 파일에만 적용했다. Source·test·build·phase·Hook·reference와 upstream 문서는 수정하지 않았고 Git mutation은 수행하지 않았다. Web `search_query/open/find`에서 S12 공식 source와 S13 교정된 원문 및 두 correction을 열었다. 새로 인용한 primary 사실은 그 본문에서 확인했으며 검색 요약이나 타 solver의 비공개 동작을 근거로 사용하지 않았다. S01–S11 전체를 재조사하지 않았다. Read-only `python -B -` here-script로 두 문서의 owner/Feature/r2 metadata, final newline, trailing whitespace, 상대 링크 실재 및 requirements matrix ID와 coverage 표의 set equality를 검사했다. Exit `0`, documents `2`, local links `32`, required/covered IDs `27`, issues `0`이다. 별도 `python -B -`에서 `subprocess.run(['git','show','HEAD:'+path],check=True)`로 기존 연구 상세를 읽고 정규식으로 R01/R02/R04/R05 절 및 S01–S11 inventory 행을 비교했다. Exit `0`, 모든 보존 구간이 동일했다. 이는 문서 보존 확인이며 수치 검증이 아니다. `git diff --check`는 exit `0`; LF/CRLF 정보성 경고만 있었다. `git diff`/`git status --short`로 owned 두 파일과 Coordinator의 coordination 변경을 구분했으며 타 owner 변경을 보존했다. r2에서 reference 파일·hash 재조사, NR 반례·mass oracle 재계산, CMake/CTest, Harness, FEAST runtime 및 정적/eigen reference comparison은 수행하지 않았다. 원본/reference 및 기존 보고서의 성공 기록을 r2의 실행 성공으로 재분류하지 않는다. 최종 파일 hash는 반환 envelope에 제공하며 본 문서 안에 자기 hash를 기록하지 않는다.