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
@@ -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를 기록하지 않는다.