docs: record MITC4 mass and FEAST research evidence
This commit is contained in:
@@ -44,3 +44,11 @@
|
|||||||
- 이유와 영향: 사용자가 최종 계산 흐름과 해석 사용 질량을 직접 명시했다. Modal residual, normalization 및 orthogonality의 기준 `M`도 실제 사용한 lumped mass이다.
|
- 이유와 영향: 사용자가 최종 계산 흐름과 해석 사용 질량을 직접 명시했다. Modal residual, normalization 및 orthogonality의 기준 `M`도 실제 사용한 lumped mass이다.
|
||||||
- 근거: 2026-09-06 사용자 답변 “고유치 해석에서는 lumped mass를 사용합니다. 따라서 고유치 해석을 할 때 consistent mass -> lumped mass -> 고유치 해석 입니다”; [Requirement owner r1 결정 evidence](requirements-evidence.md#중요한-결정)의 `MFE-OQ-002`를 해소한다.
|
- 근거: 2026-09-06 사용자 답변 “고유치 해석에서는 lumped mass를 사용합니다. 따라서 고유치 해석을 할 때 consistent mass -> lumped mass -> 고유치 해석 입니다”; [Requirement owner r1 결정 evidence](requirements-evidence.md#중요한-결정)의 `MFE-OQ-002`를 해소한다.
|
||||||
- 경계: 두 mass variant 외부 비교 또는 사용자 선택 API를 추가 요구하지 않는다. Lumping 수식은 Research/Formulation이 계약과 evidence로 구체화한다.
|
- 경계: 두 mass variant 외부 비교 또는 사용자 선택 API를 추가 요구하지 않는다. Lumping 수식은 Research/Formulation이 계약과 evidence로 구체화한다.
|
||||||
|
|
||||||
|
## MFE-ADR-005 — 요청 고유치 개수의 입력 권위
|
||||||
|
|
||||||
|
- 상태: 사용자 명시 확인; 기존 r1 요구사항의 의미 유지.
|
||||||
|
- 결정 owner: user; 기록 owner: coordinator-agent.
|
||||||
|
- 결정: 고유치 개수는 `.inp`의 `*FREQUENCY` data를 사용한다. 지정 input의 요청은 `10`개이며 reference 행수나 FEAST 내부 count 추정으로 요청 개수를 역추론하지 않는다.
|
||||||
|
- 근거: 2026-09-06 사용자 답변 “inp 파일의 고유치 개수를 사용합니다”; [r1 FEM-REQ-MITC4-EIGEN-009/015](requirements.md#requirement-verification-matrix).
|
||||||
|
- 영향: 기존 mode-count 의미의 확인이므로 contract revision은 `r1`을 유지한다. FEAST interval/subspace는 입력 요청의 낮은 N개와 multiplicity·누락 검증을 충족하기 위한 내부 처리이다. 새 입력 설정 기능을 추가하지 않는다.
|
||||||
|
|||||||
@@ -35,5 +35,7 @@ Reference artifact와 공통 정책은 수정하지 않는다. 외부 solver 실
|
|||||||
| [coordination.md](coordination.md) | coordinator-agent | r1 | workflow 상태 원본 |
|
| [coordination.md](coordination.md) | coordinator-agent | r1 | workflow 상태 원본 |
|
||||||
| [requirements.md](requirements.md) | requirement-agent | r1 | Coordinator gate pass; 26개 must 요구사항 |
|
| [requirements.md](requirements.md) | requirement-agent | r1 | Coordinator gate pass; 26개 must 요구사항 |
|
||||||
| [requirements-evidence.md](requirements-evidence.md) | requirement-agent | r1 | 원본 관찰·결정·정적 evidence audit 완료 |
|
| [requirements-evidence.md](requirements-evidence.md) | requirement-agent | r1 | 원본 관찰·결정·정적 evidence audit 완료 |
|
||||||
|
| [research.md](research.md) | research-agent | r1 | Coordinator gate pass; primary source coverage |
|
||||||
|
| [research-evidence.md](research-evidence.md) | research-agent | r1 | 수식 후보·API·한계·verification 근거 audit 완료 |
|
||||||
|
|
||||||
아직 작성되지 않은 specialist 보고서는 목록에 승인 산출물로 등록하지 않는다.
|
아직 작성되지 않은 specialist 보고서는 목록에 승인 산출물로 등록하지 않는다.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Owner: `coordinator-agent`
|
- Owner: `coordinator-agent`
|
||||||
- Input contract revision: `r1`
|
- Input contract revision: `r1`
|
||||||
- 검토 상태: requirements r1의 26개 must 요구사항 및 사용자 최종 결정 audit 완료; requirements gate pass.
|
- 검토 상태: requirements 및 research r1 gate pass; 구현용 정식화 준비.
|
||||||
|
|
||||||
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md).
|
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md).
|
||||||
지역 지침과 문서 목록은 [FEATURED_AGENTS.md](FEATURED_AGENTS.md), 상태 원본은 [coordination.md](coordination.md)를 따른다.
|
지역 지침과 문서 목록은 [FEATURED_AGENTS.md](FEATURED_AGENTS.md), 상태 원본은 [coordination.md](coordination.md)를 따른다.
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
5. Coordinator 주도 requirements부터 release-readiness까지 9개 stage를 수행하며 중요한 사안만 인터뷰·검토를 요청한다.
|
5. Coordinator 주도 requirements부터 release-readiness까지 9개 stage를 수행하며 중요한 사안만 인터뷰·검토를 요청한다.
|
||||||
6. Consistent mass를 먼저 계산하고 이를 이용하여 lumped mass를 계산하며, 고유치해석에는 lumped mass를 사용한다.
|
6. Consistent mass를 먼저 계산하고 이를 이용하여 lumped mass를 계산하며, 고유치해석에는 lumped mass를 사용한다.
|
||||||
7. `FESA_GTEST_SOURCE_DIR=C:\git\googletest`를 사용하고 작업 중 완료된 변경을 Git에 커밋한다.
|
7. `FESA_GTEST_SOURCE_DIR=C:\git\googletest`를 사용하고 작업 중 완료된 변경을 Git에 커밋한다.
|
||||||
|
8. 고유치 개수는 `.inp`의 `*FREQUENCY` data를 사용한다. 지정 모델의 요청은 `10`개이다.
|
||||||
|
|
||||||
## 범위와 acceptance
|
## 범위와 acceptance
|
||||||
|
|
||||||
@@ -40,3 +41,4 @@ Reference는 선행 preload 없는 단일 frequency step의 10모드이며 상
|
|||||||
[requirements evidence](requirements-evidence.md#원본-reference-관찰)에 있다.
|
[requirements evidence](requirements-evidence.md#원본-reference-관찰)에 있다.
|
||||||
두 질량 계산의 연결에 관한 [MFE-ADR-002](ADR.md#mfe-adr-002--mitc4-질량-이산화)는 사용자 후속 요구로 확정되었다.
|
두 질량 계산의 연결에 관한 [MFE-ADR-002](ADR.md#mfe-adr-002--mitc4-질량-이산화)는 사용자 후속 요구로 확정되었다.
|
||||||
실제 FEAST mass는 [MFE-ADR-004](ADR.md#mfe-adr-004--feast에-사용하는-질량행렬)에 따라 lumped로 승인되었다. 상세 lumping 수식은 Research/Formulation owner가 정의한다.
|
실제 FEAST mass는 [MFE-ADR-004](ADR.md#mfe-adr-004--feast에-사용하는-질량행렬)에 따라 lumped로 승인되었다. 상세 lumping 수식은 Research/Formulation owner가 정의한다.
|
||||||
|
Primary-source 근거와 적용 한계는 [research](research.md), 상세 근거는 [research-evidence](research-evidence.md)에 있으며 최종 수식·수치 기준의 승인을 대신하지 않는다.
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Owner: `coordinator-agent`
|
- Owner: `coordinator-agent`
|
||||||
- Contract revision: `r1` (사용자 최종 질량 요구를 반영한 requirements baseline)
|
- Contract revision: `r1` (사용자 최종 질량 요구를 반영한 requirements baseline)
|
||||||
- Stage: `research`
|
- Stage: `formulation`
|
||||||
- Outcome: `pass` (requirements gate)
|
- Outcome: `pass` (research gate)
|
||||||
- Next owner: `research-agent`
|
- Next owner: `formulation-agent`
|
||||||
- Attempt: `0`
|
- Attempt: `0`
|
||||||
- Completion: 미완료
|
- Completion: 미완료
|
||||||
- Failure classification / retry key: `null`
|
- Failure classification / retry key: `null`
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
| intake | 사용자 요청, 공통 운영 계약 및 관리문서 4개 생성 | pass |
|
| intake | 사용자 요청, 공통 운영 계약 및 관리문서 4개 생성 | pass |
|
||||||
| requirements r0 초안 | [requirements](requirements.md), [관찰·결정 evidence](requirements-evidence.md) | needs-user-decision; 질량 선택 미승인으로 baseline pass 보류 |
|
| requirements r0 초안 | [requirements](requirements.md), [관찰·결정 evidence](requirements-evidence.md) | needs-user-decision; 질량 선택 미승인으로 baseline pass 보류 |
|
||||||
| requirements r1 | [requirements](requirements.md), [관찰·결정 evidence](requirements-evidence.md), MFE-ADR-002/004 사용자 명시 결정 | pass; 26개 must와 owner/revision/hash 검증, 미결정 0 |
|
| requirements r1 | [requirements](requirements.md), [관찰·결정 evidence](requirements-evidence.md), MFE-ADR-002/004 사용자 명시 결정 | pass; 26개 must와 owner/revision/hash 검증, 미결정 0 |
|
||||||
|
| research r1 | [research](research.md), [primary-source 상세 근거](research-evidence.md) | pass; primary source 11개 그룹·프로젝트 근거2개, 26개 requirement coverage 및 API 보장 한계 확인 |
|
||||||
|
|
||||||
공통 문서 및 reference 파일 목록의 read-only 조사 명령은 exit code `0`으로 완료했다.
|
공통 문서 및 reference 파일 목록의 read-only 조사 명령은 exit code `0`으로 완료했다.
|
||||||
확인된 reference 파일은 `shellNL-eigen-meshfine.inp`, `shellNL-eigen-meshfine eigenvalues.txt`이며 실제 의미와 readiness는 담당 owner가 검토한다.
|
확인된 reference 파일은 `shellNL-eigen-meshfine.inp`, `shellNL-eigen-meshfine eigenvalues.txt`이며 실제 의미와 readiness는 담당 owner가 검토한다.
|
||||||
@@ -30,12 +31,26 @@ Root의 시작 Git 조사에서 worktree clean을 확인했다. 구현·build/te
|
|||||||
|
|
||||||
## 현재 bounded dispatch
|
## 현재 bounded dispatch
|
||||||
|
|
||||||
|
Research owner의 r1 `pass` 반환을 Coordinator가 감사하여 formulation으로 전이한다.
|
||||||
|
연구 기본/상세 문서의 owner, r1, source locators, Fact/Derivation/Candidate 구분, 실제 명령 exit code 및 미실행 항목을 확인했다.
|
||||||
|
연구 문서 SHA-256: `research.md` = `c044031f844798f32bedc95fd998c181f965fbac00c3ed8f594a48d0164b8956`,
|
||||||
|
`research-evidence.md` = `aa7cf3be8c3858a9358ca2bd3d117ca0e85a6a0d42c1b439bd812f4ee3d3120f`.
|
||||||
|
Coordinator local-link audit은 Feature 8문서/끊긴 링크0, exit code `0`; `git diff --check`도 exit code `0`이다.
|
||||||
|
설치 header와 공식 count 기능 존재는 runtime 또는 완전성의 자동 통과 증거가 아니다. 실제 API의 수치적 한계, endpoint/count 실패, 독립 작은 spectrum 검증이 연구 보고서에 기록되었다.
|
||||||
|
Formulation owner는 approved MITC4 geometry에 대한 consistent 적분, derived block lumping·물리 관성·massless drilling/constraints,
|
||||||
|
FEAST의 낮은 N개 계산·복원·실패 보존 및 modal evidence 식을 구현 가능한 계약으로 작성한다. 최종 numerical/reference acceptance는 다음 NR가 독립 검토한다.
|
||||||
|
|
||||||
|
### Research 및 baseline 이력
|
||||||
|
|
||||||
Requirement owner의 최종 r1 `pass` 반환을 Coordinator가 감사하여 requirements gate를 통과시키고 research로 전이한다.
|
Requirement owner의 최종 r1 `pass` 반환을 Coordinator가 감사하여 requirements gate를 통과시키고 research로 전이한다.
|
||||||
현재 SHA-256은 `requirements.md`: `1ebe65f231e49ffc15a9a1985dcdbbb7e6fc47b9e1ddb5a76f2c2489e5982690`,
|
현재 SHA-256은 `requirements.md`: `1ebe65f231e49ffc15a9a1985dcdbbb7e6fc47b9e1ddb5a76f2c2489e5982690`,
|
||||||
`requirements-evidence.md`: `2241ef8dacc7e07d40c731667e202bd9c104ae43b1a5f6eab4530a6831fea918`이다.
|
`requirements-evidence.md`: `2241ef8dacc7e07d40c731667e202bd9c104ae43b1a5f6eab4530a6831fea918`이다.
|
||||||
Coordinator 정적 audit은 Feature 6문서, 끊긴 local link 0, must rows/unique IDs `26/26`, exit code `0`; `git diff --check` exit code `0`이다.
|
Coordinator 정적 audit은 Feature 6문서, 끊긴 local link 0, must rows/unique IDs `26/26`, exit code `0`; `git diff --check` exit code `0`이다.
|
||||||
Research owner는 승인된 consistent→lumped→FEAST, 물리 관성·massless drilling·제약·최저 모드 완전성 및 독립 verification의 primary-source evidence를 수집한다.
|
Research owner는 승인된 consistent→lumped→FEAST, 물리 관성·massless drilling·제약·최저 모드 완전성 및 독립 verification의 primary-source evidence를 수집한다.
|
||||||
연구 계약은 다음 stage의 수식을 대신 승인하지 않는다. Reference 비교량, tolerance 및 사용자 mass 선택은 변경하지 않는다.
|
연구 계약은 다음 stage의 수식을 대신 승인하지 않는다. Reference 비교량, tolerance 및 사용자 mass 선택은 변경하지 않는다.
|
||||||
|
요구조건 checkpoint는 Root가 `29d88b4` (`docs: baseline MITC4 lumped-mass FEAST requirements`)로 6개 exact paths를 커밋했고 이후 clean을 확인했다.
|
||||||
|
사용자가 “inp 파일의 고유치 개수를 사용합니다”라고 확인했다. 기존 r1의 `FEM-REQ-MITC4-EIGEN-009/015`와 일치하므로 [MFE-ADR-005](ADR.md#mfe-adr-005--요청-고유치-개수의-입력-권위)에 설명을 기록하고 r1을 유지한다.
|
||||||
|
Research와 후속 Formulation/NR은 FEAST interval count 기능의 exact guarantee와 stochastic estimate를 구분하고 공식 API가 보장하는 범위를 넘는 completeness 주장을 하지 않는다.
|
||||||
|
|
||||||
### Requirements 이력
|
### Requirements 이력
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,301 @@
|
|||||||
|
# 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의 변경을 되돌리지 않았다.
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# MITC4 질량과 FEAST 고유치해석 연구
|
||||||
|
|
||||||
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
|
- Owner: `research-agent`
|
||||||
|
- Input contract revision: `r1`
|
||||||
|
- 조사일 / web access date: `2026-09-06`
|
||||||
|
- 요청 outcome: `pass`; 다음 owner: `formulation-agent`. 최종 gate와 전이는 Coordinator 소유이다.
|
||||||
|
|
||||||
|
입력은 [FEATURED_AGENTS](FEATURED_AGENTS.md), [PRD](PRD.md), [ADR](ADR.md),
|
||||||
|
[requirements r1](requirements.md), [reference 관찰](requirements-evidence.md)이다.
|
||||||
|
[프로젝트 PRD](../PRD.md), [ARCHITECTURE](../ARCHITECTURE.md), [공통 ADR](../ADR.md),
|
||||||
|
[TOLERANCE](../TOLERANCE.md), [agent 계약](../SOLVER_AGENT_DESIGN.md),
|
||||||
|
[문서 소유권](../FEATURE_DOCUMENTATION.md)을 적용한다.
|
||||||
|
Source inventory, locator, API evidence, 유도 후보와 검증 한계는
|
||||||
|
[research-evidence.md](research-evidence.md)에 둔다.
|
||||||
|
|
||||||
|
## 핵심 결과
|
||||||
|
|
||||||
|
1. 원 MITC4의 director 운동학에서 kinetic energy를 적분하면 병진 및 두 접평면 회전의
|
||||||
|
consistent mass를 구성할 수 있다. 원 논문은 consistent mass를 사용한 주파수 예제도
|
||||||
|
포함한다. Drilling은 이 보간의 nullspace다. 평판의 `rho*t`, `rho*t^3/12` 분리는
|
||||||
|
좋은 독립 oracle지만, 곡면의 thickness-dependent Jacobian까지 대체하는 일반식은 아니다.
|
||||||
|
근거: 상세 문서 `S01`, `R01`.
|
||||||
|
2. Consistent에서 얻은 물리 질량 moment를 node block으로 lumping하는 방향은
|
||||||
|
nonnegative partition of unity와 tensor 변환으로 설명할 수 있다. 전역 scalar
|
||||||
|
row-sum 또는 절댓값 row-sum을 회전 block에 그대로 적용하면 좌표 불변성과 drilling
|
||||||
|
nullspace를 잃을 수 있다. Lumping이 consistent의 모든 kinetic energy 또는 spectrum을
|
||||||
|
보존한다는 주장은 하지 않는다. 근거: `S02`, `R02`의 사실/유도 구분.
|
||||||
|
3. Homogeneous global constraint를 적용한 실제 질량의 positive/null space에서 massless
|
||||||
|
좌표를 처리해야 한다. Massless block의 강성이 가역이면 Schur complement는 선택된
|
||||||
|
lumped 질량의 유한 spectrum을 정확히 보존한다. `UR3`를 무조건 삭제하거나 인공
|
||||||
|
drilling mass를 더할 근거는 없다. 기존 공통 nodal director와 안정화 구조로 decoupling을
|
||||||
|
증명하면 일반적인 dense condensation을 피할 여지가 있다. 근거: `S03`, `R03`.
|
||||||
|
4. 설치된 oneMKL header에서 `feastinit`, `dfeast_scsrgv`를 확인했다. 공식 generalized
|
||||||
|
FEAST는 mass SPD를 요구하고 CSR interval count `fpm[49]`를 제공한다. 이 기능과
|
||||||
|
사전 spectral bound를 이용하면 bounded interval 정책의 completeness evidence를
|
||||||
|
구성할 수 있다. `info=0`만으로 최저 요청 모드가 모두 있다는 결론은 부족하다.
|
||||||
|
근거: `S04`~`S08`, `R04`.
|
||||||
|
5. Reference의 Lanczos/SIM은 source 옵션이고 FESA backend는 승인된 FEAST이다.
|
||||||
|
Acoustic-free 모델에서만 `ACOUSTIC COUPLING=ON`을 무해하게 대응할 근거가 있다.
|
||||||
|
`NORMALIZATION=MASS`는 실제 사용된 lumped 질량에서 유지한다. TXT의 각 mode는
|
||||||
|
modal frame identity에 대응하므로 family는 공통 same-frame 규칙과 함께 확정해야 한다.
|
||||||
|
근거: `S09`~`S11`, `R05`.
|
||||||
|
|
||||||
|
사용자 후속 확정대로 요청 mode 개수의 authority는 `.inp`의 `*FREQUENCY` data다.
|
||||||
|
현재 값은 10이며 reference row 수나 FEAST 내부 count로 요청수를 추론하지 않는다.
|
||||||
|
|
||||||
|
## Requirement coverage
|
||||||
|
|
||||||
|
ID는 모두 `FEM-REQ-MITC4-EIGEN-` 접두사를 가진다. 연구 외 행도 owner를 명시해 누락과
|
||||||
|
완료를 구분한다. 아래 표는 requirements matrix를 대체하지 않는다.
|
||||||
|
|
||||||
|
| IDs | 필요한 근거와 적용 범위 | 후속 owner |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `001`, `015`, `016` | `S09`, `S10`, `R05`: 무감쇠 원형상 procedure와 관찰 가능한 옵션; fail-closed exact allowlist | Formulation, I/O |
|
||||||
|
| `002`, `004` | `S01`, `P01`, `R01`: 기존 director/geometry/5-to-6 DOF 의미 보존 | Formulation |
|
||||||
|
| `003` | `S01`, `R01`: 질량의 양의 density 의존성; syntax·material 연결은 I/O 검증 대상 | I/O |
|
||||||
|
| `005`, `006`, `026` | `S01`, `S02`, `R01`, `R02`: consistent→lumped 유도 후보, 물리 rotary inertia, drilling nullspace | Formulation, NR |
|
||||||
|
| `007`, `008` | `S03`, `P01`, `R03`: constraint congruence·유한 spectrum 보존; 결정적 조립은 프로젝트 계약 | Formulation, Planning |
|
||||||
|
| `009`, `010`, `011`, `012` | `S04`~`S08`, `R04`: 실제 FEAST·count·capacity·정수/storage·failure·반복/영 모드 완전성 | Formulation, NR, Planning |
|
||||||
|
| `013`, `014`, `018` | `S01`, `S03`, `S08`, `R06`: 같은 lumped M의 residual/Gram·불변식·독립 oracle | Formulation, NR, Physics |
|
||||||
|
| `017`, `019` | `S10`, `S11`, `P01`: quantity/source identity 및 candidate 보존. 영속 schema는 연구에서 정의하지 않음 | I/O |
|
||||||
|
| `020`, `021`, `022` | `S10`, `S11`, `P02`, `R05`: Value-only, mode/frame, multiplicity; 정책 변경 없음 | NR, I/O |
|
||||||
|
| `023`, `024`, `025` | `P01`, `P02`: TDD·MSVC·정적 회귀·closure는 연구 외 실행 evidence; 설치 header만 조사 | Planning, Implementation, Physics, Release |
|
||||||
|
|
||||||
|
## Handoff와 제한
|
||||||
|
|
||||||
|
중요한 사용자 미결정이나 authoritative conflict는 발견하지 않았다. 승인된
|
||||||
|
**consistent → lumped → FEAST**는 고정이며 질량 방식 재선택이나 tolerance 변경을 제안하지 않는다.
|
||||||
|
다음 항목은 연구 누락이 아니라 해당 stage에서 확정할 계약이다.
|
||||||
|
|
||||||
|
- Formulation: `R01`~`R03`의 질량 적분·좌표 block lumping·보존 범위·constraint/nullspace
|
||||||
|
축소와 복원, `R04`의 finite interval/count/termination policy를 수식으로 확정한다.
|
||||||
|
- NR: 적분 정확도·rank/작은 차원·mass SPD·scaled modal residual/Gram 및
|
||||||
|
`R06` portfolio의 기준, reference mode/frame/family와 blocking 판정을 확정한다.
|
||||||
|
- I/O: 원본 `.inp` 옵션의 최소 mapping·진단, density와 결과 schema·source identity를 확정한다.
|
||||||
|
- Planning/Implementation: FEAST count·zero/cluster·small-N 실제 runtime와 integer/storage
|
||||||
|
변환을 검증한다. Header의 존재는 runtime 통과 evidence가 아니다.
|
||||||
|
|
||||||
|
이번 stage에서는 연구 문서 두 개만 작성했다. 원본 reference hash는 requirements evidence와
|
||||||
|
일치한다. Read-only 조사, web 접근, 정적 검사 명령과 결과는 상세 문서 끝에 있다.
|
||||||
|
C++ build/test, Harness, 외부 solver와 FESA reference 수치 비교는 stage 범위 밖이므로
|
||||||
|
미실행이며 통과로 보고하지 않는다.
|
||||||
Reference in New Issue
Block a user