299 lines
19 KiB
Markdown
299 lines
19 KiB
Markdown
# 질량과 modal candidate의 검증식 및 Numerical Review 인계
|
|
|
|
- Feature ID: `mitc4-shell-feast-eigen`
|
|
- Owner: `formulation-agent`
|
|
- Input contract revision: `r2`
|
|
- 기본 보고서: [formulation.md](formulation.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)를 그대로 적용한다.
|
|
|
|
## V1. 공통 scale과 zero branch
|
|
|
|
행렬·벡터 norm을 계산하기 전에 E1의 길이 congruence를 적용한다. 질량은 모두
|
|
`ML²`, stiffness는 `ML²/T²` 단위가 된 행렬에서 norm을 계산한다. Element-only
|
|
oracle에서는 `ell=Le`를 사용하고 assembled 비교에는 동일 global `ell`을 사용한다.
|
|
Norm과 sum-of-squares는 overflow/underflow를 피하는 scaled accumulation을 사용한다.
|
|
입력/행렬/각 eigenpair가 finite인지 먼저 검사한다.
|
|
|
|
이 문서의 모든 ratio `a/b`는 `b>0`에서만 계산한다. `a=b=0`이면 해당 항등식의
|
|
zero-case metric은 0이다. `b=0,a!=0`이면 named zero-scale failure이며 무한값/NaN
|
|
metric으로 성공 결과를 만들지 않는다. `max(1,b)`, arbitrary floor 또는 zero clamp는 없다.
|
|
|
|
대칭성은 `eta_sym(Q)=||Q-Q^T||F/||Q||F`이다. Diagonal copy로 생성한 symmetry와
|
|
독립 quadratic-work 검증은 구분한다. Cross-basis equality `R=S`는
|
|
`||R-S||F/(||R||F+||S||F)`로 측정한다. Mass/stiffness를 같은 norm의 분모에 직접 더하지
|
|
않고 필요한 lambda나 시간 scale을 곱한다.
|
|
|
|
## V2. 질량, rank와 보존 검증
|
|
|
|
- M10의 entrywise scalar oracle와 `M_C` quadratic form을 독립 적분과 비교한다.
|
|
계수·부호/두께 차수가 같은지를 component별 확인한 뒤 전체 norm을 사용한다.
|
|
- M5에서 구성한 `M_C`와 원본 moment, M6의 row-sum 결과, M7의 independent direct
|
|
integration을 따로 비교한다. 변조한 C(1)/C(2)가 lumped 결과 및 검증에 반영되는지
|
|
확인하여 두 mass 계산이 끊긴 우회 경로를 잡는다.
|
|
- Mass original과 derived 모두 `d_i` 방향의 null action을 검사한다.
|
|
Element/global scaled matrix에서 `eta_null=||Mhat z||2/(||Mhat||F ||z||2)`를 쓴다.
|
|
Lumped는 M8의 양의 두 항 및 physical positive-space Cholesky로 rank5를 검증한다.
|
|
Consistent physical 20-coordinate matrix도 positive여야 한다. 잘못된 quadrature에
|
|
의한 추가 hourglass/null mass를 허용하지 않는다.
|
|
- `mi>0`, `ji>0`, `zi=hi/mi`, `vi=ji/mi-zi²>0`를 검사한다.
|
|
`vi/ell²`, `|hi|/sqrt(mi ji)`는 dimensionless conditioning evidence다.
|
|
양의 `vi`를 낮은 rank로 바꾸는 기준을 두지 않는다. Direct centered integral
|
|
`integral rho Ni (z-zi)² dV`와 `ji-hi²/mi`의 일치는 cancellation을 드러낸다.
|
|
- Scaled node positive mass의 Cholesky reconstruction error와 reciprocal condition
|
|
estimate를 기록한다. 후자는 작은 block inverse action의 norm으로 계산할 수 있다.
|
|
물리 positive/null rank는 E2로 정하고 ill-conditioning은 별도 실패다.
|
|
- 총 질량은 uniform translation의 `q^TMq/|u|²`, geometry 적분의 `m=sum mi`를
|
|
비교한다. Spatial centroid는 M5의 scalar moment로 얻은
|
|
`sum(mi Xi+hi di)`와 독립 `integral rho X dV`를 비교한다.
|
|
좌표 원점으로 인한 cancellation을 피하려면 한 source node `Xref`를 공통 원점으로
|
|
잡고 first moment 차이를 `m ell`로 나눈다.
|
|
- M9의 `Delta=q_dot^T(M_L-M_C)q_dot`와 nonnegative pairwise integral을 독립 비교한다.
|
|
Scale은 `q_dot^T M_L q_dot + q_dot^T M_C q_dot`이며 zero motion/null-only field는
|
|
별도 zero branch다. Arbitrary velocity에서 equality를 요구하지 않는다.
|
|
|
|
## V3. Reduction과 full modal residual
|
|
|
|
`y_f=C^T D^-1 phi`, `k=||Kf||F`, `m=||Mf||F`라 두면
|
|
|
|
\[
|
|
r_f=K_f y_f-\lambda M_f y_f,\qquad
|
|
\eta_r=\frac{\|r_f\|_2}{(k+|\lambda|m)\|y_f\|_2}. \tag{V1}
|
|
\]
|
|
|
|
이것이 **모든 원 free DOF**의 inertia/elastic force balance다. 물리 공간에
|
|
project한 residual만으로 drilling/null 복원 오류를 놓치지 않는다.
|
|
`Kf y_f` 및 `Mf y_f`를 solve에 사용한 축소 matrix를 재사용하지 않고 원 조립값에서
|
|
검산한다. `Mf`는 actual lumped이며 consistent로 바꾸면 잘못된 metric이다.
|
|
`lambda=0`에서도 `k>0`이면 유효한 denominator가 있다. `Kf=0,lambda=0`은 zero branch,
|
|
zero eigenvector는 normalization 이전부터 실패다.
|
|
|
|
Whitened solve의 추가 metric은 `eta_w=||A x-lambda x||2 /
|
|
((||A||F+|lambda|)||x||2)`다. Backend `res/epsout`, eta_w, eta_r은 서로 다른 evidence다.
|
|
E3의 identity도 다음으로 검산한다.
|
|
|
|
\[
|
|
\eta_{KZ}=\frac{\|K_fZ-Z\operatorname{diag}(\kappa)\|_F}
|
|
{\|K_f\|_F\|Z\|_F+\|Z\operatorname{diag}(\kappa)\|_F},\quad
|
|
\eta_{MZ}=\frac{\|M_fZ\|_F}{\|M_f\|_F\|Z\|_F},\quad
|
|
\eta_{PZ}=\|P^TZ\|_F. \tag{V2}
|
|
\]
|
|
|
|
`nz=0`이면 V2는 적용 대상 없음으로 기록한다. M8/E3의 analytic proof가 먼저이고
|
|
V2 threshold만으로 새로운 nullspace를 발견하거나 coupling을 생략하지 않는다.
|
|
Kzz positivity와 `n/nz/nf`를 source node별 예상 null 여부와 연결한다.
|
|
Constraint metric은 `||(I-CC^T)D^-1 phi||2/||D^-1 phi||2`이며 source에 복원한
|
|
constrained components 자체도 exact zero를 확인한다.
|
|
|
|
## V4. Mass normalization, Gram, energy와 Rayleigh
|
|
|
|
각 mode의 generalized mass `g_i=phi_i^T M phi_i=y_i^T Mf y_i`는 finite, strictly
|
|
positive여야 한다. `phi_i <- phi_i/sqrt(g_i)`로 normalization한 뒤 재계산한다.
|
|
계산된 전체 c개 column에 대해
|
|
|
|
\[
|
|
G_{ij}=\phi_i^T M\phi_j,\quad
|
|
\eta_{norm,i}=|G_{ii}-1|,\quad
|
|
\eta_{orth,ij}=\frac{|G_{ij}|}{\sqrt{G_{ii}G_{jj}}}\ (i\ne j),\quad
|
|
\eta_G=\frac{\|G-I\|_F}{\sqrt c}. \tag{V3}
|
|
\]
|
|
|
|
Column pairing과 linear independence를 확인하며 FEAST의 c와 N을 구분한다.
|
|
부족한 rank를 같은 vector 복사로 채우면 V3에서 실패한다.
|
|
|
|
\[
|
|
h_i=y_i^TK_fy_i,\quad R_i=h_i/g_i,\qquad
|
|
\eta_{energy,i}=\frac{|h_i-\lambda_i g_i|}
|
|
{(k+|\lambda_i|m)\|y_i\|_2^2}. \tag{V4}
|
|
\]
|
|
|
|
`R_i [T^-2]`는 Rayleigh quotient다. V4는 eigenvalue가 0인 경우에도 쓸 수 있고
|
|
`|R_i-lambda_i|/|lambda_i|`만을 강제하지 않는다. 단위 modal amplitude에서 elastic
|
|
energy는 `h_i/2`, peak kinetic energy는 `lambda_i g_i/2`다. Physical/drilling 분해가
|
|
필요한 내부 검산에서는 `h_phys+h_drill=h_i`를 확인하되 별도의 drilling-energy
|
|
acceptance나 output quantity를 추가하지 않는다.
|
|
|
|
## V5. Rigid mode, coordinate 및 density 불변식
|
|
|
|
Free valid shell/patch의 rigid fields는 `u_i=c+Omega cross Xi`,
|
|
`theta_i=(I-di di^T)Omega`이다. 그 span에는 세 병진과 세 회전이 있다.
|
|
각 vector의 scaled K action을 `||Khat y||2/(||Khat||F ||y||2)`로 검증하고
|
|
mass Gram rank로 여섯 물리 움직임의 independence를 확인한다.
|
|
`Omega`의 full normal 성분을 UR에 넣어 drilling energy를 자극한 field는 이 테스트가 아니다.
|
|
Physical rigid zero eigenvalues는 finite mass 모드이고 E2의 massless drilling과 다르다.
|
|
Clamped reference에 여섯 zero mode를 요구하지 않는다.
|
|
|
|
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를 유지하면
|
|
|
|
\[
|
|
M_C'=c_\rho M_C,\quad M_L'=c_\rho M_L,\quad
|
|
\lambda_i'=\lambda_i/c_\rho,\quad
|
|
\Phi'=\Phi Q/\sqrt{c_\rho}. \tag{V5}
|
|
\]
|
|
|
|
단일 simple eigenvalue에서는 Q가 sign이고 repeated group에서는 orthogonal mixing이다.
|
|
Eigenvalue scaling error는 `|c_rho lambda_i'-lambda_i|/s`로 측정한다
|
|
(`s`는 baseline E6 operator time scale). Group vector 비교는
|
|
`U=L^T P^T C^T D^-1 Phi`, `U'=L^T P^T C^T D^-1(sqrt(c_rho) Phi')`로 정의한
|
|
projector 차이 `||UU^T-U'U'^T||F/sqrt(2r)`를 사용한다. r은 group dimension이다.
|
|
Dense projector를 구성하지 않고 orthonormal U/U'의 cross-Gram으로 같은 norm을 계산할
|
|
수 있다. Arbitrary clustered-but-distinct vectors를 회전하여 다른 eigenpairs로 만들지 않는다.
|
|
|
|
## V6. Lowest N, cluster, near-zero와 오류 판정 소유권
|
|
|
|
E6 count/solve history는 각 `(a,b)`, prefix empty evidence, status, count, m0,
|
|
returned m, loop/epsout, bounds source와 final selected ranks를 보존한다.
|
|
모든 returned pair에 interval separation을 검사하고 requested N개만 검사하지 않는다.
|
|
Near-zero/negative 분류 scale은 `s` 또는 그와 동등한 E6 operator scale이며 reference
|
|
최소값이나 arbitrary absolute frequency가 아니다. Raw lambda는 바꾸지 않는다.
|
|
|
|
NR가 구현 전에 결정해야 할 항목은 다음과 같다.
|
|
|
|
| 대상 | 수치값/필수 검사 소유권과 필요한 scale |
|
|
| --- | --- |
|
|
| Matrix symmetry, moment/oracle/centroid/M9 | V1/V2의 same-unit norm, total mass 및 `m ell`; roundoff/독립 적분 오차 분리 |
|
|
| Null/orthogonal basis, KZ/MZ, mass conditioning | M8/E2 analytic rank, V2 및 작은 positive block condition; near-null 삭제 금지 |
|
|
| Residual, Gram, energy, rigid modes | V1~V4, V5 K-action; machine precision·차원·conditioning 근거 |
|
|
| Near-zero/negative/cluster 분류 | `|lambda|/s`, pairwise `|lambda_i-lambda_j|/s`; raw value 보존 |
|
|
| 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 |
|
|
| 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
|
|
검사와 실제 FEAST runtime known-spectrum 검사는 모두 필요하다. Size1, N=n, repeated
|
|
group>N, tight cluster, zero/negative, empty interval, insufficient subspace, count collision,
|
|
unresolved conditioning 및 allocation/index failure가 해당 공식 계약을 검증한다.
|
|
Case의 구체적 목록·숫자는 NR가 정하고 Planning이 tests와 TDD steps에 연결한다.
|
|
|
|
외부 비교는 지정 [원본 input](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp)과
|
|
[원본 TXT](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine%20eigenvalues.txt)의
|
|
`Value`만 사용한다. `lambda [T^-2]`, source `Step-2`, mode 1..10이 의미적 대응이다.
|
|
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
|
|
runtime, numerical reference comparison은 실행하지 않았다. 이 문서는 수치 통과 evidence가 아니다.
|
|
|
|
`Get-Content`, scoped `rg`로 M4의 변환·stabilization과 공통 nodal frame 전달을 확인했다.
|
|
한 scoped `rg` 호출은 존재하지 않는 `runtime_element_factory.cpp`와 PowerShell literal
|
|
glob 경로 때문에 exit `1`이었다. `rg --files`/`rg -n ... src/fesa`로 실제
|
|
`element_factory.cpp`, `shell_geometry.cpp`를 찾아 재조회했고 exit `0`이었다.
|
|
Intel parameter/API/status의 공식 문서를 2026-09-06 다시 열어 count 의미,
|
|
endpoint/count failure와 m0 capacity를 확인했다(E7의 URL 및 research S05~S07).
|
|
|
|
`Get-FileHash`는 exit `0`이며 원본 SHA-256은 upstream과 같다.
|
|
Input: `913b1abc604e62bc5f995bf5523924e17ea03925102a7bd22d39226ba0ea7339`.
|
|
TXT: `20d97ca3fd51f5b956f2c1ed7565557c68f74e61e41b913748515ef43a0f7f0b`.
|
|
|
|
Owned 4개 문서를 `python -B -` read-only here-script(`pathlib`, `re`,
|
|
`urllib.parse.unquote`)로 정적 검사했다. Owner/Feature/revision, 26개 requirement
|
|
coverage, 상대 링크 실재, trailing whitespace/final newline, display-math delimiter와
|
|
언어 혼입을 검사했다. Exit `0`, documents `4`, local links `38`, requirements `26`,
|
|
issues `0`이다. `git diff --check`도 exit `0`이며 Coordinator 소유 `coordination.md`의
|
|
LF/CRLF warning만 출력되었다. 새 untracked owned 문서의 whitespace는 위 Python 검사로
|
|
별도 확인했다. `git status --short`에서 owned 4개와 타 owner coordination 변경을 구분했으며
|
|
stage/commit 또는 타 owner 수정은 하지 않았다.
|
|
|
|
잔여 위험은 매우 얇은 shell/거의 정렬된 부분 BC의 mass conditioning, geometry quadrature
|
|
검사점 밖의 전역 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은 이 단계에서 미실행이다.
|