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

157 lines
13 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.
# 연구 근거·검증 후보·미해결 항목
- Feature ID: `mitc4-shell-feast-eigen2`
- Owner: `research-agent`
- Input baseline: `requirements r1`
- Web access date: `2026-09-08`
- Main report: [research.md](research.md)
`Fact`는 이번 원문 확인, `Inference`는 수학적 적용 판단, `Candidate`는 후속 채택 후보,
`Gap`은 아직 확인하지 못한 사항이다. 수식·threshold·schema의 최종 계약을 정하지 않는다.
## Source inventory
| ID | Source / stable locator | 적용과 한계 |
| --- | --- | --- |
| S01 | Dvorkin & Bathe (1984), Engineering Computations 1, 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), Eqs.(1),(2), p.81 및 Fig.7 vibration examples | Director 운동학·5 DOF·rigid mode의 원 연구. 곡면 lumping 또는 Abaqus 내부 알고리즘의 근거가 아님. |
| S02 | Voet, Sande & Buffa (2023), CMAME 410,116033, DOI `10.1016/j.cma.2023.116033`, [author preprint v2](https://arxiv.org/html/2212.03614v2), Definition 3.7, Remark 3.8 | Scalar/일반 행렬 lumping 이론. 절댓값 row-sum theorem을 shell drilling-null 보존으로 확대하지 않음. |
| S03 | Bathe & Wilson (1973), IJNME 6,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) | Massless 제거·fill 증가. Massive DOF의 근사 condensation과 구분. |
| S04 | Intel oneMKL C Developer Reference, URL edition `2026-0`, 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 problem | Real symmetric generalized 문제의 SPD B 조건. 설치 runtime 일치 확인은 아님. |
| S05 | 같은 edition, [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[5]`, `[26]`, `[27]`, `[49]` | Count·trace·matrix checks. Standalone FEAST 또는 Fortran index와 혼동 금지. |
| S06 | 같은 edition, [Output Details](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/extended-eigensolver-output-details.html), `info` table 및 마지막 remark | 실패·empty warning·endpoint와 isolated cluster 위험. Count-empty 특수 성공 보장 문구 없음. |
| S07 | 같은 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), `m0`, `x`, `epsout`, `m`, CSR parameters | Signature·capacity·endpoint-scaled trace. Count-only 작은/null workspace 보장 문구 없음. |
| S08 | Abaqus 2025 [FREQUENCY](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-frequency.htm), optional parameters와 Lanczos data line | 공개 count·bound·normalization·SIM·acoustic syntax만 사용. FESA 내부 질량/해법의 동등성은 주장하지 않음. |
| P01 | [기존 mass](../mitc4-shell-feast-eigen/formulation-mass.md), [eigen](../mitc4-shell-feast-eigen/formulation-eigen.md), [stabilization](../mitc4-shell-feast-eigen/formulation-stabilization.md), [연구](../mitc4-shell-feast-eigen/research-evidence.md) | 현재 worktree의 후보 유도·과거 근거 locator. 이번 독립 검증 또는 승인으로 간주하지 않음. |
| P02 | [요구사항](requirements.md), [요구 근거](requirements-evidence.md), [기존 nonlinear §10.3](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential), [TOLERANCE](../TOLERANCE.md) | 요구·frozen lifecycle·acceptance 경계. 경험적 통과의 근거가 아님. |
## R01 — 질량과 lumping
**Fact S01:** 입자 변위는 nodal translation과 두 director rotation으로 보간한다.
논문은 전역 3회전 표현으로 변환 가능함을 설명하고 여섯 rigid modes를 확인한다.
**Inference:** `v=sum Ni(ui_dot+z*(theta_i_dot cross di))`,
`T=1/2 integral rho |v|² dV`이면 `M_C=integral rho H^T H dV`이며
director-parallel rotation은 질량 null이다. MITC assumed shear는 strain 보간이므로
질량에 shear correction을 추가할 근거가 없다.
**Fact S02:** 일반 행렬의 absolute-row-sum과 nonnegative 행렬의 보통 row-sum은
구분된다. **Inference:** global rotary `P=I-dd^T`에 component row-sum을 적용하면
좌표 공변성·null을 잃는다. `d=(1,1,1)/sqrt(3)`에서는 `P*ones=0`이나 rank(P)=2다.
Translation/rotation의 무차별 행 합은 질량·질량×길이·질량×길이² 차원도 섞는다.
**Candidate P01 재검토:** Consistent 계산의 `Ck_ij=integral rho Ni Nj z^k dV`,
`k=0,1,2`를 보존하고 scalar row-sum을 node별 tensor block으로 재구성한다.
`sum Nj=1`, `Ni>=0`에서 node energy는 `integral rho Ni |Gi(z) qi_dot|² dV`이므로
양의 measure에서 비음성과 drilling null을 설명한다. Centered section이라도 곡면 J의
두께 의존성 때문에 first moment가 남을 수 있다. Flat parallel director에서만
rotary factor `t²/12`와 zero translation–rotation coupling이 직접 성립한다.
일반 orbital inertia·모든 velocity energy·consistent spectrum 동일성을 요구하지 않는다.
**검증 후보:** 직사각형 면적 A의 scalar mass는 `rho*t*A/36` 곱하기
`[[4,2,1,2],[2,4,2,1],[1,2,4,2],[2,1,2,4]]`인 직접 다항 적분 oracle;
회전 scalar 배율은 `t²/12`. 곡면은 production H/J를 재호출하지 않는 독립 velocity 적분,
node block positivity·moment 관계·두 mass의 좌표 congruence·density scaling을 검사한다.
Quadrature 차수·정확 관성 보존 범위는 Formulation/NR가 확정한다.
## R02 — 실제 BC와 massless reduction
**Fact S03:** Mass가 `diag(Mp,0)`이고 massless stiffness `Kzz`가 가역이면
`Kr=Kpp-Kpz*Kzz^-1*Kzp`, `z=-Kzz^-1*Kzp*p`가 massless 방정식의 정확한 제거다.
Dense fill 가능성이 있다. **Inference:** 실제 global BC의 free injection C를 먼저
적용하여 `Mf=C^T M_L C`, `Kf=C^T K C`에서 positive/null 공간을 찾아야 한다.
기울어진 director와 partial rotation BC에서는 원래 drill 방향이 free 공간에 들어가지
않아 rotary free block이 SPD가 될 수 있다. UR3 또는 node당 1 DOF 일괄 삭제는 틀리다.
**Candidate:** 공통 nodal director, physical K의 drill null, positive scalar numerical
drilling 구조에서 `Kf Z=Z D`, `D>0`를 증명하면 `Kpz=0`인 sparse projection을 쓸 수 있다.
이 증명은 개선된 constrained pencil 대상이며 partial BC에 남는 stabilization을 지우지 않는다.
Nonlinear tangent 또는 prestressed 문제에 확장하지 않는다.
**검증 후보:** 비축정렬 director의 partial BC, null 없음/있음, 0 physical rank,
request>rank, `Kpz!=0`의 작은 manufactured pencil, 원 free residual 및 constraint 복원.
공통 K/M nullspace는 임의 pseudoinverse로 성공 처리하지 않는다.
## R03 — 공변 stabilization과 frozen nonlinear scale
**Inference:** Orthogonal tangent basis 변경에서 `Ri'=Oi^T Ri Oi`이면
`trace(Ri')=trace(Ri)`다. 개별 대각값의 최솟값은 불변량이 아니다.
**Candidate:** 초기 physical rotational blocks의 trace 평균은 force×length 차원이며
PSD physical K에 비영 회전 강성이 있으면 양수다. Trace 양수만으로 전체 PSD를 입증하지는
못한다. 정확 집계·계수·유효성 판단은 Formulation 책임이며 reference tuning은 근거가 없다.
**Inference P02:** `Pi_d=kd*gamma^T gamma/2`에서 initial kd를 고정하면
`Dkd=D²kd=0`이고 기존 residual/Hessian 구조를 유지한다. Trial에서 재선정하면 추가 미분항이
필요하다. Objective gamma와 invariant initial kd가 모두 필요하며, positive kd만으로
일반 nonlinear Hessian의 SPD가 따르지 않는다.
**검증 후보:** Geometry부터 complete K·director·scale을 독립 재계산하는 좌표 회전,
node별 tangent 변경, 지원 partial BC `NR-MFE-001`와 같은 물리 load의 static response,
rigid physical motion·physical recovery 제외, nonlinear objective potential의 1·2차 미분과
initial scale immutability. 과거 반례 수치·새 trace 후보 기대값은 이번에 재계산하지 않았다.
## R04 — FEAST count·completeness의 확인과 gap
**Fact S04/S05:** Generalized real symmetric 문제의 B는 SPD다. C-index
`fpm[49]=1`은 CSR 구간 전체 고유치 수를 `m0`로 반환하고 flag를 0으로 재설정한다.
`fpm[26]`은 CSR 검사, `[27]`은 B 양정치 검사이며 `[5]=1`은 trace stopping이다.
**Fact S07:** `epsout=|trace_i-trace_previous|/max(|emin|,|emax|)`;
`0<m0<=n`, 구간 multiplicity count 미만의 m0는 불충분하다. Count와 solve의 m0 및
allocation capacity를 분리해야 한다.
**Fact S06:** `info=0` 성공, `1` empty warning, `2` 미수렴, `3` 작은 subspace,
`4` subspace-only, `-4` B not SPD, `-5` count 오류이며 끝점이 고유치에 근접할 수 있다.
`emin>=emax`는 오류다. 매우 넓은 구간의 고립 cluster를 놓쳐 `info=1`일 수 있다.
따라서 빈 반환이나 작은 residual만으로 낮은 mode가 없음을 증명하지 못한다.
**Candidate:** SPD whitening 뒤 차원 일관적인 spectral lower bound와 bounded count
search를 연결하고, 구간 count와 solve row 수·Gram rank를 일치시킨 후 낮은 N개를 취한다.
N번째가 repeated cluster 안이면 내부 solve는 cluster 전체를 포함하고 외부 N개 identity는
count 요청을 따른다. 벡터 기저의 비유일성과 scalar multiplicity를 구분한다.
Zero modes를 양수 시작 구간으로 제외하거나 negative 값을 clamp하지 않는다.
**Gap G01:** 공식 표는 count-only empty case의 `info=0,m0=0`을 명시 보장하지 않는다.
성공 status와 count=0만 인정하는 guard는 fail-closed 후보지만, 이를 실제 runtime이 반환하여
전체 search가 진행되는지는 설치 oneMKL의 empty/occupied/endpoint 근접 probe가 필요하다.
`info=1`을 검증 없이 trusted zero count로 승격하지 않는다.
전체 spectrum 밖임을 독립 bound로 확보한 enclosing interval에서 성공 count가 n이면
전체 bracket의 완전성 근거가 된다. 선택적 empty-prefix 축소가 불가능해도 이 bracket을
유지하는 후보가 있으며, 비용·종료 조건과 채택은 Formulation이 판단한다.
**Gap G02:** Count-only의 작은/null x/e/res allocation 면제는 확인하지 못했다.
`m0=n`, `x[n*n]` 보수 allocation은 기존 후보이지 공식 최소 workspace 의무가 아니다.
설치 header/runtime와 memory·integer overflow를 구현 시 확인한다. 이 조사에서는 설치
runtime version·실행·peak memory를 측정하지 않았다.
**검증 후보:** 손으로 알려진 diagonal 및 직교 변환 SPD pencil의 첫 N개,
zero/negative/repeated/clustered/empty spectrum, N=rank, endpoint 근접, count/solve mismatch,
미수렴·allocation 실패, 원 lumped M residual·normalization·Gram. FEAST status만으로
physics/completeness를 통과 처리하지 않는다. 세부 bound·budget·threshold는 Formulation/NR 소유다.
## R05 — 지정 원본과 공개 입력 의미
**이번 직접 정적 관찰:**
`reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp`의 끝부분은
`*Step, name=Step-2, nlgeom=NO, perturbation`,
`*Frequency, eigensolver=Lanczos, sim, acoustic coupling=on, normalization=mass`,
`10, , , , ,` 및 Set-2 DOF 1~6 boundary 행이다. 같은 폴더의
`shellNL-eigen-meshfine eigenvalues.txt`는 Mode 1~10, Value와 별도 Freq를 표시한다.
Value 반복 표시는 2/3, 7/8, 9/10에 있으며 표시 precision만으로 exact degeneracy를 단정하지 않는다.
전체 keyword inventory·node count는 [요구 근거](requirements-evidence.md)의 선행 정적 관찰이다.
**Fact S08:** Lanczos 첫 data field는 requested count, 다음 두 field는 cycles/time의
frequency bounds이며 blank는 해당 bound 미설정을 뜻한다. Shift와 controls도 별도 field다.
**Inference/인계:** FESA의 FEAST backend와 source Lanczos/SIM을 분리하고 acoustic-free
옵션의 처리·warning 및 비영 unsupported field 거부를 I/O가 명시한다. 공개 Abaqus syntax는
FESA mass/stabilization 내부 동등성의 근거가 아니다.
Value-only·공통 tolerance는 사용자 계약이다. Freq 변환·TXT 보정·CSV 복제·외부 mode-shape
gate를 추가하지 않는다. NR가 family를 새로 검토하고 I/O가 source step/mode projection을 정의한다.
## 정적 확인·미실행
원 논문·공식 웹 문서 접근과 위 지정 원본 두 파일의 읽기는 수행했다. 연구 문서의 상대
파일 링크 존재와 UTF-8 replacement 문자 부재를 Python으로 검사했고 exit `0`이었다.
기존 문서·reference·코드·threshold·schema를 수정하지 않았다.
이번 산출물은 두 연구 문서뿐이며 Git은 메인이 소유한다. Build/test·FEAST runtime·외부 solver·
reference 비교·독립 NR/Physics는 연구 범위 밖으로 미실행이다. Configured vault 요청이 없어
`fem-theory-query`를 사용하지 않았다. 제외 예제의 원본·복사·cache 열람과 재사용은 없다.