89 lines
6.3 KiB
Markdown
89 lines
6.3 KiB
Markdown
# 외부 reference projection과 tolerance 적용
|
|
|
|
- Feature ID: `mitc4-shell-feast-eigen2`; Owner: `numerical-review-agent`; revision `r2` (2026-09-10 첫 구현의 외부 Value 5% 승인).
|
|
- 기본 보고서: [numerical-review](numerical-review.md#numerical-review); 기준: [requirements](requirements.md#requirements), [TOLERANCE](../TOLERANCE.md).
|
|
- 판정: 승인된 비교 계약 갱신. 실제 최신 판정은 [첫 구현 검토](implementation-review.md#implementation-first-version-review)에 기록한다.
|
|
|
|
## Eigen의 지정 원본과 logical identity
|
|
|
|
Input은 [shellNL-eigen-meshfine.inp](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine.inp),
|
|
reference는 같은 폴더의 [shellNL-eigen-meshfine eigenvalues.txt](../../reference/shellNL-eigen-meshfine/shellNL-eigen-meshfine%20eigenvalues.txt)다.
|
|
이름·내용·확장자를 보존한다. 공식 FESA 결과는 입력 lexical sibling
|
|
`shellNL-eigen-meshfine_results.h5`이며 exact dataset path·metadata는 I/O 소유다.
|
|
Actual backend MKL FEAST, actual mass derived nodal block lumped인 결과만 비교한다.
|
|
|
|
이번 원본 TXT 직접 읽기에서 각 행은 `Frame: Mode i: Value = ... Freq = ... (cycles/time)`였다.
|
|
TXT 자체에는 step이 없다. 동일 `.inp`의 **유일한 frequency step `Step-2`**가 step authority이며
|
|
필수 count는 해당 `*FREQUENCY`의 N=10이다. Filename의 `shellNL`이나 Step-2라는 이름에서
|
|
preload를 추론하지 않는다. Source step이 유일하지 않으면 임의 step 선택으로 비교하지 않는다.
|
|
|
|
Stable logical row key는 `(reference case, source step name=Step-2, modal frame=Mode i,
|
|
mode index=i, logical quantity=eigenvalue, component=Value)`다. Matrix equation index나
|
|
행 위치를 identity로 쓰지 않는다. `i=1..10`의 오름차순 결과와 label로 직접 대응한다.
|
|
같은 Value를 갖는 다른 mode는 distinct identity다. 표시 precision이 같다는 이유로 exact
|
|
multiplicity를 단정하거나 average/deduplicate하지 않는다.
|
|
|
|
| Modal frame / mode | 원본 Value `[T^-2]` |
|
|
| --- | ---: |
|
|
| 1 | 219507 |
|
|
| 2 | 885523 |
|
|
| 3 | 885523 |
|
|
| 4 | 1855340 |
|
|
| 5 | 2740230 |
|
|
| 6 | 2775150 |
|
|
| 7 | 4149410 |
|
|
| 8 | 4149410 |
|
|
| 9 | 6733790 |
|
|
| 10 | 6733790 |
|
|
|
|
## Family의 독립 결정
|
|
|
|
공통 정책은 같은 model/step/**frame**/logical quantity/차원/좌표/판정 영향만 한 family에
|
|
허용한다. 원본은 Mode i 각각을 frame으로 명시하므로 `eigenvalue:Step-2:Mode-i`라는
|
|
**10개 singleton family**를 정의한다. 각각 scalar invariant 좌표, 단위 차원 `T^-2`,
|
|
component `Value`, `blocking`이다. 모든 mode를 한 frame으로 합치는 것은 원본 frame
|
|
의미를 삭제하며 낮은 mode의 scale을 높은 mode로 바꾸므로 채택하지 않는다.
|
|
이는 과거 singleton 결론을 자동 승계하거나 결과 오차를 본 뒤 고른 family가 아니다.
|
|
|
|
2026-09-10 사용자는 “5% 이내면 첫 구현이므로 Abaqus와의 고유치 정확도 향상은 추후에
|
|
진행하겠습니다. 구현을 마무리해주세요.”라고 승인했다. [Feature ADR](ADR.md)와
|
|
[공통 TOLERANCE의 한정 정책](../TOLERANCE.md)에 따라 `mitc4-eigen-first-implementation`
|
|
profile을 이 Feature의 외부 `Value`에만 적용한다.
|
|
|
|
각 family의 S=abs(reference Value), B=.01S와 행별 relative limit .05는 유지하며
|
|
relative RMS limit을 .05로 적용한다. 이번 양의 singleton에서 RMS=relative error이므로
|
|
각 Value는 **상대오차 5% 이하(inclusive)**일 때 통과한다. 행 판정과 RMS를 각각 기록하고
|
|
profile ID·실제 RMS 한계 .05를 보고한다. Near-zero, zero-reference-scale의 exact-zero,
|
|
named failure와 identity/finite 전검사는 공통 문서 그대로다. 다른 Feature·static family의
|
|
RMS .01, 이 Feature의 전체 c개 내부 검증 1e-10은 변경하지 않는다.
|
|
|
|
기존 r1의 singleton RMS1% 실패 기록은 당시 판정으로 보존한다. 이번 승인은 첫 구현의
|
|
외부 정확도 기준 변경이며 S3 해결·다른 필수 검증 면제·Abaqus 내부 알고리즘 동등성 승인이 아니다.
|
|
Frequency 변환, Freq fitting, mode shapes/변위/회전/stress/reaction은 새 eigen 외부 gate가 아니다.
|
|
|
|
File/dataset/component/schema 누락, wrong step/frame/quantity/backend/mass variant,
|
|
missing/extra/duplicate mode, 비유한 Value 또는 FESA mandatory 수치는 tolerance **전에** 실패한다.
|
|
TXT row 재정렬은 허용하되 모든 nonempty 행의 schema를 파싱하고 원본 Value를 수정하지 않는다.
|
|
Required scalar Value의 finite 검사를 별도 Freq 비교로 대신하지 않는다. Freq는 schema/의미
|
|
확인용이며 수치 acceptance에 넣지 않는다. 모든 family/row/error/scale/RMS/판정의 순서는 결정적이다.
|
|
|
|
## 남는 static portfolio
|
|
|
|
아래는 [새 requirements](requirements.md#requirements)의 기존 acceptance 보존이며 eigen family와 섞지 않는다.
|
|
|
|
| 역할 | 기존 원본과 비교 |
|
|
| --- | --- |
|
|
| `shell-s4`, `shell-s4-linear-limit` | [shell.inp](../../reference/shell/shell.inp), [shell displacements.csv](../../reference/shell/shell%20displacements.csv); 같은 fresh solve 재사용 가능하나 두 역할 evidence 구분 |
|
|
| `shellnl-s4-final` | [shellNL.inp](../../reference/shellNL/shellNL.inp), [shellNL displacements.csv](../../reference/shellNL/shellNL%20displacements.csv); factor-one accepted state |
|
|
| Nonlinear local reaction review | [shellNL reactions.csv](../../reference/shellNL/shellNL%20reactions.csv); RF1/2/3, physical spatial RM1/2 source-key·finite·inventory·error 보고는 review-only |
|
|
|
|
Static U1/U2/U3 global length는 blocking, UR1/UR2/UR3의 기존 fixed-initial global rotation
|
|
의미는 warning-only다. 같은 case/step/frame/차원/좌표/impact별 공통 family와 source
|
|
instance/node/component identity를 유지한다. Local reaction review는 내부 force/moment
|
|
balance·free residual blocking을 대체하지 않으며 RM3/stress를 새 gate로 추가하지 않는다.
|
|
|
|
제외된 네 예제는 원본·복사·cache·과거 결과로도 재사용하지 않는다. 정확한 제외 목록의
|
|
권위는 requirements다. 제외 pressure 예제의 fresh 외부 coverage는 없으며 synthetic
|
|
pressure kernel/하중/평형/schema/comparator는 유지한다. 이번 원본 열람은 지정 eigen 두
|
|
파일에 한정했고 static 파일은 경로 존재만 확인한다. Solver/reference pass 주장은 없다.
|