Files
FESADev/docs/mitc4-shell-feast-eigen/research-evidence.md
T

302 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<m0<=n`, `m0>=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<emax`로 설정할 수 있다. 이것은 사용자 physics 결정이 아니다.
매우 넓은 구간 안의 작은 cluster를 놓칠 수 있다는 공식 주의가 있으므로 빈 반환을 곧
없는 spectrum으로 단정하지 않는다.
**Candidate bounded policy rationale:** SPD reduction/whitening 뒤 차원이 일관된 spectral
bound(예: 대칭 표준 문제의 Gershgorin bound)를 유도하면 전체 spectrum 밖의 유한 하한과
상한을 얻을 수 있다. Reference 값이나 hardcoded frequency로 구간을 정하지 않는다.
Zero를 포함하는 하한을 두고 interval count를 통해 낮은 순서의 requested N을 덮는 상한을
찾되, endpoint collision·overflow·count/solve mismatch와 시도 수를 제한한다. Count가
cluster 전체를 포함하면 m0가 requested N보다 커질 수 있으며 반드시 multiplicity를
수용한다. Sort 후 필요한 첫 N을 출력하더라도 원래 계산 multiplicity와 pairing을 유지한다.
`m0=N`이 충분하다는 가정, 매번 상한만 무한히 늘리는 정책, count 성공을 eigenpair 성공으로
취급하는 정책은 근거가 없다. Final bounds·성장/축소·cluster tie·subspace/seed·실패 정책은
Formulation/NR 소유이고 small N 및 N=physical rank도 FEAST 실제 runtime로 검증한다.
Intel S06은 `fpm[49]` 결과를 total number로 기술하며 stochastic estimate라고 설명하지
않는다. 그렇더라도 이 문서만으로 floating-point inertia/count의 모든 조건에서의 정확성이나
전체 algorithm의 completeness를 증명했다고 주장하지 않는다. S07의 endpoint/count 실패와
작은 독립 spectrum 검증을 유지한다. 다른 standalone FEAST 버전의 stochastic-count
옵션과 혼동하지 않는다. 요청 N의 외부 authority는 사용자 확정대로 `.inp` data이며
내부 count는 interval/subspace를 정하는 evidence다. TXT 행수나 count로 N을 바꾸거나
새 사용자 interval/count API를 만들지 않는다.
**Fact, S08 / 적용:** FEAST의 Rayleigh–Ritz 식은 B-orthonormal reduced vectors에서
`X^T B X=I`를 준다. 내부 벡터는 같은 lumped M으로 검증한다. Repeated eigenspace의
개별 방향과 sign은 유일하지 않으므로 vector component exact equality를 acceptance로
추가하지 않는다. Count/completeness와 residual/Gram은 서로 대체하지 않는다.
## R05 — Reference의 관찰 가능한 의미와 family
**Fact, S09/S10:** `*FREQUENCY`의 첫 값은 requested count다. Lanczos data line의
blank min/max는 별도 bound를 지정하지 않으며, 뒤 shift와 block controls의 공란을 0 입력으로
오인하지 않는다. `SIM`은 source architecture 설정이고 `NORMALIZATION=MASS`는
generalized mass 1이다. Acoustic coupling ON은 acoustic/structural coupled model에
작용한다. 적용 대상 acoustic 요소·ASI·coupling이 없는 현재 input의 옵션은 무해하게
mapping할 근거가 있으며, 실제 acoustic 모델은 승인 subset 밖이다.
**Inference/P02:** 알고리즘 지정의 FESA 해석은 source Lanczos 보존 + actual backend
FEAST이다. SIM을 FESA backend 기능으로 주장하지 않고 명시된 무해한 조합만 I/O가
진단 정책으로 고정한다. 원본의 output/restart 요청을 읽을 때에도 새 modal stress/reaction
지원으로 확대하지 않는다. 실제 prior step, preload, damping, nonzero prescribed state를
삭제하여 현재 subset처럼 실행하는 근거는 없다.
**Fact/관찰:** S10은 `lambda=omega²`와 cycles/time frequency를 구분한다. S11은
modal frame의 mode member와 mode-domain output을 정의한다. 원본 TXT는 `Frame: Mode`
1~10과 Value를 포함하고 input에는 단일 `Step-2`만 있다. 따라서 unique step + source
mode mapping이 가능하며 Freq 반올림으로 Value를 다시 계산하지 않는다.
**NR handoff:** 공통 TOLERANCE는 같은 step/frame만 family로 묶는다. 원본에 각각의 modal
frame이 있는 점을 유지하여 mode별 scalar family를 정의하는 방향을 검토한다. 단일 HDF5
table에 저장했다는 이유로 다른 source mode/frame을 하나의 family로 모으지 않는다.
Singleton family에서는 공통 RMS 규칙도 그대로 적용하며 scalar라는 이유로 생략하지 않는다.
최종 family 이름·identity·blocking 및 exact mapping은 NR/I/O가 고정한다.
Repeated Value는 서로 다른 mode identity로 보존하며 source missing/extra/duplicate/nonfinite
검사 후 공통 정책을 적용한다. Displayed repeated 값으로 실제 exact degeneracy를 단정하거나
mode shape matching으로 외부 acceptance를 넓히지 않는다.
## R06 — 독립 verification portfolio 후보
각 case의 필수 여부·수치 기준은 NR가 정한다. External reference는 지정 Value 10개뿐이다.
| Candidate | 잡아내는 오류 / 독립 기대값 | 한계 |
| --- | --- | --- |
| 직사각형 single-element mass | R01 polynomial oracle, 3 translations total `rho*A*t`, 2 rotary inertia, null drilling | 곡면 적분·semantic 연결은 검증하지 않음 |
| 곡면/왜곡 요소의 independent velocity integration | 직접 particle kinetic energy와 consistent quadratic form, R02 derived relation/양의 node block | 동일 production H/J 코드를 재호출하는 oracle는 독립성이 부족 |
| Rigid/coordinate tests | 기존 tangent rigid motion의 zero stiffness, 회전된 geometry/director/motion의 energy congruence; eigenvalue invariant | global component BC도 같은 물리 제약으로 변환할 수 있는 case를 선택; 허용되지 않은 일반 MPC를 추가하지 않음 |
| Density scaling | 두 mass가 density 배율 c에 비례, 선택된 eigenvalues가 1/c, mass-normalized vector magnitude가 1/sqrt(c) | 다른 density field의 material mapping은 별도 양성/음성 test |
| 작은 manufactured singular pencil | R03 식을 손으로 계산하여 exact finite eigenvalues·복원 residual, partial global constraint와 rank case | Element/mass 조립 correctness는 별도 검증 |
| 작은 diagonal/rotated SPD pencil | FEAST N=1/2, repeated/clustered/zero/negative case, request=rank, count/m0/interval edge 및 실패 진단 | 직접 hand matrix는 전체 procedure/reference를 대신하지 않음 |
| Modal residual / Gram / energy | Free-space `Kphi-lambda*M_L*phi`, `Phi^T*M_L*Phi=I`, `phi^T*K*phi=lambda`와 constraint 복원 | 작은 residual만으로 최저 모드 completeness를 보장하지 못함 |
| Simply-supported plate analytical limit | S01 Fig.7/Table4의 plate frequency 사례 또는 `lambda=(D/(rho*t))*((m*pi/a)^2+(n*pi/b)^2)^2`의 thin-plate Navier limit | 마지막 식은 직접 thin-plate PDE로 유도·검산할 후보; rotary/shear를 포함한 유한 두께 shell의 exact oracle로 쓰지 않음 |
| 지정 clamped plate reference | 원본 `.inp`와 TXT Value의 순서·multiplicity·family 비교; square-symmetry cluster 진단 | 비교만으로 mass·mode shape·drilling·내부 알고리즘의 correctness를 주장하지 못함 |
Modal physics는 무하중 정적 `Kphi=0`나 정적 reaction balance를 모든 eigenvector에
요구하지 않는다. Inertia와 elastic restoring force의 균형인 free residual을 검사한다.
Dimensional translation/rotation 차이는 Formulation의 congruent scaling으로 처리하고
zero mode의 residual denominator와 rank threshold는 NR가 정한다. 두께 변경에서는
membrane, bending, shear, rotary inertia가 서로 다르게 변하므로 density처럼 모든 mode에
단일 thickness power law를 강제하지 않는다.
## 실행 evidence와 미실행
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의 변경을 되돌리지 않았다.