From 4d303839c299a197253c4e62cf0b723eb5d5d0db Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Sun, 6 Sep 2026 04:01:47 +0900 Subject: [PATCH] docs: define covariant MITC4 stabilization formulation --- docs/mitc4-shell-feast-eigen/ADR.md | 11 +- .../FEATURED_AGENTS.md | 9 +- docs/mitc4-shell-feast-eigen/PRD.md | 3 +- docs/mitc4-shell-feast-eigen/coordination.md | 28 +- .../formulation-eigen.md | 21 +- .../formulation-mass.md | 16 +- .../formulation-stabilization.md | 243 ++++++++++++++++++ .../formulation-verification.md | 102 +++++++- docs/mitc4-shell-feast-eigen/formulation.md | 32 ++- 9 files changed, 417 insertions(+), 48 deletions(-) create mode 100644 docs/mitc4-shell-feast-eigen/formulation-stabilization.md diff --git a/docs/mitc4-shell-feast-eigen/ADR.md b/docs/mitc4-shell-feast-eigen/ADR.md index e147a5f..a22788d 100644 --- a/docs/mitc4-shell-feast-eigen/ADR.md +++ b/docs/mitc4-shell-feast-eigen/ADR.md @@ -60,7 +60,7 @@ - 결정: Consistent scalar moments를 같은 `3×3×3` volume quadrature로 계산하고 moment row-sum에서 nodal `6×6` block lumped mass를 유도한다. 기존 global 제약 뒤 analytic director null과 기존 stabilization의 decoupling을 이용해 finite 공간을 투영하고 sparse nodal whitening으로 FEAST에 연결한다. - 근거: [Formulation 핵심 계약](formulation.md#핵심-계약), [mass M1~M10](formulation-mass.md), [eigen E1~E8](formulation-eigen.md). - 영향: 곡면 coupling 및 mass/centroid·energy 차이를 명시하고 인공 drilling mass와 일반 dense Schur는 도입하지 않는다. Numerical Review는 수식·conditioning·FEAST controls·reference 준비를 독립 검토한다. -- 남은 검토: [V5](formulation-verification.md#v5-rigid-mode-coordinate-및-density-불변식)의 기존 basis-dependent stabilization 한계와 `FEM-REQ-MITC4-EIGEN-014` coordinate-invariance coverage 관계를 NR가 명시적으로 확인해야 한다. 이 기록으로 acceptance 범위를 조용히 좁히지 않는다. +- 후속 검토: r1 NR-MFE-001로 확인된 기존 basis-dependent stabilization과 REQ-014 충돌은 MFE-ADR-007의 사용자 승인 개선 범위로 해결한다. r2 [V5](formulation-verification.md#v5-rigid-mode-coordinate-및-density-불변식)는 complete K와 supported partial BC 검증을 명시하며 수식의 독립 판정은 NR가 수행한다. ## MFE-ADR-007 — 기존 stabilization과 좌표 불변성 acceptance 정합 @@ -76,3 +76,12 @@ - 영향: 승인된 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가 수행한다. + +## MFE-ADR-008 — 초기 physical trace 평균 stabilization scale + +- 상태: r2 승인 개선 범위 안의 Formulation owner 수학 계약; 독립 NR 검토 대기. +- 결정 owner: formulation-agent; 기록 owner: coordinator-agent. +- 결정: 초기 physical `K20`의 여덟 접평면 회전 대각 전체를 평균해 `k_ref=sum_i trace(R_i)/8`, `k_d=10^-3 k_ref`를 사용한다. Zero 대각도 포함하며 기존 numerical map과 nonlinear 초기 고정 lifecycle을 유지한다. +- 근거: [S1~S7](formulation-stabilization.md), [V8의 exact arithmetic·정적 evidence](formulation-verification.md#v8-r2-영향-확인과-bounded-evidence). +- 이유·경계: 접평면 기저의 scalar invariant를 쓰면서 spectral subtraction과 positive nodal block 선별을 피한다. 양성 inventory·단위·연산 순서·invalid 실패, partial BC에 남는 stabilization 및 기존 physical/nonphysical 구분은 해당 수학 계약을 따른다. 계수나 mass를 reference에 맞추어 조정하지 않는다. +- 검증 인계: NR-MFE-001의 새 algebraic target `k_d=19/4800`, `lambda=10369/450` 및 물리 tangent moment의 정적 response를 NR가 독립 재검산한다. 이 기록은 실제 C++/FEAST/reference 통과나 release evidence가 아니다. diff --git a/docs/mitc4-shell-feast-eigen/FEATURED_AGENTS.md b/docs/mitc4-shell-feast-eigen/FEATURED_AGENTS.md index f234d13..ff31f0d 100644 --- a/docs/mitc4-shell-feast-eigen/FEATURED_AGENTS.md +++ b/docs/mitc4-shell-feast-eigen/FEATURED_AGENTS.md @@ -38,10 +38,11 @@ Reference artifact와 공통 정책은 수정하지 않는다. 외부 solver 실 | [requirements-evidence.md](requirements-evidence.md) | requirement-agent | r2 | fixed kd 대체 경계·기존 static 회귀·승인 evidence audit 완료 | | [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 정합 검토 대기 | -| [formulation-verification.md](formulation-verification.md) | formulation-agent | r1 | V5 coordinate-invariance coverage stale; r2 재검증 범위 갱신 대기 | +| [formulation.md](formulation.md) | formulation-agent | r2 | 27개 coverage·수학 handoff gate pass; 독립 NR 대기 | +| [formulation-mass.md](formulation-mass.md) | formulation-agent | r2 | 질량 수학 근거 보존 확인; numerical scale만 r2 연결 | +| [formulation-eigen.md](formulation-eigen.md) | formulation-agent | r2 | 개선된 K의 null 처리·finite spectrum·복원 수학 계약 | +| [formulation-verification.md](formulation-verification.md) | formulation-agent | r2 | complete K/partial BC·static 회귀 갱신; NR 내부 수치 기준 대기 | +| [formulation-stabilization.md](formulation-stabilization.md) | formulation-agent | r2 | trace 평균 scale·positivity·covariance·nonlinear lifecycle·반례 exact target | | [numerical-review.md](numerical-review.md) | numerical-review-agent | r1 | r1 return-upstream 이력; r2 전체 NR gate 미실행 | | [numerical-review-evidence.md](numerical-review-evidence.md) | numerical-review-agent | r1 | 반례·mass oracle·API 근거 보존; r2 영향 owner 검토 대기 | | [reference-model.md](reference-model.md) | numerical-review-agent | r1 | artifact/logical 근거 보존; r2 영향 owner 검토 대기 | diff --git a/docs/mitc4-shell-feast-eigen/PRD.md b/docs/mitc4-shell-feast-eigen/PRD.md index 56dd677..fd2c5c9 100644 --- a/docs/mitc4-shell-feast-eigen/PRD.md +++ b/docs/mitc4-shell-feast-eigen/PRD.md @@ -3,7 +3,7 @@ - Feature ID: `mitc4-shell-feast-eigen` - Owner: `coordinator-agent` - Input contract revision: `r2` -- 검토 상태: r2 requirements/research gate pass; Formulation에서 개선 scale과 적용 경계의 수학 계약 갱신 진행. +- 검토 상태: r2 requirements/research/formulation gate pass; Numerical Review에서 독립 반례 해소 및 남은 수치 기준 검토 진행. 기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md). 지역 지침과 문서 목록은 [FEATURED_AGENTS.md](FEATURED_AGENTS.md), 상태 원본은 [coordination.md](coordination.md)를 따른다. @@ -52,3 +52,4 @@ Requirement owner는 알려진 partial-BC 반례를 단순 clarification으로 사용자가 확정한 질량 계산 흐름·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 소유이다. +[r2 stabilization 정식화](formulation-stabilization.md)는 `k_ref=sum_i trace(R_i)/8`, `k_d=10^-3 k_ref`를 채택하고 양성 inventory·complete K의 공변성·nonlinear 고정 lifecycle 및 반례의 고유치/정적 exact target을 정의한다. 독립 NR 판정과 실제 구현·재검증은 아직 완료되지 않았다. diff --git a/docs/mitc4-shell-feast-eigen/coordination.md b/docs/mitc4-shell-feast-eigen/coordination.md index 5cc65ae..969d075 100644 --- a/docs/mitc4-shell-feast-eigen/coordination.md +++ b/docs/mitc4-shell-feast-eigen/coordination.md @@ -3,15 +3,15 @@ - Feature ID: `mitc4-shell-feast-eigen` - Owner: `coordinator-agent` - Contract revision: `r2` (사용자 승인 stabilization 개선·영향받는 정적/eigen 재검증 범위) -- Stage: `formulation` -- Outcome: `pass` (research r2 gate evidence 확인) -- Next owner: `formulation-agent` +- Stage: `numerical-review` +- Outcome: `pass` (formulation r2 수학 handoff gate evidence 확인) +- Next owner: `numerical-review-agent` - Attempt: `0` (r2 구현·수치 실패 관찰 없음; r1 이력 별도 보존) - Completion: 미완료 - Failure classification: `null` - Retry key: `null` - Escalation class: `null` -- Blocker: `null` (r2 formulation 이후 기술 gate는 아직 미완료) +- Blocker: `null` (r2 NR와 후속 기술 gate는 아직 미완료) 기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md), [SOLVER_AGENT_DESIGN](../SOLVER_AGENT_DESIGN.md), [FEATURE_DOCUMENTATION](../FEATURE_DOCUMENTATION.md). @@ -30,6 +30,7 @@ | 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 근거 보존 확인 | +| formulation r2 | [main](formulation.md), [mass](formulation-mass.md), [eigen](formulation-eigen.md), [verification](formulation-verification.md), [stabilization](formulation-stabilization.md) | pass; 5개 문서/27개 coverage/57개 상대 경로 및 단일 scale·수학 적용 경계 확인; 독립 판정은 NR 소유 | 공통 문서 및 reference 파일 목록의 read-only 조사 명령은 exit code `0`으로 완료했다. 확인된 reference 파일은 `shellNL-eigen-meshfine.inp`, `shellNL-eigen-meshfine eigenvalues.txt`이며 실제 의미와 readiness는 담당 owner가 검토한다. @@ -38,12 +39,21 @@ Root의 시작 Git 조사에서 worktree clean을 확인했다. 구현·build/te ## 현재 bounded dispatch +Formulation owner의 r2 `pass` envelope와 실제 5개 문서의 변경·상세 수식/단위/ordering/실패/검증 경계를 감사하여 numerical-review로 전이한다. +Owner가 `k_ref=sum_i trace(R_i)/8`, `k_d=10^-3 k_ref`를 확정했고 S1~S8에 positivity, complete K 공변성, partial BC, physical rigid/null 및 nonlinear 초기 고정 potential/Hessian의 적용 경계를 명시했다. +Exact arithmetic `python -B -`는 exit `0`, `kd=19/4800`, `lambda=10369/450`, 단위 tangent moment 응답 `7500/10369`이며 formulation 식의 산술 확인이다. NR의 독립 반례 해소나 runtime 결과로 취급하지 않는다. +Owner 정적 검사는 5문서/57개 상대 경로/27개 coverage/issues 0, exit `0`; `git diff --check` exit `0`이다. Coordinator는 16문서 local-link 누락 0, 5개 owner/r2 metadata와 반환 SHA-256 일치를 확인했다(`python -B -`, exit `0`). +NR는 r1의 비충돌 mass oracle/API/reference 근거를 보존하고 새 stabilization을 독립 재검토한다. 이어 미완료 V1~V6 내부 threshold·conditioning·FEAST controls/endpoint/count/solve budget·seed 및 27개 요구의 필수 case matrix를 모두 고정해야 한다. 논리 reference readiness도 r2로 확인한 뒤에만 I/O로 전이할 수 있다. + +### Formulation r2 이력 + 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는 미실행이다. +Root는 research r2 checkpoint 6개 exact paths를 `b99a5e5` (`docs: record covariant MITC4 stabilization research`)로 커밋하고 diff/commit exit `0`, clean을 확인했다. ### Research r2 이력 @@ -232,6 +242,16 @@ Managed session `2839`의 실제 exit는 `0`, `1/1 passed`, 전체 실행 시간 전체 362개 suite 통과나 새 feature TDD evidence는 아니다. 현재 해당 단독 실행은 종료되었다. Root의 read-only 관찰에서 이 test는 `fesa_solver.lib` mtime에 따라 기존 HDF5를 재사용한다. Planning/Implementation은 영향받는 최종 reference 검증이 새 binary에 대한 fresh solve인지 명시적으로 확인해야 한다. +Root는 이전 중단에서 미관찰된 나머지 pressure 7개를 같은 binary와 위 단독 재현의 fresh HDF5로 확인했다. + +```powershell +ctest --test-dir .harness/build -C Debug -R '^ShellSurfacePressureReference\.' -E '(AuditsExactRequiredArtifactsAndIgnoresOptionalReviewArtifacts|SelectsUniqueSchemaOneFactorOneAcceptedFrame)$' --output-on-failure +``` + +Exit `0`, `7/7 passed`, `1.09`초이며 Git ignored `.harness/build/baseline-before-mitc4-eigen/remaining-pressure-tests/`의 `LastTest.log`/`observation.json`에 보존했다. +로그 SHA-256은 `60823270ffc3c9386a5936ddc8f3ac3fb89a5895412046b2689216ec7a50472f`다. 변경 전 baseline의 중단 실행 354 pass, 단독 재현 1 pass, 나머지 7 pass를 각각 확보했으나 단일 전체 suite 성공으로 합쳐 보고하지 않는다. +Root의 baseline 분류 작업은 종료되었고 source/test/환경/reference 변경은 없었다. 새 binary의 TDD·전체 suite·fresh reference 검증은 Implementation owner의 필수 작업이다. + ## Retry 기록 Correction 및 implementation rerun 사용 이력 없음. Transport attempt와 별도로 관리한다. diff --git a/docs/mitc4-shell-feast-eigen/formulation-eigen.md b/docs/mitc4-shell-feast-eigen/formulation-eigen.md index 5ad3bdb..7d29c8e 100644 --- a/docs/mitc4-shell-feast-eigen/formulation-eigen.md +++ b/docs/mitc4-shell-feast-eigen/formulation-eigen.md @@ -2,12 +2,13 @@ - Feature ID: `mitc4-shell-feast-eigen` - Owner: `formulation-agent` -- Input contract revision: `r1` +- Input contract revision: `r2` - 기본 보고서: [formulation.md](formulation.md) [질량 유도 M1~M10](formulation-mass.md), [research evidence](research-evidence.md)의 -`S03`~`S08`, `P01`, `R03/R04`를 적용한다. 아래 reduction은 기존 stabilized stiffness와 -**derived lumped mass**의 pencil에 정확히 대응한다. +`S03`~`S08`, `P01`, `R03/R04/R07`를 적용한다. 아래 reduction은 +[r2 scale](formulation-stabilization.md)로 개선된 원형상 stabilized stiffness와 +**derived lumped mass**의 pencil에 정확히 대응한다. 기존 nonlinear trial tangent와는 별개다. ## E1. 조립, 단위 scaling과 실제 global 제약 @@ -64,12 +65,14 @@ P=\operatorname{blockdiag}(P_i^f),\quad Z=\operatorname{blockdiag}(Z_i),\quad Reference의 full clamped flat mesh에서는 625개 interior node, `nf=3750`, `nz=625`, `n=3125`가 예상된다. 실제 assembly와 rank evidence로 확인한다. -## E3. 기존 stiffness에서 decoupling의 정확한 증명 +## E3. 개선된 stiffness에서 decoupling의 정확한 증명 공통 node director는 [shell geometry](../../src/fesa/model/shell_geometry.cpp)가 한 번 정의하고 [ElementFactory::CreateShell](../../src/fesa/elements/element_factory.cpp)이 node identity로 각 element에 전달한다. [MITC4 kernel](../../src/fesa/elements/mitc4_shell.cpp)의 -`PhysicalTransformation20`, `DrillingTransformation4`, `EvaluateStiffness`는 M4를 구현한다. +`PhysicalTransformation20`, `DrillingTransformation4`, `Stiffness`에서 M4의 구조를 확인했다. +옛 계수만 [S1/S2](formulation-stabilization.md)로 대체하며 모든 incident element의 +`k_d,e`는 finite positive다. Physical kernel과 공통 director·nodal drill map은 그대로다. 한 node에만 `[0;d_i]`가 있는 full vector `z_i`에 대해 `T_p A_e z_i=0`이다. Drilling 부분은 해당 node에만 작용하므로 @@ -90,14 +93,18 @@ K_{pz}=P^TK_fZ=0,\quad K_{zz}=Z^TK_fZ=\operatorname{diag}(\kappa_i)\succ0, Finite mode의 massless 성분은 `z=0`이다. 이 projection은 arbitrary small coupling을 버리는 근사가 아니라 승인된 physical/drilling separation의 항등식이다. -Null이 없는 부분 제약 node에서는 `P=I`이고 기존 drilling contribution이 `K_p`에 +Null이 없는 부분 제약 node에서는 `P=I`이고 개선된 drilling contribution이 `K_p`에 그대로 남는다. 이를 빼면 원 constrained stabilized pencil을 바꾸므로 금지한다. +여기서 원 pencil은 r2의 실제 BC 적용 후 K/M이다. 옛 K와 새 K의 spectrum 동일성은 +요구하지 않는다. S3의 complete K 공변성은 이 partial-BC contribution까지 포함한다. 실제 floating-point matrix와 basis의 `M_f Z`, `K_fZ-Z diag(kappa)`, `P^T Z`를 별도 evidence로 남긴다. 증명된 analytic null만 구조적으로 제거하고 계산된 tiny coupling을 근거 없이 threshold로 버리지 않는다. 이 항등식의 roundoff 검증 및 복원 후 full free residual이 NR 기준을 넘으면 assembly/director/conditioning 실패로 중단한다. -추가 massless mode를 찾아 제거하거나 기존 K를 재조정하지 않는다. +추가 massless mode를 찾아 제거하거나 개선된 K를 재조정하지 않는다. +S5의 nonlinear Hessian에는 corotation coupling이 있으므로 E3/E4를 모든 nonlinear +상태, preload 또는 prestressed eigenproblem에 적용하지 않는다. ## E4. 일반 Schur 식과 비정상 rank의 의미 diff --git a/docs/mitc4-shell-feast-eigen/formulation-mass.md b/docs/mitc4-shell-feast-eigen/formulation-mass.md index fc9f03a..a16e2f7 100644 --- a/docs/mitc4-shell-feast-eigen/formulation-mass.md +++ b/docs/mitc4-shell-feast-eigen/formulation-mass.md @@ -2,11 +2,13 @@ - Feature ID: `mitc4-shell-feast-eigen` - Owner: `formulation-agent` -- Input contract revision: `r1` +- Input contract revision: `r2` - 기본 보고서: [formulation.md](formulation.md) 근거는 [research evidence](research-evidence.md)의 `S01`, `S02`, `P01`, `R01`~`R03`이다. 아래 유도는 FESA의 승인된 운동학에 대한 것이며 Abaqus 내부 질량과의 동등성 주장이 아니다. +r2는 M4의 numerical scale만 [S1](formulation-stabilization.md#s1-초기-physical-trace로-고정하는-단일-scale)로 +대체한다. M1/M2 및 M5~M10의 질량·quadrature·moment·lumping 식은 영향 확인 후 보존했다. ## M1. 변수, 원형상과 운동학 @@ -58,7 +60,7 @@ G_i(z)=[I_3\ \ zS_i],\quad H=[N_1G_1\ \cdots\ N_4G_4]. \tag{M2} \delta\gamma^T K_d\gamma=0. \tag{M3} \] -원형상 elastic Hessian은 기존 stiffness다. +원형상 physical elastic Hessian과 quadrature는 기존 stiffness 계약을 유지한다. \[ C_5=\operatorname{diag}\left( @@ -68,12 +70,14 @@ C_5=\operatorname{diag}\left( \] \[ K_e=T_p^TK_{20}T_p+T_d^T(k_d I_4)T_d,\quad -k_d=10^{-3}\min\{(K_{20})_{rr}>0:r\text{는 tangent rotation}}. \tag{M4} +k_d=10^{-3}k_{ref,e}. \tag{M4} \] -`bar e=[epsilon11,epsilon22,gamma12,gamma13,gamma23]`이고 M4는 새 선택이 아니라 -기존 [정식화 §12](../linear-static-mitc4-shell/formulation.md) 및 -[실제 kernel](../../src/fesa/elements/mitc4_shell.cpp)의 고정 계약이다. +`bar e=[epsilon11,epsilon22,gamma12,gamma13,gamma23]`이다. `k_ref,e`는 +[r2 scale S1](formulation-stabilization.md#s1-초기-physical-trace로-고정하는-단일-scale)으로 계산한다. +기존 [정식화 §12](../linear-static-mitc4-shell/formulation.md)의 physical kernel·변환· +drilling map은 유지하고 옛 최소 대각 scale만 사용자 승인 범위에서 대체한다. +[현재 source](../../src/fesa/elements/mitc4_shell.cpp)는 아직 옛 식이며 구현 완료 근거가 아니다. Drilling energy는 수치 stabilization이며 물리 strain/stress가 아니다. `K_e q_e`는 내부 elastic generalized force, `M_L,e q_ddot,e`는 inertia다. 최종 반이산식은 `M_L q_ddot + Kq=0`이다. Harmonic ansatz diff --git a/docs/mitc4-shell-feast-eigen/formulation-stabilization.md b/docs/mitc4-shell-feast-eigen/formulation-stabilization.md new file mode 100644 index 0000000..f56e989 --- /dev/null +++ b/docs/mitc4-shell-feast-eigen/formulation-stabilization.md @@ -0,0 +1,243 @@ +# 좌표 공변적인 drilling scale과 적용 경계 + +- Feature ID: `mitc4-shell-feast-eigen` +- Owner: `formulation-agent` +- Input contract revision: `r2` +- 기본 보고서: [formulation.md](formulation.md) + +승인 근거는 [MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합), +`FEM-REQ-MITC4-EIGEN-002/008/014/024/027` 및 [기존 계약 대체 범위](requirements.md#r2의-기존-계약-대체-범위)다. +[연구 R07](research-evidence.md#r07--r2-stabilization-근거와-영향)의 후보에서 아래 하나를 선택한다. +식 S1~S8은 FESA 계약에 대한 유도이며 외부 solver의 stabilization과 동일하다는 주장이 아니다. + +## S1. 초기 physical trace로 고정하는 단일 scale + +[M4](formulation-mass.md#m2-strongweak-form과-기존-stiffness)의 원형상 physical matrix를 +`K20^0`라 한다. 각 source node i의 local physical 순서는 `[uX,uY,uZ,alpha,beta]`이고, +`R_i [2×2]`는 그 matrix에서 `alpha,beta`에 해당하는 principal block이다. 두 회전은 +orthonormal tangent basis의 무차원 성분이다. Element별로 + +\[ +k_{ref,e}=\frac18\sum_{i=1}^4\operatorname{tr}R_i, +\qquad k_{d,e}=\eta_d k_{ref,e},\qquad \eta_d=10^{-3}, +\qquad K_d^l=k_{d,e}I_4. \tag{S1} +\] + +`k_ref,k_d,R_i`의 단위는 force·length=`ML²/T²`다. Translation 대각, lumped/consistent +mass, density, constrained tangent, trial tangent 또는 reference 오차는 이 식의 입력이 아니다. +초기 physical K의 **여덟 회전 대각 전체**를 평균하며 양수인 항만 선별해 분모를 바꾸지 않는다. +기존 coefficient `10^-3`와 네 node에 같은 scalar를 쓰는 numerical 역할을 유지한다. +새 사용자 parameter·coefficient sweep·reference tuning은 없다. + +Trace 평균은 모든 방향의 회전 강성을 사용하면서 eigenvalue subtraction과 positive +nodal-block 선별을 피한다. 최소 spectral 값도 불변량이지만 이번 scale에 필요하지 않은 +작은 고유값 conditioning 문제를 추가한다. 이는 R07 후보의 단순성에 따른 선택이며, +LAPACK이 FESA의 평균 규칙을 제안한다는 뜻이 아니다. 작은 고유값의 상쇄 한계는 +[LAPACK DLAEV2 원문, Further Details](https://www.netlib.org/lapack/explore-html/d4/d5a/dlaev2_8f_source.html)에 있다. + +## S2. Positive inventory, 유효 geometry와 계산 순서 + +기존 승인 geometry·director·section·material 검증을 먼저 적용한다. 기존 8개 stiffness +점에서 `J_g>0,w_g>0`, `t>0,E>0,-10`이고 nodal director가 incident element 사이에 공통이므로 +[E3/E4](formulation-eigen.md#e3-개선된-stiffness에서-decoupling의-정확한-증명)의 +`K_f Z=Z diag(sum_e k_d,e)`, `Kzz≻0`, `Kpz=0`가 그대로 성립한다. E2의 실제 +global BC와 null의 교집합을 먼저 구한다. Finite mode의 null coefficient는 0이며 +positive 공간으로의 투영은 개선된 원 pencil의 모든 finite spectrum을 보존한다. +Null이 없는 partial BC에는 개선된 drilling term이 finite 공간에 남는다. 이 항을 제거하거나 +옛 spectrum과 같게 조정하지 않는다. Consistent→lumped의 spectrum equality는 별개로 요구하지 않는다. + +## S5. Nonlinear objective potential와 초기 고정 lifecycle + +기존 [nonlinear §10.1~10.4](../nonlinear-static-newton-raphson/formulation.md#10-objective-numerical-drilling-contract)의 +polar element corotation `R_e`, total nodal rotation `R_i`, minimal swing `S_ei` 및 +`gamma_i=atan2(s_gamma,i,c_gamma,i)`를 그대로 사용한다. 초기 reference physical K20만으로 +S1을 한 번 계산하고 모든 trial/commit/increment/iteration 및 rollback 동안 같은 scalar를 쓴다. +State-dependent scale·trial 재선정·기존 objective gamma의 교체는 승인 범위 밖이다. + +\[ +Dk_{d,e}=D^2k_{d,e}=0,\quad +\Pi_d^e=\tfrac12 k_{d,e}\gamma^T\gamma,\quad +r_d^e=k_{d,e}D_\gamma^T\gamma, +\] +\[ +K_d^e=k_{d,e}\left(D_\gamma^TD_\gamma+ +\sum_i\gamma_i H_i^\gamma\right),\qquad +D_\gamma=D\gamma,\quad H_i^\gamma=D^2\gamma_i. \tag{S6} +\] + +모든 polar/swing/rotation/atan2 미분과 branch validation은 기존 계약을 유지한다. +Positive k_d는 potential 비음성과 pure-drill 양의 작용을 뜻한다. 일반 nonlinear Hessian은 +`sum gamma_i H_i` 때문에 모든 상태에서 SPD라는 결론이 없다. 초기 `gamma=0`에서도 +`D_gamma`에는 corotation coupling이 있으므로 이를 linear `T_d`와 동일시하지 않는다. +기존 pure-drill directional quadratic form과 physical 선형극한·Newton tangent consistency를 +각자의 계약대로 재검증하며 complete nonlinear Hessian의 모든 entry가 linear M4와 같다고 요구하지 않는다. + +같은 물리 nonlinear 상태를 G로 표현하면 모든 rotation tensor와 initial director가 +conjugation/rotation되고 scalar gamma는 같다. Initial S1도 같으므로 potential은 불변이다. +Work-conjugate Cartesian perturbation에 대해 chain rule로 residual과 tangent의 공변성이 따른다. +Superposed finite rigid motion에서는 기존 `R_e^+=R R_e`, `R_i^+=R R_i`에 의해 gamma가 +같고, stress-free rigid state에는 gamma=0·physical strain=0이다. 따라서 finite rigid motion의 +영에너지 및 objective rigid orbit를 따른 변분 검증을 유지한다. S4의 linear tangent-projected +UR field를 nonlinear total triad 회전에 대신 넣지 않는다. + +현재 [nonlinear 생성 경로](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의 +`NonlinearMitc4Shell::Create`는 초기 linear `Stiffness()`의 `drilling_stiffness`를 받아 저장한다. +이 경계에서 S1의 같은 값을 사용해야 한다. 물리 strain/material, exact external moment work, +Newton/line-search/cutback, accepted state 및 physical output은 기존 계약이다. +S4/E3 projection은 이 nonlinear Hessian·preload·prestressed eigen으로 확장하지 않는다. + +## S6. NR-MFE-001의 새 algebraic target과 정적 대응 + +[NR 소유 반례](numerical-review-evidence.md#nr-mfe-001-직접-계산-반례)의 독립 적분 block을 +입력 근거로 사용한다. 그 geometry·source BC·material 및 옛 실패 이력은 보존한다. +각 corner에서 `R_aa=49/12`, `R_bb=23/6`, `R_ab=±1/8`이므로 + +\[ +k_{ref}=95/24,\quad k_d=19/4800,\quad +M_{ff}=3/50,\quad K_{ff}=10369/7500,\quad +\lambda=10369/450=23.042222\ldots . \tag{S7} +\] + +Global Z축 45° 회전 뒤 재생성한 tangent basis에서도 trace는 `95/12`이므로 같은 식이다. +이는 production/FEAST 실행 결과가 아닌 r2 formula의 exact target이다. 독립 재계산과 +runtime에서 반례가 해소되는지는 NR/Implementation이 각각 검증한다. + +정적 대응에는 node1에 `m=(5/3)M0 b`, 다른 load는 0을 사용한다. 여기서 +`b=(-4/5,0,3/5)`와 `M0`는 finite 비영 moment amplitude `[force·length]`다. +`d·m=0`, `mZ=M0`이므로 기존 physical moment admissibility를 지킨다. 단순 `m=M0 eZ`는 +drilling 성분을 가져 기존 load 계약을 위반하므로 사용하지 않는다. 같은 모든 DOF 고정, +node1 URZ만 free에서 + +\[ +\theta_{1Z}=\frac{M0}{K_{ff}},\quad +q_{constrained}=0,\quad r=Kq-F. \tag{S8} +\] + +회전된 input에서는 `m'=Gm`을 component load로 주고, `mZ'=M0`와 같은 BC를 유지한다. +Supported component BC/load만으로 `thetaZ`, complete response·full reaction의 공변성을 +검증할 수 있다. Physical recovery와 numerical contribution의 의미는 합치지 않는다. + +## S7. 대체·보존 범위와 필수 verification + +기존 linear `FESA-REQ-LSMITC4-034`, `056`의 최소 positive diagonal 선정·그 공식 검증만 +S1/S2로 대체한다. 기존 `036`의 invalid positive inventory 의미는 S2로 유지한다. +Nonlinear §10.3은 초기 scale 식만 대체하고 §10.1/10.2/10.4 및 frozen lifecycle은 유지한다. +기존 feature 문서·과거 실패 evidence를 소급 수정하지 않는다. + +필수 수학 검증은 S1 직접 평균/단위/zero inventory·잘못된 finite/sign 처리, +독립 node별 tangent 재생성과 global geometry 회전의 S3/S4, S7/S8의 supported partial BC, +physical six rigid modes와 pure drilling rank/separation, E3의 KZ/MZ/Kpz/Kzz 및 원 free +residual이다. Nonlinear은 같은 초기 scale·immutability, objective rigid motion, +exact first/second directional derivatives·물리 선형극한·정적 평형/reaction/energy·rollback을 +기존 계약으로 재검증한다. Density 없는 기존 static 모델도 계속 유효하다. + +실행해야 하는 기존 `shell`, `shellNL`, `shellNL-meshfine` 및 linear-limit closure portfolio와 +후속 meshfine-02 이력의 구분, source identity, U blocking/UR warning-only, reaction review-only는 +[requirements evidence의 단일 portfolio](requirements-evidence.md#r2-승인-범위와-정적-재검증)를 따른다. +새 eigen 외부 비교는 지정 input/TXT의 10개 Value만 사용한다. Static reference를 eigen +mode-shape gate로 추가하거나 기존 static 회귀를 Value-only를 이유로 삭제하지 않는다. +Numerical threshold·필수 case 구체화·FEAST control/budget/seed와 독립 반례 해소 판정은 NR, +TDD/runtime/reference 실행은 Implementation, 독립 물리 판단은 Physics 소유다. diff --git a/docs/mitc4-shell-feast-eigen/formulation-verification.md b/docs/mitc4-shell-feast-eigen/formulation-verification.md index 81bf040..11fd636 100644 --- a/docs/mitc4-shell-feast-eigen/formulation-verification.md +++ b/docs/mitc4-shell-feast-eigen/formulation-verification.md @@ -2,10 +2,11 @@ - Feature ID: `mitc4-shell-feast-eigen` - Owner: `formulation-agent` -- Input contract revision: `r1` +- Input contract revision: `r2` - 기본 보고서: [formulation.md](formulation.md) -[질량 식 M1~M10](formulation-mass.md), [축소·복원 식 E1~E8](formulation-eigen.md)의 +[질량 식 M1~M10](formulation-mass.md), [축소·복원 식 E1~E8](formulation-eigen.md), +[개선된 scale·공변성 S1~S8](formulation-stabilization.md)의 기호를 사용한다. 이 문서는 측정량과 zero branch를 정의하며 수치 acceptance 값과 필수 benchmark 선정은 Numerical Review가 독립 검토하여 고정한다. 외부 기준의 수치는 [TOLERANCE](../TOLERANCE.md)를 그대로 적용한다. @@ -126,16 +127,24 @@ mass Gram rank로 여섯 물리 움직임의 independence를 확인한다. Physical rigid zero eigenvalues는 finite mass 모드이고 E2의 massless drilling과 다르다. Clamped reference에 여섯 zero mode를 요구하지 않는다. -Global rigid coordinate rotation에서 두 질량과 **physical stiffness**의 congruence 및 -E1~E6 spectrum 불변성을 검사한다. Free rotation 3개 또는 rotation 3개 전체 고정의 -node로 이루어진 사례는 finite 공간의 drilling 항이 0이므로 이 검증에 적합하다. -기존 `kd=min(physical tangent diagonals)*10^-3`는 선택한 tangent basis에 의존할 수 있다. -따라서 재계산한 kd까지 임의 회전에서 동일 scalar라 가정하거나 부분 회전 BC에 남는 -stabilization의 좌표 불변성을 새로 주장하지 않는다. 같은 kd를 유지한 단순 tensor -변환이면 complete K도 congruent하지만 별도 geometry에서 kd를 재선정한 경우와 다르다. -기존 stabilization 의미를 유지하는 한계이며 coefficient를 바꾸지 않는다. -Rotation 후 이전 global component BC를 그대로 두고 같은 문제라고 주장하거나 -새 MPC 입력 기능을 추가하지 않는다. +Global rigid coordinate rotation과 독립 node별 tangent 재생성에서 두 질량, +physical/numerical contribution 및 **complete stiffness**의 congruence와 E1~E6 spectrum +불변성을 검사한다. S1의 scale을 새 geometry/frame에서 다시 계산하여 S3/S4를 검증한다. +고정된 tensor에 회전행렬만 곱하는 검사로 대체하지 않는다. Norm은 V1의 same-unit +congruence ratio, scalar scale은 `|kd'-kd|/(|kd'|+|kd|)`다. Spectrum은 같은 operator +time scale `s`로 `|lambda_i'-lambda_i|/s`를 측정하며 repeated 그룹은 아래 projector를 쓴다. + +같은 물리 BC가 양쪽에서 지원되는 **partial rotation BC**를 포함하고, +[S6](formulation-stabilization.md#s6-nr-mfe-001의-새-algebraic-target과-정적-대응)의 +NR-MFE-001 geometry/45° 회전 및 대응 정적 response/reaction을 필수 통과 사례로 둔다. +Full-free/full-clamp만으로 대체하거나 반례를 warning-only로 내리지 않는다. +Partial BC에 남는 개선된 stabilization도 포함하며 기존 K와 새 K의 값이 같을 필요는 없다. +Rotation 후 다른 물리 component BC를 같은 문제로 비교하거나 새 MPC 입력을 추가하지 않는다. + +Nonlinear rigid motion은 기존 total triad의 finite rotation과 objective gamma를 사용한다. +S5의 potential/residual/Hessian을 검증하며 위 linear tangent-projected UR field 및 +massless projection을 nonlinear 상태에 적용하지 않는다. 개선 전 scale 공식만을 기대한 +기존 검사는 S1로 갱신하고 나머지 rigid/patch/physical positivity acceptance는 보존한다. 모든 density를 동일 `c_rho>0`로 바꾸고 geometry/material stiffness/BC를 유지하면 @@ -172,7 +181,8 @@ NR가 구현 전에 결정해야 할 항목은 다음과 같다. | FEAST control | Contour points/precision exponent/refinement bound, finite count/endpoint/solve retry budget | | Endpoint safety | Operator scale와 ULP, count monotonicity, enclosing total n, solve/count 및 full-rank Gram | | Independent test portfolio | 평판 M10, warped/director-varying M5~M9, 비축정렬/부분 BC/E5 오류 case, FEAST known spectra, density/rigid/좌표 tests | -| External reference | 원본 input+TXT Value, mode/frame identity와 singleton 여부, common family 및 blocking 판정 | +| r2 stabilization/static | S1~S8의 positivity/재계산 공변성·partial BC eigen/static, nonlinear 고정 scale·exact variation과 기존 static portfolio | +| External reference | r1 NR의 원본 input+TXT 10개 Value·singleton family·모두 blocking 논리 계약을 r2 영향 확인 후 유지 | Small independent pencil은 손으로 대각화 가능한 값을 사용하고 동일 production mass/reduction/eigensolver를 기대값 계산에 호출하지 않는다. API wrapper의 injected status @@ -187,10 +197,14 @@ Case의 구체적 목록·숫자는 NR가 정하고 Planning이 tests와 TDD ste Frequency 재계산, mode shape correlation이나 다른 mass variant의 더 가까운 결과 선택으로 이를 대체하지 않는다. Mode/frame은 NR/I/O가 common same-frame family 규칙에 맞춰 정의하고 missing/extra/duplicate/nonfinite를 tolerance 전에 거부한다. +[r1 reference-model](reference-model.md)의 10개 singleton family·모두 blocking 계약과 +공통 정책에 따른 실효 mode별 1%는 보존할 근거다. Formulation이 이를 재선택하지 않으며 +r2 영향 재확인은 NR 소유다. V1~V6의 내부 수치 기준은 아직 NR에서 최종 고정하지 않았다. Schema 경로/저장 field/public diagnostic 이름은 I/O owner의 계약이다. ## V7. 실행 evidence와 남는 위험 +이 절의 명령·hash·4문서 검사는 **r1 이력**이다. r2 갱신 evidence는 V8에 둔다. Formulation 단계에서는 승인 문서와 실제 source를 read-only로 대조하고 자체 수식을 전개했다. 다음 입력은 변경하지 않았다: requirements/research, 관리문서, source/tests/build, Harness, 공통 tolerance 및 원본 reference. External solver, CMake/CTest, Harness, FEAST @@ -220,3 +234,65 @@ stage/commit 또는 타 owner 수정은 하지 않았다. 검사점 밖의 전역 injectivity 한계, floating-point FEAST count/endpoint와 repeated subspace, count scratch 및 shifted factorization memory다. NR가 위 metric·수치 기준·case를 고정하고 Implementation이 실제 설치 backend와 reference evidence를 제시해야 해소된다. + +## V8. r2 영향 확인과 bounded evidence + +r2에서는 M4의 scale, E3의 개선된 pencil 명시, V5의 complete K/partial-BC coverage와 +정적 회귀 연결을 갱신했다. Mass M1/M2/M5~M10 및 FEAST E6~E8, V1~V4의 검증식은 +numerical scale 선정과 독립이거나 동일 개선된 K를 대입하는 식이므로 보존한다. +r1 NR의 curved rational mass oracle·27점 degree 결과, count/trace API 근거와 reference +identity는 읽고 재사용 범위를 확인했으며 새 실행 결과로 바꾸지 않았다. + +`Get-Content`와 scoped `rg`로 r2 승인 요구/연구·기존 선형 요구 034/036/038/056, +nonlinear §10.1~10.4 및 아래 실제 source를 대조했다. 이 조회는 exit `0`이었다. + +```powershell +rg -n 'PhysicalTransformation20|DrillingTransformation4|drilling_reference|drilling_stiffness' src/fesa/elements/mitc4_shell.cpp +rg -n 'drilling|Drilling|Stiffness\(' src/fesa/elements -g '*nonlinear*' +``` + +처음 nonlinear source 검색에 literal `src/fesa/elements/*nonlinear*`를 사용한 호출은 +PowerShell 경로 오류를 출력했다. 해당 검색을 위 `-g` 방식으로 고쳐 exit `0`을 확인했다. +원본 reference 및 기존 NR mass oracle/옛 반례를 다시 실행하지 않았다. +2026-09-06 web `open`으로 S1의 LAPACK 공식 문서상 작은 eigenvalue 상쇄 경고를 확인했다. +Configured vault grounding 요청이 없으므로 `fem-theory-query`는 별도 적용하지 않았다. + +다음은 NR의 R block을 사용해 **새 scale 식의 exact arithmetic만** 확인한 명령이다. +Production source prototype, C++ test, FEAST 또는 독립 NR 판정을 대체하지 않는다. + +```powershell +@' +from fractions import Fraction as F +aa,bb=F(49,12),F(23,6) +base=[]; rotated=[] +for ab in [F(1,8),-F(1,8),F(1,8),-F(1,8)]: + base.extend([aa,bb]) + rotated.extend([(25*aa+16*bb+40*ab)/41, + (16*aa+25*bb-40*ab)/41]) +ref=sum(base)/8 +assert ref == sum(rotated)/8 == F(95,24) +kd=ref/1000 +mass=F(3,50) +stiffness=F(9,25)*bb+F(16,25)*kd +assert kd == F(19,4800) +assert stiffness == F(10369,7500) +assert stiffness/mass == F(10369,450) +assert F(3,5)*(-F(4,3))+F(4,5) == 0 # d dot (5b/3) +print('k_ref=',ref,'k_d=',kd,'Mff=',mass,'Kff=',stiffness, + 'lambda=',stiffness/mass,'theta_per_unit_moment=',1/stiffness) +'@ | python -B - +``` + +실제 위 here-script를 문서에서 추출해 `python -B -`로 실행했다. Exit `0`, +`k_ref=95/24`, `k_d=19/4800`, `Mff=3/50`, `Kff=10369/7500`, +`lambda=10369/450`, 단위 moment 응답 `7500/10369`를 얻었다. +Owned 5개 문서의 metadata·27 requirement coverage·57개 상대 경로·whitespace·final newline· +display-math delimiter·언어 혼입을 read-only Python으로 검사했고 exit `0`, issues `0`이었다. +`git diff --check`도 exit `0`; LF/CRLF 안내만 있었으며 compiler warning 검증과는 별개다. +Stage/commit은 하지 않았고 `git status --short`의 Coordinator 변경은 보존했다. + +이 exact 식에 수치 tolerance를 추가하지 않는다. NR가 S1~S8을 독립 검토하고 V6의 내부 기준· +FEAST budget/seed·mandatory matrix를 완성해야 한다. Implementation은 승인된 기존 static +portfolio와 새 eigen Value-only 비교의 실제 TDD/runtime evidence를 생성해야 한다. +Source/tests/build/phase/Hook/reference/Git 및 다른 owner 문서를 편집하지 않았다. +CMake/CTest·Harness·FEAST·외부 solver·reference numerical comparison은 이 단계에서 미실행이다. diff --git a/docs/mitc4-shell-feast-eigen/formulation.md b/docs/mitc4-shell-feast-eigen/formulation.md index 42814fb..f4c673d 100644 --- a/docs/mitc4-shell-feast-eigen/formulation.md +++ b/docs/mitc4-shell-feast-eigen/formulation.md @@ -2,7 +2,7 @@ - Feature ID: `mitc4-shell-feast-eigen` - Owner: `formulation-agent` -- Input contract revision: `r1` +- Input contract revision: `r2` - 요청 outcome: `pass`; 다음 owner: `numerical-review-agent`. - 상태: 독립 numerical review 요청이며 자기 승인이나 workflow 전이가 아니다. @@ -15,7 +15,7 @@ ## 핵심 계약 -1. 기존 원형상 MITC4 운동학·강성·director·global 6 DOF 의미를 유지한다. +1. 기존 원형상 MITC4 운동학·physical stiffness·director·global 6 DOF 의미를 유지한다. Physical 3 translation/2 tangent rotation의 consistent mass와 구성 scalar moments를 같은 Jacobian으로 계산한다. Trilinear mapping의 mass integrand는 각 축 최대 4차이므로 mass는 3×3×3 Gauss로 충분하며 곡면의 odd-thickness coupling을 유지한다. @@ -25,13 +25,19 @@ 일반 운동에너지 차이는 nonnegative Jensen identity로 명시한다. 보존/근사 범위와 독립 평판 oracle: [mass M6~M10](formulation-mass.md). 3. 실제 homogeneous global constraints를 먼저 적용한다. Free space에 완전히 포함된 - director null만 분리한다. 기존 nodal stabilization에 의해 Kpz=0, Kzz>0임을 입증하여 + director null만 분리한다. 개선된 nodal stabilization에서도 Kpz=0, Kzz>0임을 입증하여 finite spectrum을 nodal projection으로 보존하며 부분 BC에 남는 stabilization은 유지한다. Sparse block whitening, rank 예외와 global 복원: [eigen E1~E5](formulation-eigen.md). 4. Actual FEAST mass와 모든 modal 검증은 derived lumped다. `.inp`의 N을 유지하고 finite enclosure·prefix count·cluster capacity·count/solve 일치와 독립 eigenpair 검증을 결합한다. Endpoint/conditioning 한계를 count theorem으로 과장하지 않는다. Backend 경계와 bounded search, 상태 보존: [eigen E6~E8](formulation-eigen.md). +5. 사용자 승인 r2의 numerical scale은 초기 physical K20의 여덟 접평면 회전 대각의 + 평균 `k_ref=sum_i tr(R_i)/8`, `k_d=10^-3 k_ref`로 고정한다. Zero diagonal을 포함한 + 전체 inventory를 사용하며 접평면 기저·전역 좌표에 불변이다. 선형/eigen의 nodal drill + map과 nonlinear의 objective potential·초기 고정 lifecycle은 각각 유지한다. + 양의 inventory, 재계산 공변성, rigid modes, 반례의 exact target과 적용 경계는 + [stabilization S1~S7](formulation-stabilization.md)에 있다. ## Requirement coverage @@ -40,26 +46,28 @@ | IDs | 정식화/검증 연결 | 후속 확인 | | --- | --- | --- | -| `001`, `002`, `004` | mass M1~M4: 원형상, 기존 MITC4·director·재료·기하·단위 | NR, I/O | +| `001`, `002`, `004` | mass M1~M4, stabilization S1/S2: 원형상, physical kernel·director·재료·기하 보존, numerical scale 교체 | NR, I/O | | `003` | mass M1/M5: 양의 일정 rho와 section별 연결 전제 | I/O semantic validation | | `005`, `006`, `026` | mass M5~M10, verification V2: consistent→lumped, coupling, positivity/null, 보존/근사 | NR independent oracle | -| `007`, `008` | eigen E1~E5, verification V3: stable assembly, 실제 BC/null, finite spectrum 및 복원 | NR rank/conditioning | +| `007`, `008` | eigen E1~E5, stabilization S4, verification V3: 실제 BC 뒤 개선된 pencil 보존, stable assembly/복원 | NR rank/conditioning | | `009`, `010`, `011`, `012` | eigen E6~E8, verification V6: 낮은 N, multiplicity, 실제 FEAST, 유한 실패 | NR numerical controls, real runtime | -| `013`, `014`, `018` | verification V1~V5: lumped residual/Gram/energy/rigid/density/좌표, source/global 복원 | NR, Physics | +| `013`, `014`, `018` | verification V1~V5, stabilization S3/S6: lumped 검증과 complete K/지원 partial BC 재계산 공변성 | NR, Physics | | `015`, `016` | mass M2 및 eigen E1/E6: 무감쇠 단일 procedure·동차 BC·input N authority | I/O exact syntax/no-op/exclusion | | `017`, `019` | eigen E8: lambda/normalization 의미, source identity, candidate/final 보존 | I/O additive schema/failure | | `020`, `021`, `022` | verification V6: 지정 TXT Value-only, identity 사전검사/common tolerance | NR family, I/O mapping | -| `023`, `024`, `025` | 기존 K 경로 유지 및 owned 수식/evidence 연결; 실행 결과는 주장하지 않음 | Planning TDD/MSVC/회귀, Physics/Release closure | +| `023`, `024`, `025` | stabilization S5/S7, verification V8: 기존 linear/nonlinear scale 적용·correctness/reference 재검증 | Planning TDD/MSVC/회귀, Physics/Release closure | +| `027` | stabilization S1~S7: 단일 공변 scale·positive/null/rigid 역할과 기존 고정식 대체 경계 | NR 독립 검토, Implementation/Physics | ## Evidence와 handoff -실제 kernel의 PhysicalTransformation20/DrillingTransformation4와 kd 선택식, -ElementFactory의 공통 nodal director 전달을 대조했다. 원본 두 reference의 SHA-256은 -requirements/research와 일치한다. 출처와 실제 read/hash 명령·미실행/위험은 -[verification V7](formulation-verification.md)에 있다. +실제 linear의 kd 선정 및 nonlinear 생성 시 초기 계수 전달·저장 경로를 대조했다. +r1의 mass M5~M10, FEAST E6~E8, full residual·transaction 수식과 NR의 독립 mass oracle +근거를 영향 확인 후 보존한다. 원본 reference hash는 r1 관찰 이력이며 재조회하지 않았다. +출처·명령·미실행은 [verification V7/V8](formulation-verification.md)에 있다. Source/reference/upstream을 편집하지 않았고 수치 실행 결과를 통과로 보고하지 않는다. -현재 새 physics/scope/compatibility 선택이나 사용자 미결정은 없다. +현재 새 physics/scope/compatibility 선택이나 사용자 미결정은 없다. r2 수식은 NR-MFE-001에 +대한 algebraic target을 제공하며 그 반례의 독립 해소 판정이나 runtime 통과를 주장하지 않는다. Numerical Review는 [verification V6](formulation-verification.md)의 dimensionless metric, zero branch, analytic rank와 finite algorithm을 독립 검토하여 threshold, FEAST control/budget, 필수 benchmark 및 reference mode/frame family를 고정한다. I/O는 영속 schema를 정의한다.