446 lines
44 KiB
Markdown
446 lines
44 KiB
Markdown
# 이전 MFE 요구사항과 결정 근거
|
||
|
||
MFE 요구사항 ID·승인 근거는 이전 baseline의 이력이다. 현재 MFE2 요구와의 대응을 구분한다.
|
||
|
||
<a id="requirements"></a>
|
||
|
||
<a id="requirements--mitc4-shell-mass-matrix와-feast-고유치해석-요구사항"></a>
|
||
## MITC4 Shell Mass Matrix와 FEAST 고유치해석 요구사항
|
||
|
||
- Feature ID: `mitc4-shell-feast-eigen`
|
||
- Input contract revision: `r2`
|
||
- 검토 상태: 사용자 승인 stabilization 개선·정적/eigen 재검증 범위를 반영한 baseline gate 검토 요청.
|
||
- 요청 outcome: `pass`; workflow 전이와 최종 gate 판정은 Coordinator 소유.
|
||
|
||
지역 입력은 [FEATURED_AGENTS](FEATURED_AGENTS.md), [PRD](PRD.md), [ADR](ADR.md)이다.
|
||
[프로젝트 지침](../../AGENTS.md), [제품 요구사항](../PRD.md),
|
||
[ARCHITECTURE](../ARCHITECTURE.md), [공통 ADR](../ADR.md),
|
||
[TOLERANCE](../TOLERANCE.md), [agent 계약](../SOLVER_AGENT_DESIGN.md),
|
||
[문서 소유권](../FEATURE_DOCUMENTATION.md)을 적용한다.
|
||
Reference 관찰, 원문 경로·hash, 중요한 결정의 대안과 명령 evidence는
|
||
[requirements-evidence.md](requirements.md#requirements-evidence)에 둔다.
|
||
|
||
<a id="requirements--핵심-결과와-범위"></a>
|
||
### 핵심 결과와 범위
|
||
|
||
지정된 reference는 이름에 `shellNL`이 있지만 선행 정적 해석 없이 원형상에서 수행하는
|
||
단일 무감쇠 선형 고유진동 해석이다. `Step-2`에서 10개 모드를 요청하고 모든 외곽 절점의
|
||
DOF 1~6을 고정한다. 기존 TXT에는 고유치 `Value`와 주파수 `Freq`가 분리되어 있으며
|
||
Mode 1~10을 일대일 식별할 수 있다. 파일 형식 때문에 CSV를 새로 만들지 않는다.
|
||
|
||
사용자 후속 요구로 consistent mass를 먼저 계산하고 이를 이용하여 lumped mass를 계산한 뒤
|
||
FEAST 고유치해석에 lumped mass를 사용한다. 이 계산 흐름과 reference baseline이 확정되었다.
|
||
나머지는 명시된 사용자 요구, 실제 reference와 기존 승인된 shell 계약에서 도출한다.
|
||
|
||
- 원형상·무응력 상태의 단일 `*FREQUENCY` procedure, homogeneous essential constraints,
|
||
실수 무감쇠 고유치와 이에 대응하는 내부 modal vectors.
|
||
- 기존 MITC4의 막·굽힘·횡전단, 단일층 균질 등방성 탄성, centered constant-thickness
|
||
section, geometry-derived director, source `S4`/`S4R`와 전역 6 DOF 의미를 재사용한다.
|
||
- Numerical drilling stabilization은 사용자 승인에 따라 좌표 공변적으로 개선한다.
|
||
영향받는 기존 선형·비선형 정적해석과 새 eigen 해석을 재검증하며 물리 kernel의 변경으로 확대하지 않는다.
|
||
- 활성 재료마다 양의 유한한 일정 체적 밀도를 해석 모델에 연결한다. 질량은 병진과
|
||
director 접평면의 두 물리 회전 관성을 나타내며 drilling을 물리 관성으로 승격하지 않는다.
|
||
- Consistent mass와 그 행렬에서 유도한 lumped mass를 모두 계산·검증한다. Lumping 방식과
|
||
좌표/회전 block 처리는 Research/Formulation이 정의하며 두 spectrum의 동일성을 요구하지 않는다.
|
||
- FEAST, modal residual·mass normalization·orthogonality와 외부 고유치 비교는 동일한
|
||
derived lumped mass를 기준으로 한다. Consistent는 계산 원본과 내부 질량 검증에 유지한다.
|
||
- Mode count를 지정하는 최소 입력 subset과 MKL FEAST 실행을 end-to-end로 연결한다.
|
||
Reference의 blank frequency bounds·shift·Lanczos control fields를 그대로 처리한다.
|
||
- 공식 HDF5에 식별 가능한 고유치 결과를 기록하고 내부 modal correctness 증거를 남긴다.
|
||
외부 acceptance는 지정 reference의 고유치만 사용한다.
|
||
|
||
제외: prestress/선행 nonlinear state 전달, 다중 step, initial stress, geometric stiffness의
|
||
새 의미, 재료비선형, 감쇠·복소 고유치, 좌굴, 강제진동·시간적분, acoustic coupling,
|
||
혼합 beam/solid/shell 모델, concentrated/nonstructural mass, composite/offset/variable
|
||
thickness, 기존 미지원 shell geometry, residual modes 및 modal stress/reaction recovery.
|
||
사용자가 지정하지 않은 Lanczos/AMS 대체 backend, reference 생성·수정·복원과 외부 배포도 제외한다.
|
||
별도 frequency interval/shift 사용자 기능은 현재 최소 subset에 포함하지 않는다.
|
||
|
||
<a id="requirements--의미단위소유권"></a>
|
||
### 의미·단위·소유권
|
||
|
||
| 항목 | 요구되는 의미와 경계 |
|
||
| --- | --- |
|
||
| 질량 입력 | `rho`: mass/length³; `t`: length. 단위계는 사용자 일관 단위이며 SI 추론·자동 변환 없음 |
|
||
| 질량/관성 | 병진 질량 차원 mass, 회전 관성 mass·length²; 혼합 DOF block의 차원은 Formulation이 명시 |
|
||
| 고유치 | `lambda = omega²`, 차원 1/time²; 좌표계에 불변인 scalar, cycle frequency와 별개 |
|
||
| 주파수 | `f = sqrt(lambda)/(2*pi)`, cycles/time; 양의 고유치에서 의미 확인용 파생량이며 외부 비교 대체량 아님 |
|
||
| 모드 | Scalar mode identity와 global DOF/modal vector identity 분리; 진폭은 응답변위가 아닌 normalization convention |
|
||
| 모델과 equation | Domain은 density·section·step 정의, AnalysisModel은 non-owning view, DofManager는 DOF·equation·pattern 소유 |
|
||
| procedure/backend | Eigen procedure는 자체 state·solve·검증·commit 소유; FEAST vendor 타입과 자원은 private adapter 소유 |
|
||
| 결과 | Results는 물리량·identity, I/O Definition은 additive HDF5 schema·modal evidence projection과 진단 소유 |
|
||
|
||
요구사항은 stiffness/질량 조립식, massless drilling 처리식, FEAST 탐색 구간·subspace 및
|
||
solver parameter를 선결정하지 않는다. 특히 기존 선형 정적 `Run()`에 eigen 분기를 누적하거나
|
||
정적 reaction 의미를 modal 결과로 재사용해서는 안 된다.
|
||
|
||
<a id="requirements--requirement-verification-matrix"></a>
|
||
### Requirement Verification Matrix
|
||
|
||
모든 행은 `must`이고 acceptance는 해당 행의 요구와 검증 조건을 모두 만족하는 것이다.
|
||
출처 `U`는 [Feature PRD](PRD.md)의 사용자 요구, `R`은 [관찰 evidence](requirements.md#requirements-evidence),
|
||
`P`는 위 공통 기준, `L`은 [기존 MITC4 요구사항](../linear-static-mitc4-shell/requirements.md)과
|
||
[정식화](../linear-static-mitc4-shell/formulation.md), `N`은
|
||
[기존 nonlinear I/O](../nonlinear-static-newton-raphson/io.md)의 공통 경로·failure 계약을 뜻한다.
|
||
`NR`은 Numerical Review를 뜻하며 numerical threshold/metric/family 결정은 NR 소유이다.
|
||
아래에서 “승인 기준”은 구현 전에 해당 owner가 명시해 gate를 통과해야 하며 실행 결과로 조정하지 않는다.
|
||
|
||
| Requirement ID | Shall statement | 측정 가능한 acceptance / verification method | 출처·후속 owner |
|
||
| --- | --- | --- | --- |
|
||
| FEM-REQ-MITC4-EIGEN-001 | 솔버는 선행 상태 없는 원형상 무응력 모델의 단일 무감쇠 선형 고유진동 procedure를 실행해야 한다. | 지정 reference가 한 frequency step으로 선택되고 static/nonlinear preload 경로를 호출하지 않음; procedure 통합 테스트 | U, R, P; Formulation, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-002 | `S4`와 `S4R`는 기존 FESA MITC4 물리 kernel·director·전역 6 DOF 의미를 유지하고 numerical stabilization만 Requirement 027에 따라 개선해야 한다. | Physical contribution·mapping·recovery 의미 보존, source type만 다른 모델은 같은 mass·개선된 stiffness/eigen 경로와 별도 source metadata; 개선 전 전체 K의 수치 동일성을 요구하지 않음 | U r2, L; Formulation, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-003 | 모든 활성 shell의 밀도는 해당 section이 참조하는 material에서 하나의 finite `rho > 0`로 결정되어야 한다. | 여러 material의 올바른 연결 및 missing/duplicate/unresolved/nonpositive/nonfinite/dependent density 거부; semantic 양성·음성 테스트 | U, R, P; I/O |
|
||
| FEM-REQ-MITC4-EIGEN-004 | 질량 계산은 기존 shell의 유효한 geometry·director와 양의 centered constant thickness를 사용해야 한다. | 기존 geometry/material/section 검증 재사용과 서로 다른 두께·밀도 연결 테스트; 부적합 요소를 질량 zero로 우회하지 않음 | L, P; Formulation, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-005 | 솔버는 MITC4 보간에 일관된 consistent mass를 계산하고 derived lumped mass 계산의 원본으로 제공해야 한다. | 독립 consistent mass/kinetic-energy oracle와 일치하고 같은 geometry/material/section의 consistent 결과가 Requirement 026의 입력임을 확인; 원본을 lumping으로 덮어쓰지 않음 | U r1, P; Research, Formulation, NR |
|
||
| FEM-REQ-MITC4-EIGEN-006 | 질량은 3개 병진 및 2개 director-tangent 회전의 물리 관성을 포함하고 numerical drilling에 물리 관성을 부여하지 않아야 한다. | Rigid translation의 총질량, 회전 관성·kinetic energy, director-parallel null action을 독립 검사; NR의 scale-aware 기준 | L, P; Research, Formulation, NR |
|
||
| FEM-REQ-MITC4-EIGEN-007 | 질량·강성은 동일한 physical DOF와 constraint 의미로 결정적으로 조립되어야 한다. | Scatter/source order, 대칭 구조, sequential/병렬 reduction 및 constrained motion 검증; 행렬 및 재실행 테스트 | P, L; Formulation, Planning |
|
||
| FEM-REQ-MITC4-EIGEN-008 | Massless numerical 좌표 처리는 개선된 stabilization과 lumped mass에 실제 global BC를 적용한 원 pencil의 유한 spectrum을 보존하며 FEAST admissibility를 만족해야 한다. | 지원 partial BC를 포함해 축소 전후 spectrum·constraint·원 free DOF residual 검증; 개선 전 K와의 spectrum 동일성 또는 consistent→lumped 동일성을 요구하지 않음. 인공 mass·임의 cutoff·clamp 금지 | U r2, P, L; Research, Formulation, NR |
|
||
| FEM-REQ-MITC4-EIGEN-009 | Mode-count 요청은 물리 spectrum의 낮은 순서에서 지정 개수의 고유쌍을 계산해야 한다. | Reference는 10개; 작은 독립 spectrum에서 첫 N개·multiplicity·zero rigid-mode case·요청수 초과/빈 물리계의 명시적 실패 확인. 부적합 음수 spectrum을 양수화하지 않음 | U, R; Formulation, NR, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-010 | 고유치 결과는 오름차순의 고유한 mode identity를 가지고 반복 고유값의 multiplicity를 보존해야 한다. | Repeated/clustered spectrum에서 row 수·순위·identity 및 재현성 확인; 같은 eigenvalue 값은 duplicate identity 오류가 아님 | R, P; NR, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-011 | 실제 고유치 계산은 consistent mass에서 유도한 lumped mass를 MKL FEAST에 사용해야 한다. | Consistent→lumped→FEAST 연결과 real adapter의 질량 입력·backend identity 확인; source Lanczos가 backend를 변경하지 않고 consistent나 다른 질량으로 reference에 맞추지 않음 | U r1; Research, Formulation, Planning |
|
||
| FEM-REQ-MITC4-EIGEN-012 | FEAST 실패·미수렴·불충분 모드·비유한 eigenpair를 성공 결과로 반영해서는 안 된다. | 각 failure injection에서 안정된 diagnostic과 불완전 result 미공개 확인; bounded termination 테스트 | P; Formulation, I/O, Planning |
|
||
| FEM-REQ-MITC4-EIGEN-013 | 성공 eigenpair는 FEAST에서 사용한 동일 lumped mass로 modal residual·mass normalization·orthogonality 검증을 통과해야 한다. | 내부 modal vectors로 독립 residual/Gram 검사를 수행하고 잘못된 mass variant·eigenvector·mode pairing을 검출; NR가 threshold·scale 고정 | U r1, P, R; Formulation, NR, Physics |
|
||
| FEM-REQ-MITC4-EIGEN-014 | 두 질량과 개선된 stabilized eigen 해석은 symmetry, kinetic-energy, coordinate invariance, rigid-body 및 density scaling 검증을 통과해야 한다. | 독립 mass oracle·invariants 및 동일 물리 BC를 보존하는 지원 partial-rotation 사례에서 재계산한 complete K와 eigen spectrum의 좌표 검증 필수. NR-MFE-001 반례를 필수 통과 사례로 포함하며 full-free/full-clamp만으로 대체하지 않음; density scaling 및 각 mass 고유 energy oracle 유지; NR가 기준 고정 | U r2, P, L; Research, Formulation, NR, Physics |
|
||
| FEM-REQ-MITC4-EIGEN-015 | 지정 `.inp`의 `*FREQUENCY` 요청과 부수 옵션은 보존된 입력에서 명시적으로 mapping되어야 한다. | 원본 파일 변경 없이 실행; requested count와 mass normalization 유지; Lanczos/SIM 옵션의 FESA 처리 및 acoustic-free 모델에서 `ACOUSTIC COUPLING=ON`의 무해성/진단을 I/O에 명시 | U, R, P; Research, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-016 | 승인 subset 밖의 모델·절차·옵션은 의미를 삭제하거나 근사해 실행하지 않고 진단해야 한다. | Exclusion inventory의 양성/음성 테스트; acoustic 요소, preload, damping, 비영 prescribed base state, 미지원 frequency fields 등의 silent no-op 없음 | P, R; I/O, Planning |
|
||
| FEM-REQ-MITC4-EIGEN-017 | 공식 HDF5는 source step·mode identity와 고유치의 물리량·단위·실제 backend·사용 질량 variant를 식별할 수 있어야 한다. | 입력 sibling `<stem>_results.h5`에서 10개 reference 대응 고유치와 선택 질량을 복원; additive schema/self-check 테스트. Mode-vector 영속 projection 필요성·layout은 I/O 소유 | U, P, N; I/O |
|
||
| FEM-REQ-MITC4-EIGEN-018 | 내부 modal vectors는 global physical DOF·source identity와 연결되고 외부 mode-shape acceptance로 사용되지 않아야 한다. | Constraint 복원·source renumbering·mass normalization과 내부 verification evidence 재현; 비교기가 vector reference 파일을 요구하지 않음 | U, P; Formulation, NR, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-019 | State와 final HDF5는 검증된 candidate만 반영하고 제어된 실패에서 기존 유효 결과를 보존해야 한다. | Solve·validation·writer/finalization 실패 후 이전 state/final hash 보존; live log는 기존 `<stem>_log.txt` 독립 lifecycle 유지 | P, N; Formulation, I/O, Planning |
|
||
| FEM-REQ-MITC4-EIGEN-020 | 새 eigen 외부 검증은 지정 원본 TXT의 `Value`만 derived lumped mass로 계산한 FESA HDF5 고유치와 비교해야 한다. | 같은 지정 `.inp`·TXT, Mode 1~10 포함; mass variant 사후 선택 금지. Eigen `Freq`·변위·회전·stress·reaction·mode shape 외부 gate를 추가하지 않음. 승인된 기존 static 회귀는 별도 Requirement 024의 기존 계약 사용 | U r1/r2, R; NR, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-021 | 비교기는 required identity의 missing/extra/duplicate/nonfinite와 quantity/schema 오류를 tolerance 전에 거부해야 한다. | 행 재정렬은 같은 mapping, mode label 중복·누락·추가·비유한 `Value`는 실패; 같은 값의 다른 mode는 허용; comparator 음성 테스트 | P, R; NR, I/O, Planning |
|
||
| FEM-REQ-MITC4-EIGEN-022 | 외부 고유치 acceptance는 공통 `docs/TOLERANCE.md`의 scale·row·RMS·zero-scale 정책을 적용해야 한다. | NR가 mode/frame identity·family·blocking 분류를 고정하고 승인된 모든 고유치 비교 통과; frequency로 대체하거나 tolerance를 조정하지 않음 | U, P; NR, I/O |
|
||
| FEM-REQ-MITC4-EIGEN-023 | 새로운 동작은 관찰된 RED 이후 구현하고 MSVC x64 Debug CMake/CTest에서 검증해야 한다. | 대응 C++ tests, RED/GREEN/focused/full evidence, 새 warning 없음, 실제 FEAST runtime/reference evidence. 사용자 지정 `FESA_GTEST_SOURCE_DIR=C:\git\googletest`를 검증 환경에 사용 | U r1, P; Planning, Implementation |
|
||
| FEM-REQ-MITC4-EIGEN-024 | 기존 선형·비선형 정적해석은 승인된 stabilization 개선 외의 입력·출력·물리 의미를 보존하고 영향받는 correctness·reference 회귀를 통과해야 한다. | 상세 evidence의 필수 static portfolio와 기존 comparison identity·판정 정책을 유지해 새 evidence 생성; tangent/선형극한/평형·reaction/energy/state 검증. 개선 전 결과의 bitwise equality를 요구하지 않고 density 없는 기존 정적 모델도 유지 | U r2, P, L, N; Formulation, NR, Planning, Implementation, Physics |
|
||
| FEM-REQ-MITC4-EIGEN-025 | 완료 판정은 동일 revision의 implementation·독립 physics·release evidence를 요구해야 한다. | Requirement 전 행에 evidence 연결, 필수 미실행/실패/stale 항목 0, 내부 readiness와 외부 release 권한 구분 | U, P; Coordinator, Physics, Release |
|
||
| FEM-REQ-MITC4-EIGEN-026 | 솔버는 계산된 consistent mass에서 lumped mass를 유도하고 승인된 질량·관성 보존 계약을 검증해야 한다. | 유도 관계·독립 lumping oracle·총 병진 질량 보존, 차원/대칭성/물리 kinetic-energy 비음성, 물리 회전 관성과 drilling nullspace 의미 검사. Lumping 수식·좌표 block 처리·정확한 관성 불변식과 threshold는 Formulation/NR가 고정 | U r1, P, L; Research, Formulation, NR |
|
||
| FEM-REQ-MITC4-EIGEN-027 | 개선된 numerical drilling stabilization은 같은 물리 모델의 좌표·접평면 기저 선택에 공변적이고 기존 비물리 역할을 유지해야 한다. | 독립 재계산한 stabilization/complete K의 congruence, finite·대칭·양의 numerical stabilization, 물리 rigid modes 보존, physical recovery 제외 및 결정론 검증. Partial BC의 NR-MFE-001과 대응 정적 response를 필수 통과시키며 기존 static의 동일 scale 사용 경로도 정합 검증; 수식·threshold는 Formulation/NR 소유 | U r2, L; Research, Formulation, NR, Planning, Physics |
|
||
|
||
<a id="requirements--r2의-기존-계약-대체-범위"></a>
|
||
### r2의 기존 계약 대체 범위
|
||
|
||
[MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합)의 승인으로
|
||
기존 `FESA-REQ-LSMITC4-034`의 basis-dependent `min(R+)` scale 선정과 `056` 중 그
|
||
옛 공식 자체를 검증하도록 한 부분을 본 feature의 `027` 및 후속 개선 수식으로 대체한다.
|
||
같은 scale을 사용하는 [nonlinear formulation §10.3](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential)도
|
||
그 scale 선정 부분의 영향 대상이다. Nonlinear objective drilling 좌표·potential의 의미,
|
||
초기 reference에서 scale을 고정하는 lifecycle 및 일관 residual/Hessian 계약은 유지한다.
|
||
물리 strain/material/section/director, 양의 비물리 stabilization, physical recovery 제외,
|
||
기존 지원 BC·source identity·output 의미는 대체하지 않는다. 기존 feature 문서는 읽기 전용
|
||
이력으로 보존하며 상세 대체 수식과 검증 trace를 이 feature의 후속 owner가 작성한다.
|
||
|
||
필수 static 회귀의 기존 case·identity·policy는
|
||
[requirements evidence의 r2 재검증 범위](requirements.md#requirements-evidence--r2-승인-범위와-정적-재검증)를 따른다.
|
||
새 eigen reference의 Value-only를 기존 정적 reference 요구의 삭제로 해석하거나,
|
||
정적 U/UR 회귀를 eigen mode-shape 비교로 확대하지 않는다.
|
||
|
||
<a id="requirements--결정과-handoff"></a>
|
||
### 결정과 handoff
|
||
|
||
`MFE-OQ-001`은 사용자 후속 결정으로 해결되었다. Consistent를 계산하고 이로부터 lumped를
|
||
계산하므로 두 계산은 모두 필수다. 기존 양자택일 요구는 대체되었다.
|
||
`MFE-OQ-002`도 사용자 명시 결정으로 해결되었다. **Consistent→lumped→FEAST** 흐름을
|
||
사용하며 external eigenvalue baseline과 내부 residual·normalization·orthogonality는
|
||
동일 lumped mass에 대응한다. [사용자 결정 근거](requirements.md#requirements-evidence--중요한-결정)를 따른다.
|
||
질량·backend·mode count 선택은 해결되었으며 다시 질문하지 않는다.
|
||
|
||
`MFE-OQ-003`은 사용자 명시 승인으로 해결되었다. 좌표 공변적인 stabilization 개선과
|
||
영향받는 기존 정적/eigen 재검증을 r2에 포함하며 partial BC 지원·invariance acceptance를
|
||
축소하지 않는다. [기존 반례·판단 이력과 승인 delta](requirements.md#requirements-evidence--nr-mfe-001-requirements-intent-검토)를
|
||
보존한다. 현재 요구사항의 중요한 미결정은 없고 NR 반례의 실제 해소·새 수치 통과는 아직 미검증이다.
|
||
|
||
Research/Formulation은 consistent→lumped 유도 및 각 관성 불변식, lumped 질량과 massless drilling, supported global
|
||
constraints의 양립, 실제 FEAST admissibility와 낮은 모드 추출의 완전성을 다룬다.
|
||
Stabilization의 좌표 공변성과 static scale 사용 경로를 정합시키고 개선된 pencil에서 기존
|
||
massless reduction 증명이 유지되는지 재검토한다. 이전 decoupling 증명을 그대로 승인으로 재사용하지 않는다.
|
||
NR는 independent physics portfolio와 모든 수치 기준, TXT readiness, mode/frame/family mapping을
|
||
확정한다. 특히 각 mode가 별도 Abaqus frame인 사실을 공통 family 규칙과 함께 검토한다.
|
||
I/O는 필요한 최소 syntax, no-op/diagnostic, source/result identity와 additive output을 정의한다.
|
||
기존 영속 계약의 비호환 변경이나 새로운 물리 근사가 필요한 경우만 다시 critical로 반환한다.
|
||
|
||
사용자는 작업 중 Git 커밋을 승인했다. Root가 사용자 수정 `AGENTS.md`와 완료 문서 checkpoint를,
|
||
Harness Executor가 기존 계약에 따라 구현·phase 커밋을 소유하며 이 specialist는 커밋하지 않는다.
|
||
|
||
이번 산출물은 문서 요구사항과 read-only evidence 조사이다. 구현·CMake·CTest·Harness·외부
|
||
solver·수치 reference comparison은 수행하지 않았으며 통과로 보고하지 않는다.
|
||
|
||
<a id="requirements-evidence"></a>
|
||
|
||
<a id="requirements-evidence--mitc4-eigen-요구사항의-관찰-evidence와-결정"></a>
|
||
## MITC4 eigen 요구사항의 관찰 evidence와 결정
|
||
|
||
- Feature ID: `mitc4-shell-feast-eigen`
|
||
- Input contract revision: `r2`
|
||
- 기본 보고서: [requirements.md](requirements.md#requirements)
|
||
- 관찰일: `2026-09-06`
|
||
|
||
<a id="requirements-evidence--원본-reference-관찰"></a>
|
||
### 원본 reference 관찰
|
||
|
||
| Artifact | 실제 경로 | SHA-256 |
|
||
| --- | --- | --- |
|
||
| Input | [shellNL-eigen-meshfine.inp](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp) | `913b1abc604e62bc5f995bf5523924e17ea03925102a7bd22d39226ba0ea7339` |
|
||
| Eigenvalues | [shellNL-eigen-meshfine eigenvalues.txt](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine%20eigenvalues.txt) | `20d97ca3fd51f5b956f2c1ed7565557c68f74e61e41b913748515ef43a0f7f0b` |
|
||
|
||
| 관찰 항목 | 파일에서 읽은 사실 |
|
||
| --- | --- |
|
||
| 모델 | `Part-1`, identity instance `Part-1-1`; 729 nodes, 676 `S4` elements |
|
||
| 좌표 | x/y 각각 `[-5,5]`, 모든 z=`0`; 26×26 element mesh의 사각 평판 |
|
||
| Section | line 1421 `*Shell Section, elset=Set-1, material=Material-1`; data `0.5, 5`; offset/composite 없음 |
|
||
| Material | lines 1455~1459: `Material-1`, `*Density`=`2700.`, `*Elastic`=`2.1e+11, 0.3` |
|
||
| Constraint | lines 1464~1470: `Set-2`의 DOF 1~6, 값 생략으로 homogeneous constraint |
|
||
| Procedure | lines 1475~1477: 유일한 `*Step, name=Step-2, nlgeom=NO, perturbation`; `*Frequency, eigensolver=Lanczos, sim, acoustic coupling=on, normalization=mass`; `10, , , , ,` |
|
||
| 선행 이력 | 이전 Step/Static/Initial Conditions/load 없음; 이름 `shellNL`이나 `Step-2`로 preload를 추론하지 않음 |
|
||
| 부수 요청 | `*Restart, write, frequency=0`, field/Node PRESELECT, history/Energy ALL. 모델은 acoustic element/coupling constraint를 포함하지 않음 |
|
||
| TXT | 10개 row; 각 row에 `Frame: Mode <id>: Value = <lambda> Freq = <f> (cycles/time)` |
|
||
| Identity | mode IDs는 정확히 1~10, 유일하며 누락 없음; 모든 Value/Freq finite·positive |
|
||
| 반복값 | modes `(2,3)`, `(7,8)`, `(9,10)`의 표시 Value가 각각 같음; mode identity 중복과 구분 필요 |
|
||
|
||
관찰 Value 목록은 다음과 같다. 원본 표시 정밀도를 확장·보정하지 않는다.
|
||
|
||
| Mode | Value |
|
||
| --- | ---: |
|
||
| 1 | 2.19507E+05 |
|
||
| 2 | 8.85523E+05 |
|
||
| 3 | 8.85523E+05 |
|
||
| 4 | 1.85534E+06 |
|
||
| 5 | 2.74023E+06 |
|
||
| 6 | 2.77515E+06 |
|
||
| 7 | 4.14941E+06 |
|
||
| 8 | 4.14941E+06 |
|
||
| 9 | 6.73379E+06 |
|
||
| 10 | 6.73379E+06 |
|
||
|
||
관찰값으로 `sqrt(Value)/(2*pi)`와 표시 `Freq`를 계산상 대조한 최대 상대차는
|
||
`1.6946487122851045e-05`이다. 이것은 quantity 식별을 돕는 교차 확인이며 FESA comparison이나
|
||
새 허용오차 판정이 아니다. `Value`는 `omega²`, `Freq`는 cycles/time이라는 공개 정의와
|
||
일관된다. 단위계는 원문에 지정되지 않았고 수치만 보고 SI라고 단정하지 않는다.
|
||
|
||
TXT에는 step 이름이 별도로 없지만 입력은 정확히 한 개 frequency step이며 mode identity와
|
||
Value가 완전하다. 따라서 지정 input의 유일한 `Step-2`에 결합하는 deterministic projection은
|
||
가능하다. 최종 readiness와 frame/family mapping은 NR·I/O가 소유한다. CSV가 없다는 이유로
|
||
reference를 변환하거나 새 metadata/provenance를 요구할 근거는 없다. 사용자 지정 경로를
|
||
우선하는 feature-specific artifact 선택이며 공통 reference 문서나 다른 feature 계약은 바꾸지 않는다.
|
||
|
||
<a id="requirements-evidence--중요한-결정"></a>
|
||
### 중요한 결정
|
||
|
||
<a id="requirements-evidence--mfe-oq-001--두-질량-계산-관계-해결"></a>
|
||
#### MFE-OQ-001 — 두 질량 계산 관계: 해결
|
||
|
||
사용자는 `2026-09-06` 후속 답변에서 “mass matrix는 consistent mass를 계산하고 이를
|
||
이용해서 lumped mass를 계산합니다.”라고 명시했다. Consistent 원본 계산과 derived lumped
|
||
계산이 모두 필수이며 이전 둘 중 하나의 계산만 선택하는 초안은 대체되었다.
|
||
관련 결정은 [MFE-ADR-002](ADR.md#mfe-adr-002--mitc4-질량-이산화), 요구사항은
|
||
`FEM-REQ-MITC4-EIGEN-005`, `026`이다. Lumping 알고리즘은 사용자 지정이 없으므로
|
||
Research/Formulation이 질량 보존·물리 회전 관성·좌표 변환·drilling 경계를 명시하고 NR가 검토한다.
|
||
모든 속도장의 kinetic energy나 두 spectrum의 exact equality를 보존 조건으로 추가하지 않는다.
|
||
|
||
<a id="requirements-evidence--mfe-oq-002--feast와-reference-baseline의-질량-해결"></a>
|
||
#### MFE-OQ-002 — FEAST와 reference baseline의 질량: 해결
|
||
|
||
- 상태: **사용자 명시 결정으로 해결**.
|
||
- 관련 요구사항: `FEM-REQ-MITC4-EIGEN-008`, `011`, `013`, `017`, `020`.
|
||
NR가 검증; Requirement Agent가 본 r1 baseline에 반영.
|
||
|
||
사용자는 추가 답변에서 “고유치 해석에서는 lumped mass를 사용합니다. 따라서 고유치 해석을
|
||
할 때 consistent mass -> lumped mass -> 고유치 해석 입니다”라고 명시했다.
|
||
따라서 FEAST와 authoritative reference baseline은 derived lumped mass를 사용하며
|
||
동일 lumped mass로 residual·mass normalization·orthogonality를 검증한다.
|
||
Consistent는 유도 원본과 내부 mass/energy 검증에 유지한다. Consistent eigen 해석,
|
||
두 variant의 외부 비교 및 runtime 질량 선택 API는 현재 요구가 아니다.
|
||
이 결정은 수치 tolerance 통과나 정확도 우위의 evidence를 대신하지 않는다.
|
||
|
||
Drilling은 기존 승인 shell 계약에서 비물리 안정화 좌표이다. 인공 drilling inertia를
|
||
추가하거나 두 물리 회전 관성을 생략하는 대안을 새 사용자 옵션으로 발명하지 않는다.
|
||
Massless drilling을 그대로 generalized FEAST에 넣을 수 있다는 가정도 하지 않는다.
|
||
FEAST의 SPD 조건과 shell 질량 nullspace의 양립은 Research/Formulation이 물리 spectrum과
|
||
constraints를 보존하는 방식으로 해결해야 한다. 이 문서는 elimination/projection/condensation
|
||
식을 승인하지 않으며, 새로운 물리 근사가 필수라는 evidence가 생기면 해당 owner가 반환한다.
|
||
|
||
<a id="requirements-evidence--nr-mfe-001-requirements-intent-검토"></a>
|
||
### NR-MFE-001 requirements intent 검토
|
||
|
||
이 절의 반례와 승인 전 판단은 **r1 이력**이다. 사용자 승인으로 개선 범위를 확정한 현재
|
||
r2 계약은 아래 [r2 승인 범위와 정적 재검증](requirements.md#requirements)을 따른다.
|
||
|
||
- Input contract revision: `r1` 유지. 이번 bounded 검토는 기존 `002/008/014`의 정합만 다룬다.
|
||
- 발견 근거: [Numerical Review](numerical-review.md#numerical-review--blocking-finding),
|
||
[NR 소유 직접 계산 반례](numerical-review.md#numerical-review-evidence--nr-mfe-001-직접-계산-반례),
|
||
[Formulation V5](formulation.md#formulation-verification--v5-rigid-mode-coordinate-및-density-불변식).
|
||
- 결과: `needs-user-decision`. Requirement owner가 새 수식을 유도하거나 NR 계산을 재실행하지 않았다.
|
||
|
||
NR는 유효한 단일 평판의 한 절점 `URZ`만 free인 모델에서 global Z축 45° 회전이
|
||
동일 물리 component BC를 유지함을 확인했다. 기존 `kd` 규칙으로 고유치가
|
||
`23.04088888888889`에서 `23.040628726287263`으로 달라지고 상대 차이가
|
||
`1.1291343961675893e-5`다. 이는 NR의 독립 계산 evidence이며 새로운 mass/reduction의
|
||
확인된 결함이나 이번 Requirement Agent의 runtime 검증 결과가 아니다.
|
||
|
||
`014`의 원래 문구는 coordinate-invariance evidence를 필수로 두고 acceptance에
|
||
독립 invariant suite 통과를 요구한다. 유한한 test portfolio를 NR에 위임한 것은 모든
|
||
가능한 모델의 exact equality를 증명하라는 뜻은 아니지만, 알려진 지원 모델의 반례를
|
||
검증 범위 밖으로 재분류할 권한도 아니다. Full-free/full-clamp 사례로만 범위를 고정한 V5는
|
||
이 반례를 해소하지 못하므로 기존 의도의 단순 clarification으로 통과시킬 수 없다.
|
||
|
||
`002`의 물리 kernel 재사용 문구 하나만 보면 numerical stabilization 수정까지 직접
|
||
명시하지 않지만, 문서가 함께 재사용하는 [기존 shell 요구사항](../linear-static-mitc4-shell/requirements.md)의
|
||
`FESA-REQ-LSMITC4-034/056`은 고정 `kd` 규칙을 정한다. `008`은 실제 제약을 적용한
|
||
원래 pencil의 유한 spectrum 보존을 요구하므로 massless 처리에서 남는 stabilization을
|
||
제거해 이 반례를 없애는 해석도 허용하지 않는다. 고정된 tensor의 기저 변환과 geometry를
|
||
회전시켜 `kd`를 다시 계산하는 서로 다른 연산을 같은 검증으로 취급해서는 안 된다.
|
||
|
||
<a id="requirements-evidence--mfe-oq-003--r1에서-검토한-대안과-영향"></a>
|
||
#### MFE-OQ-003 — r1에서 검토한 대안과 영향
|
||
|
||
| 대안 | 정확한 영향과 승인 뒤 필요한 작업 |
|
||
| --- | --- |
|
||
| 기존 stabilization 유지 및 한계 수용 | Partial rotation BC 지원과 원래 pencil을 유지한다. 해당 BC에서 stabilization이 유한 공간에 남는 경우의 일반 eigen 좌표 불변성을 현재 feature acceptance에서 보장하지 않도록 `014` 적용 범위를 명시적으로 변경한다. 두 질량·physical stiffness의 좌표 검증, 모든 지원 BC의 원래 pencil 보존·modal residual 등은 계속 필수이며 NR 반례를 알려진 한계로 보존한다. 이는 acceptance 변경이고 아직 승인되지 않았다 |
|
||
| 좌표 공변적인 stabilization 개선 — 권고 | 동일 물리 모델의 좌표축 선택에 따른 고유치 변화를 해결하는 강성 개선을 작업 범위에 추가한다. 기존 fixed `kd`와 충돌하는 계약의 owner·승인 경계를 정하고 Research/Formulation/NR를 재검토한다. 영향받는 기존 정적 결과와 새 eigen 결과를 재검증한다. 특정 대체 계수나 수식은 이 요구사항 검토에서 선택하지 않는다 |
|
||
|
||
권고 이유는 좌표 선택만으로 같은 물리 모델의 고유치가 달라지는 알려진 결함을 유지하지
|
||
않기 위해서다. 대가는 기존 stiffness 계약의 영향 조사와 정식화·회귀 검증 범위 증가다.
|
||
반례의 수치가 작다는 이유로 외부 reference tolerance를 적용하거나 일반 오차 상한으로
|
||
사용하지 않는다. 이 한 건 외에 질량 흐름·FEAST 사용 질량·입력 N을 재질문하지 않는다.
|
||
|
||
두 대안은 같은 반례를 acceptance에서 다르게 처리하며, 기술 evidence만으로 사용자가
|
||
어느 변경 범위를 승인했는지 결정할 수 없다. 승인 전 `002/008/014` 원문, 기존 stiffness,
|
||
partial BC 지원, NR 판정 영향, 모든 tolerance·reference·schema를 변경하지 않았다.
|
||
Coordinator가 결정과 revision을 관리하고 영향받은 owner에게 후속 작업을 할당한다.
|
||
이 작업은 implementation correction이 아니며 correction budget을 사용하지 않는다.
|
||
|
||
<a id="requirements-evidence--r2-승인-범위와-정적-재검증"></a>
|
||
### r2 승인 범위와 정적 재검증
|
||
|
||
사용자 답변 “네 개선과 영향받는 기존 정적해석과 고유치해석의 재검증까지 범위에
|
||
포함해주세요.”로 `MFE-OQ-003`의 개선안이 승인되었다.
|
||
[MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합)이
|
||
승인·revision 근거이며, 한계 수용/acceptance 축소안은 선택되지 않았다.
|
||
|
||
변경 intent는 `002` 물리 kernel 보존과 numerical stabilization 개선 분리,
|
||
`008` 개선된 constrained pencil의 유한 spectrum 보존,
|
||
`014` 지원 partial BC를 포함하는 필수 invariant 통과,
|
||
`024` 영향받은 정적 correctness/reference 재검증, 신규 `027` 좌표 공변적인 stabilization이다.
|
||
`020`은 eigen Value-only와 기존 static 회귀의 서로 다른 비교량을 명확히 구분한다.
|
||
기존 고정 scale과 직접 충돌하는 부분만 대체하며 수식·수치 기준·schema를 이 문서에서 정하지 않는다.
|
||
|
||
기존 [linear shell 요구사항](../linear-static-mitc4-shell/requirements.md)의
|
||
`034` scale 선정과 `056`의 해당 공식 검증을 대체하고, 나머지 physical/nonphysical 경계를
|
||
유지한다. [Nonlinear formulation §10.3](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential)도
|
||
같은 initial physical tangent diagonal minimum을 사용하므로 영향받는 기존 static 경로다.
|
||
새 scale과 기존 nonlinear objective potential·일관 tangent·초기 고정 lifecycle의 정합을
|
||
Formulation/NR가 확인해야 한다. 이 발견은 nonlinear material/procedure 범위 확대가 아니다.
|
||
|
||
<a id="requirements-evidence--필수-회귀-포트폴리오와-identity"></a>
|
||
#### 필수 회귀 포트폴리오와 identity
|
||
|
||
| 구분 | 필수 재검증과 기존 evidence 계약 |
|
||
| --- | --- |
|
||
| Element 및 linear static correctness | 기존 [build-test](../linear-static-mitc4-shell/verification.md#build-test)와 [physics](../linear-static-mitc4-shell/verification.md#physics-evaluation)의 kernel/patch/rigid-mode/physical recovery·정적 partition/full residual·reaction·energy·source mapping을 재검증한다. 추가로 NR-MFE-001의 동일 물리 partial BC에서 complete K와 대응 정적 response를 좌표 변환해 검증한다. Loads/BC를 함께 물리적으로 변환하고 지원되지 않는 MPC 입력을 만들지 않는다 |
|
||
| 기존 linear S4 external regression | [reference-model](../linear-static-mitc4-shell/reference-model.md), [comparison의 common-policy 재검증](../linear-static-mitc4-shell/verification.md#reference-comparison--2026-08-18-common-policy-revalidation), 현행 [nonlinear I/O의 공통 경로·linear control](../nonlinear-static-newton-raphson/io.md)을 적용한다. 원본 `reference/shell/shell.inp` + `reference/shell/shell displacements.csv`; stable source instance/node/component 및 해당 static step/frame. U1/U2/U3 blocking, UR1/UR2/UR3 warning-only를 유지한다 |
|
||
| 기존 nonlinear correctness | [FESA-REQ-NSNR-030](../nonlinear-static-newton-raphson/requirements.md), [formulation](../nonlinear-static-newton-raphson/formulation.md), [physics](../nonlinear-static-newton-raphson/verification.md#physics-evaluation)의 선형극한·tangent consistency·objectivity·factor-one 전역 force/moment balance·free residual·commit/rollback을 새 scale로 재검증한다. 기존 Newton/convergence·하중·reaction 의미는 유지한다 |
|
||
| 기존 nonlinear external regression | [현행 reference-model](../nonlinear-static-newton-raphson/reference-model.md)과 [기존 comparison](../nonlinear-static-newton-raphson/verification.md#reference-comparison)의 closure case `shellnl-s4-final`, `shellnl-meshfine-s4-final`, `shell-s4-linear-limit`를 재검증한다. 각각 `reference/shellNL/shellNL.inp`, `reference/shellNL-meshfine/shellNL-meshfine.inp`, 위 linear input 및 같은 폴더의 기존 `<stem> displacements.csv`를 사용한다. Nonlinear은 source instance/node/component와 factor-one accepted state, linear은 자기 static state identity를 유지한다 |
|
||
| 새 eigen 검증 | 개선된 K와 derived lumped M에서 `008/013/014/027` 내부 검증 및 NR-MFE-001 해소를 필수 확인한다. 기존 지정 eigen input/TXT의 모든 요청 mode Value만 비교하며 static U/UR 데이터를 eigen reference로 사용하지 않는다 |
|
||
|
||
Nonlinear 외부 회귀도 U blocking/UR warning-only이고, 기존 coarse/fine의
|
||
`shellNL reactions.csv`·`shellNL-meshfine reactions.csv`에서 local RF1/RF2/RF3와
|
||
physical spatial RM1/RM2는 source-key/finite/inventory/error 보고를 유지하는 review-only다.
|
||
RM3와 stress를 새 numerical gate로 추가하지 않는다. Internal equilibrium acceptance와
|
||
local distribution 검토를 구분한다. 모든 외부 수치 판정은 `docs/TOLERANCE.md`를 그대로 사용한다.
|
||
|
||
현행 nonlinear reference-model에는 `shellnl-meshfine-02-s4-final`도 별도 post-closure
|
||
verification으로 기록되어 있다. 이를 과거 세 case closure의 통과 evidence로 소급하지
|
||
않는다. 기존 등록 회귀 suite에서의 실행·영향은 Planning이 기록하고 별도 case의 기존
|
||
판정 역할을 유지한다. 과거 HDF5 schema/파일명/고정 absolute tolerance의 이력보다 현행
|
||
공통 output 경로와 `TOLERANCE.md`, 각 feature의 최신 identity 계약이 우선한다.
|
||
|
||
개선 전 숫자와의 bitwise equality는 요구하지 않는다. 위 approved physics·reference
|
||
기준과 개선된 formulation을 기대값으로 검증하며 오래된 실패를 baseline으로 재생성하여
|
||
정당화하지 않는다. 원본 reference와 과거 보고서는 보존하고 새 r2 실행 evidence를 기록한다.
|
||
전체 configured MSVC/x64/Debug suite, 새 warning 없음, TDD와 failure preservation도 필수다.
|
||
현재 중요한 미결정은 없으며 연구·정식화·NR·구현의 후속 gate는 아직 통과하지 않았다.
|
||
|
||
<a id="requirements-evidence--질문-없이-정리한-사항"></a>
|
||
### 질문 없이 정리한 사항
|
||
|
||
- 무하중 원형상·비감쇠 해석은 실제 단일 `*FREQUENCY`와 선행 이력 부재로 결정한다.
|
||
- `.inp`의 Lanczos는 source solver 옵션이다. 사용자가 FESA backend를 FEAST로 명시했으므로
|
||
source option을 유지해 읽되 실제 backend를 명시하는 mapping이 가능하다. Abaqus Lanczos
|
||
동작과의 동등성을 주장하지 않는다. Exact allowlist와 진단은 I/O 소유이다.
|
||
- `SIM`은 source architecture 옵션이고 acoustic-free 모델의 `ACOUSTIC COUPLING=ON`은
|
||
실제 acoustic 모델 지원 요청이 아니다. 무해한 조합만 근거와 warning 정책으로 허용한다.
|
||
- `NORMALIZATION=MASS`의 내부 modal 의미를 유지한다. 외부 mode shape 비교는 추가하지 않는다.
|
||
- TXT의 명시적인 `Value`를 직접 읽고 원본을 보존한다. Matching/family는 tolerance 전에
|
||
고정하며 repeated eigenvalue와 duplicate mode ID를 구분한다.
|
||
- 기존 HDF5 의미를 보존하는 eigen quantity 추가는 신규 기능에 필요한 I/O 정의이다.
|
||
비호환 변경이 없는 한 schema 검토를 별도 사용자 승인 질문으로 만들지 않는다.
|
||
|
||
<a id="requirements-evidence--공개-근거"></a>
|
||
### 공개 근거
|
||
|
||
다음은 `2026-09-06`에 확인한 1차 문서이다. 공식 syntax와 backend admissibility 확인에만
|
||
사용하며 Abaqus 내부 정식화의 추정 근거로 쓰지 않는다.
|
||
|
||
1. [Abaqus 2025 — Natural Frequency Extraction](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEANLRefMap/simaanl-c-freqextraction.htm):
|
||
`Eigenvalue Extraction`, `Initial Conditions`, `Loads`, `Output` 절. 무감쇠 eigenproblem의
|
||
`omega²`, 원형상/선행 기하비선형 상태의 구분, 각 모드 출력 의미 확인.
|
||
2. [Abaqus 2025 — *FREQUENCY](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-frequency.htm):
|
||
`Optional parameters`와 Lanczos data line 절. 요청수 10, blank bounds, source algorithm,
|
||
SIM/acoustic 옵션의 의미와 mass normalization 확인.
|
||
3. [Intel oneMKL 2026.0 — Extended Eigensolver Functionality](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/extended-eigensolver-functionality.html):
|
||
real symmetric generalized 문제는 `B` SPD를 요구한다. 이 조건 때문에 massless drilling을
|
||
아무 처리 없이 FEAST에 전달해서는 안 된다.
|
||
4. [Intel oneMKL 2026.0 — ?feast_scsrgv](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/feast-scsrgv-feast-hcsrgv.html):
|
||
지정 구간의 eigenpairs, subspace capacity, 결과 count와 status 의미 확인. 구간 선택·확장과
|
||
설치된 MKL 버전 검증은 후속 owner가 정의한다.
|
||
|
||
<a id="requirements-evidence--실행-evidence와-미실행"></a>
|
||
### 실행 evidence와 미실행
|
||
|
||
r0 원본 관찰과 hash는 그대로 유지했다. 아래는 당시 실행한 read-only 조사이며 이번 r1에서
|
||
reference 재조사나 변환을 수행하지 않았다. 해당 shell 명령은 exit code `0`이었다.
|
||
|
||
```powershell
|
||
Get-Content -Raw '.codex/skills/fem-requirements-baseline/SKILL.md'
|
||
Get-Content -Raw 'docs/SOLVER_AGENT_DESIGN.md'
|
||
Get-Content -Raw 'docs/FEATURE_DOCUMENTATION.md'
|
||
rg -n -i '^\*(?!\*)|density|frequency|static|step|boundary|shell section' --pcre2 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp'
|
||
Get-Content -Tail 75 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp'
|
||
Get-Content -Raw 'reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine eigenvalues.txt'
|
||
rg -n 'FEAST|feast|MassMatrix|Density|density|Frequency|Eigenvalue|eigenvalue' include src -g '*.[ch]*'
|
||
git status --short
|
||
```
|
||
|
||
추가 read-only `python -B -` here-script는 `pathlib`로 두 파일을 읽고 keyword별 node/element
|
||
count, 좌표 범위, regex `Mode\s+(\d+):\s+Value\s*=\s*(\S+)\s+Freq\s*=\s*(\S+)`로
|
||
mode/Value/Freq를 추출하여 finite·identity·주파수 교차 확인과 SHA-256을 계산했다.
|
||
Exit code `0`, 729 nodes / 676 elements / 10 modes였고 위 표·hash와 일치했다.
|
||
파일을 생성하거나 reference 내용을 쓰지 않았다. Source 검색에서 물리 mass/density/eigen
|
||
구현을 발견하지 못했고 nonlinear local energy 변수 `density`만 검색되었다. 이는 scoped 검색
|
||
관찰이며 제품 미지원의 최종 코드 감사는 아니다.
|
||
|
||
공통/feature/기존 MITC4·nonlinear 승인 계약을 read-only로 조사했다. 기존 보고서의 완료
|
||
표시는 이번 feature 실행 증거로 재사용하지 않는다. C++ build/test, Harness, 외부 solver와
|
||
FESA reference comparison은 요구사항 단계의 범위가 아니므로 미실행이다.
|
||
|
||
r1에서는 관리문서·owned reports·공통 agent 계약을 `Get-Content`로 읽고 사용자 수정
|
||
`AGENTS.md`의 GoogleTest 경로를 `rg -n 'GTEST|git|GoogleTest' 'AGENTS.md'`로 확인했다.
|
||
명령은 exit code `0`이었다. 실제 GoogleTest dependency 설정/build 확인은 Root·Planning
|
||
소유이며 이 문서 갱신에서 새로 실행하지 않았다. 두 사용자 결정으로 `MFE-OQ-001`과
|
||
`MFE-OQ-002`를 해결했으며 기존 25개 requirement ID를 보존하고 derived lumped 요구
|
||
`026`을 추가했다. 당시 질량 선택의 미결정은 모두 해소되었다. 이후 NR-MFE-001로 발견된
|
||
현재 acceptance 결정은 위 별도 절에서 관리하며 상세 lumping 수식·수치 기준은 후속 owner 소유이다.
|
||
|
||
NR-MFE-001 bounded 검토에서는 `Get-Content`로 현재 Feature 관리문서·owned 보고서·NR
|
||
main/evidence·reference-model·formulation-verification을 읽고, scoped `rg`로
|
||
`002/008/014`와 기존 `FESA-REQ-LSMITC4-034/038/051/056`을 대조했다. Exit code `0`.
|
||
원본 reference 재조사, NR 반례 재계산, 새로운 외부 조사와 수식 유도는 수행하지 않았다.
|
||
|
||
r2에서는 현재 관리문서와 위 기존 static reports/requirements/formulation을 `Get-Content`와
|
||
scoped `rg`로 읽었다. Exit code `0`. 기존 nonlinear §10.3의 동일 scale 사용과 현행
|
||
reference-model의 closure/별도 post-closure case 구분을 확인했다. 실제 reference 파일을
|
||
재조회하거나 과거 수치·hash를 새로 계산하지 않았다. NR 반례/positive evidence도 재실행하지
|
||
않았다. 변경은 owned 두 문서뿐이고 실제 C++/FEAST/build/test/reference 회귀는 미실행이다.
|
||
|
||
변경한 경로는 기본 보고서와 이 상세 보고서 두 개뿐이며 관리문서, source, tests, phase,
|
||
공통 정책과 reference artifact는 편집하지 않았다. 정적 링크·필수 metadata·ID/matrix 검사를
|
||
완료한 명령과 결과는 Requirement Agent 반환 evidence로 함께 보고한다.
|