Files
FESADev/docs/hex8-structural-analysis/physics-evaluation.md
T
KOKO\Mimi eaa5cbeb21 feat: adopt lumped mass and reduced-coordinate shell HHT
Integrate Hex8 mass verification and fixed-null-basis shell dynamics with numerical and physics handoff evidence. Preserve interrupted reference and full-validation status; full integration validation is deferred until after performance optimization.
2026-10-13 16:57:19 +09:00

123 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hex8 lumped 질량 변경본의 물리 평가
검토일: 2026-10-11–12. 적용 계약은 [PRD](PRD.md), [정식화](formulation.md),
[numeric controls](numeric-controls.md), [reference mapping](reference-model.md),
[HEX8-ADR-010](ADR.md)이다. `$fem-physics-review`에 따라 코드·계약·원본·출력을
변경하지 않고 현재 생성된 evidence만 검토했다. 단위는 입력 일관 단위이며 SI로 단정하지 않는다.
**현재 판정: 원본 5 case의 질량·모드·정적 및 HHT 관측 수지에 한정한 물리 대조 PASS.
전체 configured Debug 회귀는 실패로 종료했으며 최종 test-only 변경 후 전체 790개는 미실행이다.
기능 전체 통과나 release 승인이 아니다.** 과거 consistent 결과를
lumped 변경본의 통과로 승계하지 않는다.
## 원본 고유치의 독립 재계산
현재 evidence는
`.dryforge/lumped-mass-adoption-20261011/references/hexa_freq/`의
`native.json`, `comparison.json`, `hexa_freq_results.h5`다. CLI는 MSVC x64 Debug이며
native exit 0, comparator도 PASS다. HDF5 SHA-256은
`94a576bbfe1d5826235a6323e6d470163ed2e970c4fe6f65a86b2d65a3db7f8a`다.
원본과 실행 복사본의 raw SHA는
`42cbcec2a8b738f8b6d2c1e13114b8840dccdde6fc3e6f8a43a3272e85d82347`로 같다.
저장된 기준 좌표·연결·E/ν/ρ로 Python/NumPy/SciPy에서 별도 8점 적분을 수행했다.
선형 강성은 deviatoric 항과 `κbbᵀ/V` 체적 항으로 재조립하고, 요소별
`m_a=Σ_g ρN_a det J₀g`를 **전체 절점에 조립한 후** 고정 자유도를 제한했다.
생산 `ComputeMass`나 저장된 검사값을 독립 계산의 입력으로 사용하지 않았다.
| 검사 | 현재 계산값 | 해석 |
| --- | --- | --- |
| Inventory와 BC | 442 nodes, 300 elements, 고정 51 / free 1275 scalar DOFs | 원본 모델과 일치 |
| 적분점 기준 Jacobian | `det J₀ ∈ [0.0173052408541, 0.0311031172125]` | 현재 적분점은 양수; whole-cell 인증 대체가 아님 |
| 기준 체적·질량 | `V=56.56854152`, `ρV=444063.050932` | 한 병진 축의 총 질량과 일치; 세 축 trace를 총 질량으로 쓰지 않음 |
| 조립 절점 질량 | `[423.377959037, 1380.99055553]` | 모두 양수이며 전체 영역의 기준 질량을 보존 |
| 모드·강체 증상 | IDs 1–10, 모든 λ>0, 고정 좌표의 eigenvector exact 0 | 지지된 모델에서 불필요한 강체 모드 징후 없음 |
| 독립 `max eta_r` / `max eta_energy` | `1.16389132e-17` / `4.15247286e-19` | 계약 `1e-10` 이내 |
| 독립 mass Gram / modal norm 결함 | `1.33287771e-15` / `4.44089210e-16` | 계약 `1e-10` 이내 |
| 원본 10 λ의 최대 상대차 | `1.96104961e-5 = 0.00196104961%`, mode 4 | 원본 singleton RMS 기준 1% 이내 |
직접 λ 대조는 제공 TXT의 `Value`를 사용했다. 주파수의 제곱이나 인접 모드 재매칭을
사용하지 않았다. 저장된 returned-pair 검사에는 25개가 있으며 최대 `eta_r=1.05545514e-17`,
전체 Gram `4.37942691e-15`다. Reviewer의 독립 벡터 재검산은 공개된 10개에 한정된다.
최저 모드 count/search bound의 별도 수치 검토를 이 물리 검사로 대체하지 않는다.
## 신규 정적 2 case와 HHT 2 case의 수지 검산
닫힌 Debug 정적 2 case와 current production **Release** 선형/TL HHT 각각 101 frames를
별도 8점 적분으로 재구성했다. 원본/복사본 raw bytes, native exit 0과 HDF SHA를 확인했고
각 comparator도 PASS다. 상세 artifact SHA와 관측량은
[lumped 계산 상세](lumped-mass-physics-details.json)에 있다.
동적 폴더는 `references/hexa_dynlinear-release/`와 `references/hexa_dynnonlinear-release/`이며
Debug 동적 실행으로 표시하지 않는다.
강성의 reference-relative derivative로 실제 infinitesimal/Green strain과
`2μ dev(strain)+κ mean(trace)I`, TL first Piola/Cauchy stress, 내력·에너지를
재계산했다. 동적 관측은 `T=½Σm_a|v_a|²`, `P=Σm_av_a`,
`L=Σ(X_a+u_a)×m_av_a`, 실제 endpoint force의 trapezoid work를 사용했다.
정적 case에는 동적 work/energy defect를 정의하지 않았다.
| 현재 결과 | 주요 독립 계산의 최대 차이 |
| --- | --- |
| 선형 정적 | RF `1.74623e-10` force, stress `1.23382e-8` force/length², U `1.13687e-13` force·length |
| TL 정적 10 frames | RF `2.32831e-10`, stress `1.37079e-8`, U `1.42109e-13`; 동일 차원 순서 |
| 선형 HHT 101 frames | RF `3.49246e-10`, T `7.10543e-15`, P `3.63798e-12`, L `6.54836e-11`; 각 force / force·length / mass·length/time / mass·length²/time |
| 선형 HHT work / defect | `1.13687e-13` / `1.27898e-13` force·length |
| 선형 HHT force balance | normalized `1.41900e-16`; 저장 free residual을 포함한 ledger 차이 `7.22645e-10` force |
| TL HHT 101 frames | RF `3.49246e-10`, T `7.10543e-15`, P `5.45697e-12`, L `8.00355e-11`; 선형 HHT 행과 같은 차원 순서 |
| TL HHT work / defect | 각각 `1.70530e-13` force·length |
| TL HHT force / current moment balance | normalized `1.39768e-16` / `2.74239e-16` |
| 요소 합력·해당 arm 모멘트 | 정적/선형/TL HHT의 상쇄 전 norm 합 대비 모두 `2.46e-16` 이하 |
구속 U 및 동적 V/a/A와 free RF는 exact 0이다. Positive 하중에 최종 중심 U의 세 성분이
positive이며 거의 대칭인 원본 형상에서 x/y 차이는 `3.46e-10` length 이하이다.
TL 정적의 실제 Gauss-point `detF≥0.999986939`이고 energy는 양수다.
TL 정적 raw free residual 최대 `35.3624` force, 전체 force balance normalized
`2.48995e-6`은 승인된 정적 Newton residual 계약의 관측이다. 이를 동적 strict criterion으로
바꾸거나 exact equilibrium으로 설명하지 않는다. Stored free residual을 포함한 static ledger의
차이는 `7.10259e-10` force 이하다.
선형 K의 내부 moment는 **reference arm**에서 0이다. Current arm에는
`Σu×f_int`가 남아 선형 HHT의 실제 current moment balance 최대 `287.045278 force·length`다.
같은 내부 current moment를 포함한 ledger 차이는 `1.54483e-9 force·length`로 일치한다.
이를 TL 회전 불변성과 동일시하거나 0으로 강제하지 않는다.
선형 HHT 최종 `(T,U,W,B)`는
`(.249978981888,177.740764261,256.221236292,−78.2304930487)`이고 최대 T는
`51.6145686844`다. T/U는 비음수다. Alpha<0와 endpoint work에서 정확 보존이나
매-frame 단조 감소를 요구하지 않았으며 coarse original만으로 시간 정확도를 보증하지 않는다.
Rounded HDF state의 독립 free residual 재구성 최대 `1.10035e-7` force와 tiny 저장 residual은
구분한다. 이 audit는 내부 high+low gate의 독립 재실행이 아니다.
TL HHT에서는 현재 arm의 내부 moment 최대 `2.34564e-9 force·length`, 저장 free residual을
포함한 current moment ledger 차이 `1.79830e-9`로 회전 불변 내력과 일관된다.
Gauss-point `detF≥0.999979043552`, T/U는 비음수다. 최종 `(T,U,W,B)`는
`(.251339920298,177.770554367,256.242640663,−78.2207463760)`이고 최대 T는
`51.6133464012`다. 새 TL HDF SHA-256은
`8730e5562c91b3c7c9e654c811d2791ab7d24fdcc62286b0b28efa7cdc5957d6`다.
큰 strain/회전·임의 distorted mesh의 정확도에 이 작은 변형 원본을 확대하지 않는다.
## 남은 검토와 coverage
외부 V/A/energy 원본이 없으므로 U CSV 통과만으로 rate·시간 정확도를 판정하지 않는다.
최초 focused 실행은 중단 기록(`exit -1`)이므로 전체 focused PASS로 사용하지 않는다.
후속 `new-kernels.log`/`new-kernels-native.json`은 exit 0 / 38 tests PASS를 확인했다.
여기에는 warped nodal 질량 적분, Jensen energy, BC 전 full mass, scalar/MDOF 시간수렴과
readback 검사가 포함된다. 이 실행 범위를 전체 회귀·임의 warped cell 검증으로 확대하지 않는다.
전체 Debug CTest는 native 8로 자연 종료했으며 raw **784 PASS / 4 FAIL / 1 SKIP (789개)**를
보존했다. Shell C08a 시간수렴과 C08b의 새 chart 이탈 외의 두 실패는 이전 consistent
off-diagonal을 요구하던 factory expectation과 lumped pencil에서는 finite인 overflow fixture다.
Test-only 수정 후 두 검사는 `final-stale-fixtures.log`/native record에서 **2 PASS / native 0**이다.
Factory는 diagonal nodal mass를 확인하고 overflow는 `E=4e306`에서 실제 nonfinite validation을
검사한다. `E=3e306` 사례를 실패시키도록 production gate나 tolerance를 바꾸지 않았다.
같은 최종 Debug rebuild의 HHT force-rate oracle/pointwise 두 검사도 별도 PASS다.
최종 discovery는 790개이며 **전체 790개는 재실행하지 않았다**. Raw 789개와 후속 2+2 결과를
합쳐 새 전체 통과 수를 만들지 않는다. Production 190/reference 16 files의 현재 SHA를
`closed-identities-after-final-regression.json`과 독립 대조해 불일치 0을 확인했으므로,
앞의 원본 5 case 물리 대조는 유지한다. C08a/C08b OPEN 및 C04a SKIP과 이 원본 대조를 구별한다.
새 C08b 예외를 과거 baseline의 동일 실패라고 분류하지 않으며 해당 영향과 최종 manifest는
[Shell 물리 검토](../hht-implicit-dynamics/physics-evaluation.md)에 있다.
전역 최신 상태는
[PRD checklist](PRD.md)를 따른다.