docs: record covariant MITC4 stabilization research

This commit is contained in:
KOKO\Mimi
2026-09-06 03:46:13 +09:00
parent adef07ee83
commit b99a5e5309
6 changed files with 196 additions and 25 deletions
+1
View File
@@ -75,3 +75,4 @@
- 결정 owner: user; 상세 요구 owner: requirement-agent; 개선 수식 owner: formulation-agent.
- 영향: 승인된 scope 변경으로 contract revision을 `r2`로 올린다. Requirement owner가 기존 물리 kernel 재사용과 개선된 stabilized pencil 보존을 구분하고 해당 static/eigen 회귀 요구를 명시한다. 영향받는 Research/Formulation/NR evidence는 owner별 최소 delta 검토 후 갱신한다.
- 경계: Partial BC 지원, 질량 흐름·FEAST 사용 mass·입력 N, reference 원본과 공통 tolerance를 유지한다. 기존 feature 보고서는 읽기 전용 이력으로 참조하며 현재 feature에서 대체되는 stabilization 계약의 범위를 명시한다. 사용자 승인으로 NR의 수치 gate나 구현 검증을 대신 통과시키지 않는다.
- 후속 근거: [Research R07](research-evidence.md#r07--r2-stabilization-근거와-영향)에 trace/spectral 기반의 기저 불변 scale 후보와 초기 고정 nonlinear 미분 구조, linear positive/null 조건을 기록했다. 이는 연구 후보이며 수식 채택은 Formulation owner가 수행한다.
@@ -36,8 +36,8 @@ Reference artifact와 공통 정책은 수정하지 않는다. 외부 solver 실
| [coordination.md](coordination.md) | coordinator-agent | r2 | workflow 상태 원본 |
| [requirements.md](requirements.md) | requirement-agent | r2 | 27개 must; 승인 범위 delta baseline gate pass |
| [requirements-evidence.md](requirements-evidence.md) | requirement-agent | r2 | fixed kd 대체 경계·기존 static 회귀·승인 evidence audit 완료 |
| [research.md](research.md) | research-agent | r1 | r2 영향 delta 재검토 대기; 기존 primary-source 근거 보존 |
| [research-evidence.md](research-evidence.md) | research-agent | r1 | r2 stabilization·좌표 검증 coverage stale; API 근거 보존 |
| [research.md](research.md) | research-agent | r2 | 27개 coverage·승인 delta evidence gate pass |
| [research-evidence.md](research-evidence.md) | research-agent | r2 | R07 공변 scale 후보·nonlinear lifecycle·null 조건; 기존 근거 보존 확인 |
| [formulation.md](formulation.md) | formulation-agent | r1 | r2 개선 계약·coverage 갱신 대기 |
| [formulation-mass.md](formulation-mass.md) | formulation-agent | r1 | 질량 수학 근거 보존; r2 영향 owner 확인 대기 |
| [formulation-eigen.md](formulation-eigen.md) | formulation-agent | r1 | stabilization·null 처리 r2 정합 검토 대기 |
+2 -1
View File
@@ -3,7 +3,7 @@
- Feature ID: `mitc4-shell-feast-eigen`
- Owner: `coordinator-agent`
- Input contract revision: `r2`
- 검토 상태: MFE-OQ-003 승인 반영 r2 requirements gate pass; Research부터 영향받는 downstream 재검토 진행.
- 검토 상태: r2 requirements/research gate pass; Formulation에서 개선 scale과 적용 경계의 수학 계약 갱신 진행.
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md).
지역 지침과 문서 목록은 [FEATURED_AGENTS.md](FEATURED_AGENTS.md), 상태 원본은 [coordination.md](coordination.md)를 따른다.
@@ -51,3 +51,4 @@ Requirement owner는 알려진 partial-BC 반례를 단순 clarification으로
[MFE-OQ-003 대안·영향](requirements-evidence.md#nr-mfe-001-requirements-intent-검토) 중 좌표 공변적인 stabilization 개선과 영향받는 정적/eigen 재검증 범위 추가가 사용자에게 승인되었다. 단순 한계 수용 및 acceptance 축소안은 선택되지 않았다.
사용자가 확정한 질량 계산 흐름·FEAST 사용 mass·입력 N·외부 Value-only 범위는 유지한다. 개선 수식과 실제 구현·검증은 해당 owner의 후속 gate를 거쳐야 한다.
기존 fixed scale의 [대체 경계](requirements.md#r2의-기존-계약-대체-범위)와 [필수 static 회귀 포트폴리오](requirements-evidence.md#r2-승인-범위와-정적-재검증)는 Requirement owner r2에 명시되어 있다. 과거 정적 reference의 U/UR 및 reaction 검토 정책은 해당 기존 계약으로 재검증하고 새 eigen 비교량은 Value로 유지한다.
[r2 research delta](research-evidence.md#r07--r2-stabilization-근거와-영향)는 기저 불변 scale 후보, 초기 고정 nonlinear lifecycle 및 linear massless 처리의 조건을 구분한다. 최종 수식 채택과 반례 해소 판정은 후속 owner 소유이다.
+26 -4
View File
@@ -3,15 +3,15 @@
- Feature ID: `mitc4-shell-feast-eigen`
- Owner: `coordinator-agent`
- Contract revision: `r2` (사용자 승인 stabilization 개선·영향받는 정적/eigen 재검증 범위)
- Stage: `research`
- Outcome: `pass` (requirements r2 gate evidence 확인)
- Next owner: `research-agent`
- Stage: `formulation`
- Outcome: `pass` (research r2 gate evidence 확인)
- Next owner: `formulation-agent`
- Attempt: `0` (r2 구현·수치 실패 관찰 없음; r1 이력 별도 보존)
- Completion: 미완료
- Failure classification: `null`
- Retry key: `null`
- Escalation class: `null`
- Blocker: `null` (r2 research 이후 기술 gate는 아직 미완료)
- Blocker: `null` (r2 formulation 이후 기술 gate는 아직 미완료)
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md),
[SOLVER_AGENT_DESIGN](../SOLVER_AGENT_DESIGN.md), [FEATURE_DOCUMENTATION](../FEATURE_DOCUMENTATION.md).
@@ -29,6 +29,7 @@
| numerical-review r1 | [NR verdict](numerical-review.md), [반례·독립 evidence](numerical-review-evidence.md), [reference-model](reference-model.md) | return-upstream; NR-MFE-001, 전체 internal controls 미확정, gate 미통과 |
| requirements r1 intent 재검토 | [Requirement 판단](requirements.md), [MFE-OQ-003 대안·영향](requirements-evidence.md#nr-mfe-001-requirements-intent-검토) | needs-user-decision; 원래 26개 matrix 행 유지, 단순 clarification으로 반례 제외 불가 |
| requirements r2 | [27개 must](requirements.md), [승인 delta·회귀 범위](requirements-evidence.md#r2-승인-범위와-정적-재검증), MFE-ADR-007 | pass; 사용자 승인 반영, owner/revision/27개 ID/43 local links 및 미결정 0 확인 |
| research r2 | [research](research.md), [R07 delta](research-evidence.md#r07--r2-stabilization-근거와-영향) | pass; 27개 coverage/32 local links, 추가 primary S12/S13 및 r1 질량·FEAST·reference 근거 보존 확인 |
공통 문서 및 reference 파일 목록의 read-only 조사 명령은 exit code `0`으로 완료했다.
확인된 reference 파일은 `shellNL-eigen-meshfine.inp`, `shellNL-eigen-meshfine eigenvalues.txt`이며 실제 의미와 readiness는 담당 owner가 검토한다.
@@ -37,11 +38,21 @@ Root의 시작 Git 조사에서 worktree clean을 확인했다. 구현·build/te
## 현재 bounded dispatch
Research owner의 r2 `pass` envelope, 두 owned 문서와 추가 R07 상세 근거를 감사하여 formulation으로 전이한다.
Trace/spectral scale 후보, 초기 고정 nonlinear potential의 미분 구조 및 linear `Kzz>0`/`Kpz=0` 전제를 구분했고 특정 수식이나 수치 반례 해소를 연구 gate로 승인하지 않았다.
Owner의 Python 정적 검사는 2문서/32 local links/27개 coverage/issues 0, exit `0`; 기존 S01~S11/R01/R02/R04/R05 보존 비교와 `git diff --check`도 exit `0`이다.
Coordinator는 15문서 local-link 누락 0, owner/r2 metadata·반환 hash 일치를 확인했다(`python -B -`, exit `0`).
`research.md` SHA-256은 `8b552b35342a1e0c81ee8c4effd03f240ea88c7553a5e3eee523b1c0f3cf55f6`, `research-evidence.md`는 `b1825090886ca71510d33c335fc0048f61a53f5f58441fc3d36fffe0e894c492`이다.
Formulation owner는 승인된 범위 안에서 하나의 공변 scale을 정하고 positivity·완전 K 변환·partial BC·initial-fixed nonlinear 계약 및 finite/null 처리 증명을 최소 delta로 갱신한다. 아직 외부 수치 comparison·새 구현·r2 NR gate는 미실행이다.
### Research r2 이력
Requirement owner의 r2 `pass` envelope와 두 owned 문서 delta를 감사하여 research로 전이한다.
기존 26개 ID를 보존하고 `002/008/014/020/024`를 승인 범위에 정합시켰으며 `027`을 추가했다. 기존 fixed scale의 대체 경계와 linear/nonlinear 정적 회귀 portfolio·identity·정책을 연결했고 물리 kernel·source/schema·공통 tolerance는 변경하지 않았다.
Owner의 `Get-Content`/`rg`와 Python audit은 exit `0`, 27개 요구/43 local links/깨진 링크 0이다. Coordinator audit은 15문서/깨진 링크 0/27 unique IDs, exit `0`이다.
`requirements.md` SHA-256은 `bcc17774190cc19b28595b3d0151c0202f4470a14aa90947c5cba6188c9ef909`, `requirements-evidence.md`는 `452ea5ed49b43ffaea3f6065fecf62003ea74f0e6bb3eae7812b9af8e7b8d514`이다.
Research owner는 r1 근거를 보존하며 승인된 stabilization 공변성, 기존 static scale lifecycle과 finite-null 처리에 필요한 근거만 최소 delta로 보완한다. 수식·threshold·NR 판정은 후속 owner 소유이며 실제 구현·수치 재검증은 미실행이다.
Root는 r2 requirements checkpoint 6개 exact paths를 `adef07e` (`docs: baseline covariant MITC4 stabilization requirements`)로 커밋하고 `git diff --check`/commit/status exit `0`, worktree clean을 확인했다.
### Requirements r2 갱신 이력
@@ -210,6 +221,17 @@ Raw log 집계는 `354 Test Passed`, `1 Test Failed`, 요청 362개 중 완료
Root가 원시 CTest 기록을 Git ignored `.harness/build/baseline-before-mitc4-eigen/`에 복사 보존했다. `LastTest.log.tmpe803a` 크기는 `592656` bytes이며 현재 활성 build/test process는 없다.
Planning/Implementation은 이 중단 baseline과 구분되는 실제 전체 suite exit code 및 완전한 결과를 확보해야 한다. 관찰 shell의 성공을 CTest 성공으로 대체하지 않는다.
Root는 활성 중복 실행이 없음을 확인한 뒤 아래 단독 재현을 같은 source/test/환경으로 실행했다.
```powershell
ctest --test-dir .harness/build -C Debug -R '^ShellSurfacePressureReference\.SelectsUniqueSchemaOneFactorOneAcceptedFrame$' --output-on-failure
```
Managed session `2839`의 실제 exit는 `0`, `1/1 passed`, 전체 실행 시간 `636.99`초였다. 이전 실패는 동일 조건에서 재현되지 않았지만 최초 중단 원인을 확정하지 않는다.
기록은 Git ignored `.harness/build/baseline-before-mitc4-eigen/focused-rerun/`의 로그 및 `observation.json`에 있고, `LastTest.log` SHA-256은 `56e13949bf6af8b43c9a9177d1e261d1a13b115ac688c4f86318aa8156ae3690`이다.
전체 362개 suite 통과나 새 feature TDD evidence는 아니다. 현재 해당 단독 실행은 종료되었다.
Root의 read-only 관찰에서 이 test는 `fesa_solver.lib` mtime에 따라 기존 HDF5를 재사용한다. Planning/Implementation은 영향받는 최종 reference 검증이 새 binary에 대한 fresh solve인지 명시적으로 확인해야 한다.
## Retry 기록
Correction 및 implementation rerun 사용 이력 없음. Transport attempt와 별도로 관리한다.
@@ -2,7 +2,7 @@
- Feature ID: `mitc4-shell-feast-eigen`
- Owner: `research-agent`
- Input contract revision: `r1`
- Input contract revision: `r2`
- 기본 보고서: [research.md](research.md)
- Web access date: `2026-09-06`
@@ -28,8 +28,11 @@ tolerance나 benchmark acceptance를 승인하지 않는다.
| 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가 아님 |
| S12 | LAPACK 3.12.1, [DLAEV2 original source/documentation](https://www.netlib.org/lapack/explore-html/d4/d5a/dlaev2_8f_source.html), source lines 31–39 (`Purpose`), 102–113 (`Further Details`); authors Univ. Tennessee / UC Berkeley / Colorado Denver / NAG | 공식 2×2 대칭 eigendecomposition과 작은 고유값의 determinant cancellation 한계. FESA scale 선정 규칙이나 새 vendor 호출 의무를 제공하지 않음 |
| S13 | Müller & Bischoff, *A Consistent Finite Element Formulation of the Geometrically Non-linear Reissner-Mindlin Shell Model*, ACME 29 (2022), 3387–3434, [updated original article](https://link.springer.com/article/10.1007/s11831-021-09702-7), Abstract, §2, §§6.1–6.2; corrections [April 2022](https://link.springer.com/article/10.1007/s11831-022-09725-8), [November 2022](https://link.springer.com/article/10.1007/s11831-022-09832-6) | 자체 shell 정식화의 potential 선형화·objectivity 근거만 사용. Review로 분류된 논문의 자체 유도 부분이며 문헌 요약을 1차 근거로 대용하지 않음. FESA의 MITC4·drilling 수식과 동일하지 않음 |
| P01 | [기존 MITC4 formulation](../linear-static-mitc4-shell/formulation.md), §§5,8,9,12,17; [실제 kernel](../../src/fesa/elements/mitc4_shell.cpp), `PhysicalTransformation20`, `DrillingTransformation4`, `EvaluateStiffness`, `GeometryAt`; [ARCHITECTURE](../ARCHITECTURE.md) | 현재 FESA 기하·부호·소유권 계약; 옛 scale 공식은 r2 대체 대상. Legacy research의 오래된 tolerance/승인 절차는 이번 계약에 재사용하지 않음 |
| P02 | [requirements r2](requirements.md), [원본 reference evidence·승인 delta](requirements-evidence.md), [공통 TOLERANCE](../TOLERANCE.md), [ADR](ADR.md) | 승인된 사용자 흐름과 acceptance boundary. 수치 통과 자체의 evidence가 아님 |
| P03 | [기존 nonlinear formulation §§10.2–10.4](../nonlinear-static-newton-raphson/formulation.md#103-fixed-scale-and-potential), [기존 linear requirements 034/056](../linear-static-mitc4-shell/requirements.md), [NR-MFE-001 반례](numerical-review-evidence.md#nr-mfe-001-직접-계산-반례), [r2 static 회귀 계약](requirements-evidence.md#r2-승인-범위와-정적-재검증) | 기존 initial-fixed scale·objective potential·미분 및 r2 대체/회귀 경계. NR 반례를 재실행한 evidence로 주장하지 않음 |
Hinton–Rock–Zienkiewicz (1976), DOI `10.1002/eqe.4290040305`의
[publisher abstract](https://onlinelibrary.wiley.com/doi/10.1002/eqe.4290040305)는 확인했으나
@@ -125,8 +128,8 @@ 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**에 대한 동등성이다.
finite space에 남는 stabilization contribution도 보존한다. r2의 massless 처리는
**개선된 constrained stabilized K와 선택된 lumped M의 finite spectrum**에 대한 동등성이다.
Unstabilized 다른 shell formulation이나 consistent spectrum과의 동등성이 아니다.
**Candidate 검증:** 비축정렬 director, partially constrained rotation, constraint-free
@@ -238,13 +241,14 @@ mode shape matching으로 외부 acceptance를 넓히지 않는다.
## R06 — 독립 verification portfolio 후보
각 case의 필수 여부·수치 기준은 NR가 정한다. External reference는 지정 Value 10개뿐이다.
각 case의 구체적 구성·수치 기준은 NR가 정한다. 새 eigen external reference는 지정 Value
10개뿐이며, r2에 승인된 기존 static 회귀는 R07과 Requirement 024의 기존 계약을 따른다.
| 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를 추가하지 않음 |
| Rigid/coordinate tests | 기존 tangent rigid motion의 zero stiffness; geometry/director와 개선 scale을 독립 재계산한 complete K·두 질량의 congruence 및 eigenvalue invariant | NR-MFE-001의 같은 물리 partial BC 필수; old kd를 고정한 단순 tensor 변환이나 full-free/full-clamp만으로 대체하지 않음. 일반 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를 대신하지 않음 |
@@ -259,8 +263,113 @@ zero mode의 residual denominator와 rank threshold는 NR가 정한다. 두께
membrane, bending, shear, rotary inertia가 서로 다르게 변하므로 density처럼 모든 mode에
단일 thickness power law를 강제하지 않는다.
## R07 — r2 stabilization 근거와 영향
### 입력 delta와 보존 근거
`FEM-REQ-MITC4-EIGEN-002/008/014/024/027` 및
[MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합)을 적용한다.
기존 `min(R+)`의 기저 의존성은 P03의 NR 반례로 확인되었다. 그 반례와 r1의 mass oracle를
재계산하지 않는다. 사용자 승인은 개선 범위를 확정하며 특정 새 수식이나 NR 통과를 뜻하지 않는다.
| 기존 근거 | r2 영향 판단 |
| --- | --- |
| S01/S02, R01/R02 mass·moment·quadrature | Numerical K scale과 독립이다. 기존 primary 근거·한계 및 [mass 계약](formulation-mass.md)을 보존한다 |
| S03, R03 및 [eigen E2–E4](formulation-eigen.md) | Schur 원리는 그대로다. Decoupling의 적용 대상은 개선된 K이며 아래 positive/director 구조를 Formulation이 재확인해야 한다 |
| S04–S08, R04 FEAST/정수/count | Backend·lumped M·입력 N 요구가 바뀌지 않아 근거를 보존한다. 설치/runtime를 새로 검증한 것은 아니다 |
| S09–S11, R05 reference 의미 | 새 eigen Value-only·원본 identity·공통 tolerance가 불변이다. 기존 artifact/hash는 r1 관찰 이력으로 보존한다 |
| R06 및 [기존 V5](formulation-verification.md) | Complete K 재계산과 지원 partial BC 반례 통과가 필수다. r1의 제한된 eigen 좌표 검증 설명을 r2 acceptance로 사용하지 않는다 |
| P01/P03 static | 옛 scale 선정식만 대체하며 initial-fixed lifecycle·objective potential·physical recovery 제외와 기존 회귀 계약은 유지한다 |
### 공변적인 secondary scale 후보
**Fact, S12:** 대칭 2×2 행렬은 직교 회전으로 대각화할 수 있다. LAPACK 원 source는
그 변환과 반환 고유값을 명시하고, 작은 고유값 계산에서 determinant 상쇄로 상대 정확도를
잃을 수 있음을 경고한다. 이를 새 shell scale의 최종 선정 근거와 혼동하지 않는다.
**Derivation — 기저 변화:** 초기 physical `K20^0`에서 node i의 두 회전 성분에 해당하는
2×2 principal block을 `R_i`, 해당 성분을 global tangent rotation으로 보내는 orthonormal
map을 `U_i`라 하자. 전역 rigid coordinate rotation `G`와 접평면 기저 변경 `O_i`에서
`U_i'=G U_i O_i`, `R_i'=O_i^T R_i O_i`이면
`U_i' R_i' U_i'^T=G(U_i R_i U_i^T)G^T`다.
따라서 `tr(R_i')=tr(R_i)`와 `det(R_i'-lambda I)=det(R_i-lambda I)`가 직접 따른다.
개별 대각값은 이 항등식의 scalar invariant가 아니다. 서로 다른 node의 기저 변경도
block별로 독립 허용된다. 실제 physical kernel이 이 변환 법칙을 만족하는지는 후속 검증 대상이다.
**Candidate — trace 기반, 우선 검토 권고:** `tau_i=tr(R_i)/2`에서 하나의 positive element
scale을 만들 수 있다. `mean_i(tau_i)=sum_i tr(R_i)/8`은 기존 여덟 physical rotation
성분의 평균이며, physical K가 PSD이고 회전 강성이 적어도 하나 존재하면 양수다.
또 다른 후보는 positive nodal `tau_i`의 최솟값으로 기존 최소값 집계를 유지하는 것이다.
두 후보 모두 좌표/기저 불변이며 force·length 차원을 갖는다. 초기 K의 물리적인 PSD 및
zero/nonfinite inventory 처리는 명시적으로 확인해야 하며 양의 trace만으로 PSD를 판정하지 않는다.
최솟값 후보의 zero-block 처리 또는 전 node positivity가 필요하면 기존 유효 geometry와의
관계를 증명해야 한다. 암묵적인 새 geometry 제외·epsilon floor로 보완하지 않는다.
**Candidate — 최소 spectral 값:** `lambda_min(R_i)`도 기저 불변이고 작은 회전 강성 방향을
반영한다. 그러나 positive 여부·zero block 처리와 작은 eigenvalue의 상쇄/conditioning
문제가 추가된다. 단순 `(trace-sqrt(discriminant))/2` 구현의 안정성을 가정하지 않는다.
Trace 후보에는 이 spectral subtraction이 없으므로 bounded scale 개선의 첫 검토 방향으로
권고한다. 이 비교는 runtime 성능 측정 또는 수식 채택 판정이 아니다.
어느 후보든 기존 차원 없는 `10^-3` 계수와 `K_d=k_d I4`의 numerical 역할을 유지하는
최소 변경을 검토할 수 있다. Reference 오차를 보고 scale/계수를 조정하거나 coefficient sweep,
물리 drilling 관성·strain·새 입력 설정을 추가할 근거는 없다. 정확한 aggregation, finite/positive
검사 및 scale 공식 채택은 Formulation 소유이고 numerical 기준은 NR 소유다.
### Linear null과 nonlinear lifecycle의 다른 적용 조건
**Derivation/조건, P01/P03와 S03:** Linear/eigen에서는 기존 `T_p`, `T_d`와
`K_drill=T_d^T k_d I4 T_d`를 그대로 두고, 모든 element의 새 `k_d`가 finite positive이면
실제로 free space에 남는 director null `Z`에 대해
`K_f Z=Z diag(sum_{e incident i} k_d,e)` 구조를 유지할 수 있다.
Physical K가 director 방향을 소거하고 공통 nodal director를 사용한다는 전제가 필요하다.
이 조건에서 `Kzz>0`, `Kpz=0`이므로 기존 analytic projection의 정확성 근거가 유지된다.
이는 [E3](formulation-eigen.md)의 적용 조건 재확인이지 새 수식/실제 조립의 검증 완료가 아니다.
Null이 없는 partial BC에는 개선 stabilization이 남으며 이를 삭제해서는 안 된다.
새 K와 옛 K 사이의 partial-BC spectrum 동일성은 요구하지 않는다.
**Fact, S13:** 논문의 자체 shell 정식화는 director manifold에 맞는 potential의 일관
선형화와 objective interpolation을 함께 다룬다. 이것은 FESA의 drilling potential를
제공하지 않는다. April correction은 proofing 오류, November correction은 Eq.(5.26)의
LaTeX rendering 오류를 알리며 현재 원문이 교정되었다고 명시한다. 그 식을 이 후보에
복사하거나 FESA의 기존 운동학을 해당 논문의 보간으로 교체하지 않는다.
**Derivation/조건, P03:** 기존 nonlinear `Pi_d=k_d*gamma^T gamma/2`에서 새 scale을
초기 reference physical K로 계산한 뒤 모든 increment/iteration에서 불변으로 유지하면
`Dk_d=D²k_d=0`이다. 따라서 기존 exact residual/Hessian은 동일한 `gamma`, `Dgamma`,
`D²gamma`에 새 scalar를 곱하는 구조를 유지한다. 기저 불변 reference scale과 objective
gamma를 함께 유지하면 같은 물리 상태의 좌표 변경에 따른 potential 불변성도 보존할 조건이 된다.
Trial tangent에서 scale을 다시 선정하면 추가 미분항과 min의 비매끄러움이 생길 수 있어 이
initial-fixed 계약을 대체할 수 없다. Scale이 같다는 이유로 nonlinear의 corotation coupling을
linear의 단순 director projection과 동일하게 만들지 않는다.
**Limit:** 양의 `k_d`는 numerical potential의 비음성과 pure-drill 양의 작용을 뜻한다.
변형된 nonlinear Hessian에는 `sum gamma_i D²gamma_i`가 있어 모든 상태의 SPD를 뜻하지
않는다. Linear E3 decoupling 증명을 nonlinear Hessian이나 prestressed eigenproblem에
일괄 적용하지 않는다. 새 feature의 eigen 상태는 승인된 원형상·무응력 상태다.
### Verification 연결과 남는 owner 작업
NR-MFE-001의 동일 물리 partial BC에서 새 scale과 complete K를 독립 재계산하고,
대응 eigen spectrum 및 정적 response의 좌표 검증을 수행해야 한다. 옛 계수를 외부에서
고정한 tensor 변환만 비교하면 원래 결함을 검출하지 못한다. 동일 물리 BC/loads의 변환과
허용된 입력 범위는 유지한다. 추가 새 reference 모델을 요구하지 않는다.
기존 static 회귀의 원본 경로·quantity·identity·policy는 P03의
[Requirement evidence portfolio](requirements-evidence.md#r2-승인-범위와-정적-재검증)에
한 곳에서 유지한다. Linear `shell` 및 nonlinear `shellNL`/`shellNL-meshfine`와 linear-limit
case, 내부 tangent·선형극한·objectivity·평형·reaction·energy·rollback 검증을 새 scale로
실행해야 한다. 기존 U blocking/UR warning-only와 nonlinear reaction review-only를
eigen Value-only 요구로 삭제하지 않는다. 오래된 통과 보고서는 새 실행 evidence가 아니다.
남는 작업은 Formulation의 단일 후보 채택·positivity/변환 증명·적용 경계, NR의 독립
반례 해소·conditioning·metric·필수 case와 수치 기준, Implementation/Physics의 실제
정적/eigen 재검증이다. R07에서 새 authoritative conflict나 사용자 재결정 필요는 발견하지 않았다.
## 실행 evidence와 미실행
### r1 조사 이력
Read-only `Get-Content`, scoped `rg`, `Get-FileHash`로 필수 공통/Feature/기존 MITC4
문서, 실제 kernel과 원본 두 reference 파일을 읽었다. 해당 읽기·hash 명령은 exit `0`이다.
아래는 핵심 재현 진입점이다.
@@ -299,3 +408,30 @@ documents `2`, local links `21`, requirement coverage `26`, issues `0`이다.
CMake/CTest, Harness, FEAST runtime와 numerical reference comparison은 이
연구 단계의 범위가 아니므로 미실행이다. Source/tests/build/phase/upstream/tolerance/reference는
편집하지 않았으며 다른 owner의 변경을 되돌리지 않았다.
### r2 bounded 조사와 정적 확인
관리문서·requirements r2·기존 research 및 NR/Formulation/static 계약을 `Get-Content`와
scoped `rg`로 읽었다. 정상 조회는 exit `0`이다. 초기 `rg`의 literal `research*.md` 경로는
Windows 경로 오류였고 `rg ... docs/nonlinear-static-newton-raphson -g 'research*.md'`로
수정하여 exit `0`으로 재조회했다. 최초 patch는 context 불일치로 적용되지 않았으며 실제
문맥을 확인한 뒤 owned 두 파일에만 적용했다. Source·test·build·phase·Hook·reference와
upstream 문서는 수정하지 않았고 Git mutation은 수행하지 않았다.
Web `search_query/open/find`에서 S12 공식 source와 S13 교정된 원문 및 두 correction을
열었다. 새로 인용한 primary 사실은 그 본문에서 확인했으며 검색 요약이나 타 solver의
비공개 동작을 근거로 사용하지 않았다. S01–S11 전체를 재조사하지 않았다.
Read-only `python -B -` here-script로 두 문서의 owner/Feature/r2 metadata, final newline,
trailing whitespace, 상대 링크 실재 및 requirements matrix ID와 coverage 표의 set equality를
검사했다. Exit `0`, documents `2`, local links `32`, required/covered IDs `27`, issues `0`이다.
별도 `python -B -`에서 `subprocess.run(['git','show','HEAD:'+path],check=True)`로 기존
연구 상세를 읽고 정규식으로 R01/R02/R04/R05 절 및 S01–S11 inventory 행을 비교했다.
Exit `0`, 모든 보존 구간이 동일했다. 이는 문서 보존 확인이며 수치 검증이 아니다.
`git diff --check`는 exit `0`; LF/CRLF 정보성 경고만 있었다. `git diff`/`git status --short`로
owned 두 파일과 Coordinator의 coordination 변경을 구분했으며 타 owner 변경을 보존했다.
r2에서 reference 파일·hash 재조사, NR 반례·mass oracle 재계산, CMake/CTest, Harness,
FEAST runtime 및 정적/eigen reference comparison은 수행하지 않았다. 원본/reference 및
기존 보고서의 성공 기록을 r2의 실행 성공으로 재분류하지 않는다. 최종 파일 hash는 반환
envelope에 제공하며 본 문서 안에 자기 hash를 기록하지 않는다.
+22 -11
View File
@@ -2,12 +2,12 @@
- Feature ID: `mitc4-shell-feast-eigen`
- Owner: `research-agent`
- Input contract revision: `r1`
- Input contract revision: `r2`
- 조사일 / 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)이다.
[requirements r2](requirements.md), [reference 관찰·승인 delta](requirements-evidence.md)이다.
[프로젝트 PRD](../PRD.md), [ARCHITECTURE](../ARCHITECTURE.md), [공통 ADR](../ADR.md),
[TOLERANCE](../TOLERANCE.md), [agent 계약](../SOLVER_AGENT_DESIGN.md),
[문서 소유권](../FEATURE_DOCUMENTATION.md)을 적용한다.
@@ -41,6 +41,12 @@ Source inventory, locator, API evidence, 유도 후보와 검증 한계는
`NORMALIZATION=MASS`는 실제 사용된 lumped 질량에서 유지한다. TXT의 각 mode는
modal frame identity에 대응하므로 family는 공통 same-frame 규칙과 함께 확정해야 한다.
근거: `S09`~`S11`, `R05`.
6. `NR-MFE-001`의 기존 대각 최솟값 규칙은 r2 승인 범위에서 대체한다. 물리 접평면
회전 block의 trace 또는 고유값으로 만든 scalar는 직교 기저 변화에 불변인 후보다.
초기 reference에서만 계수를 계산·고정하고 기존 drilling map/potential을 유지하면
nonlinear 미분 구조와 linear massless decoupling을 보존할 조건을 명시할 수 있다.
최종 계수식 채택과 반례 해소 판정은 후속 owner 소유다. 근거: `S12`, `S13`, `P03`,
[r2 delta와 후보](research-evidence.md#r07--r2-stabilization-근거와-영향).
사용자 후속 확정대로 요청 mode 개수의 authority는 `.inp`의 `*FREQUENCY` data다.
현재 값은 10이며 reference row 수나 FEAST 내부 count로 요청수를 추론하지 않는다.
@@ -53,31 +59,36 @@ ID는 모두 `FEM-REQ-MITC4-EIGEN-` 접두사를 가진다. 연구 외 행도 ow
| 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 |
| `002`, `004` | `S01`, `P01`, `R01/R07`: 기존 물리 kernel/director/geometry/5-to-6 DOF 보존; numerical scale만 개선 | 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 |
| `007`, `008` | `S03`, `P01`, `R03/R07`: 개선된 constrained pencil의 유한 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 |
| `013`, `014`, `018` | `S01`, `S03`, `S08`, `R06/R07`: 같은 lumped M의 residual/Gram·불변식·독립 oracle; NR 반례의 complete K/eigen 검증 필수 | 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 |
| `023`, `024`, `025` | `P01`~`P03`, `R07`: TDD·MSVC·기존 linear/nonlinear 정적 회귀·closure는 후속 실행 evidence | Planning, Implementation, Physics, Release |
| `027` | `S12`, `S13`, `P03`, `R07`: basis-invariant scalar 후보, 초기 고정 scale·objective potential 및 positive/null 역할 보존 조건 | Formulation, NR |
## Handoff와 제한
중요한 사용자 미결정이나 authoritative conflict는 발견하지 않았다. 승인된
`MFE-OQ-003`의 개선안 승인으로 기존 계약 충돌의 범위 선택은 해결되었다. 새 중요한
사용자 미결정은 발견하지 않았다. 승인된
**consistent → lumped → FEAST**는 고정이며 질량 방식 재선택이나 tolerance 변경을 제안하지 않는다.
다음 항목은 연구 누락이 아니라 해당 stage에서 확정할 계약이다.
- Formulation: `R01`~`R03`의 질량 적분·좌표 block lumping·보존 범위·constraint/nullspace
축소와 복원, `R04`의 finite interval/count/termination policy를 수식으로 확정한다.
축소와 복원, `R04`의 finite interval/count/termination policy 및 `R07`의 개선 scale·
linear/nonlinear 적용 경계·positive inventory를 수식으로 확정한다.
- NR: 적분 정확도·rank/작은 차원·mass SPD·scaled modal residual/Gram 및
`R06` portfolio의 기준, reference mode/frame/family와 blocking 판정을 확정한다.
`R06/R07` portfolio의 기준, reference mode/frame/family와 blocking 판정을 확정한다.
Partial BC의 NR 반례를 full-free/full-clamp 검증으로 대체하지 않는다.
- 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 접근, 정적 검사 명령과 결과는 상세 문서 끝에 있다.
이번 r2에서는 연구 문서 두 개만 갱신했다. 기존 `S01`~`S11` 근거와 reference hash는
영향 검토 후 r1 조사 이력으로 보존했으며 원본 reference를 다시 읽거나 수치 재실행하지 않았다.
새 primary 근거 두 그룹과 기존 static 계약 근거를 추가했다. 명령과 결과는 상세 문서 끝에 있다.
C++ build/test, Harness, 외부 solver와 FESA reference 수치 비교는 stage 범위 밖이므로
미실행이며 통과로 보고하지 않는다.