docs: record covariant MITC4 stabilization research
This commit is contained in:
@@ -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를 기록하지 않는다.
|
||||
|
||||
Reference in New Issue
Block a user