75 lines
15 KiB
Markdown
75 lines
15 KiB
Markdown
# HHT 동해석 물리 평가
|
||
|
||
- Owner: `physics-evaluation-agent`; 검토일: `2026-09-27`.
|
||
- 판정: **미통과 — C08 시간수렴 실패 유지**. HHT-PHY-005 굽힘 resultant 불일치는 재생성된 원본 HDF5에서 해소를 확인했다. 완료 원본의 전판 관성 평형과 U reference 통과를 전체 physics gate 통과로 확대하지 않는다.
|
||
- 적용 계약: [정식화](formulation.md), [관성 상세](formulation-inertia.md), [N1–N7](numerical-controls.md), [C01–C12](verification-cases.md), [reference](reference-model.md), [I/O](io-contract.md), [상속 recovery §13](../nonlinear-static-newton-raphson/formulation.md#132-integration-point-physical-strain-and-stress).
|
||
|
||
## Findings
|
||
|
||
| ID | 상태 | 근거·영향·후속 owner |
|
||
| --- | --- | --- |
|
||
| HHT-PHY-001 | **C08 필수 시간수렴 FAIL** | 원 physical chart acceleration의 C08a finest 오차 `5.67565924005e-4 > 1e-4`, 마지막 두 차수 `1.028668669/1.028969238 < 1.8`. 별도 회복 후보도 C08a finest `1.005829141e-4`, C08b finest angular-a self-difference `.868938661`로 미달이다. Hidden2 개선만으로 시간 정확도를 입증하지 않는다. 구현·수치 owner의 후속 판단이 필요하다. |
|
||
| HHT-PHY-002 | **기존 reference 대기 해소; coverage 제한 유지** | 공식 101-frame HDF5와 comparator precheck, U 101 families PASS 확인. UR은 frame 1–100에서 row/RMS warning 200건. V/A/반력/에너지는 CSV 비교 대상이 아니다. |
|
||
| HHT-PHY-003 | **제한 Debug evidence 유지** | 기존 focused Debug 68 tests 중 67 PASS/1 C04a SKIP. 이번 C08은 optimized 실행으로 전체 configured Debug/CTest 완료가 아니다. |
|
||
| HHT-PHY-004 | **C04a finest reduction INCONCLUSIVE 유지** | Binary64 acceleration 차이 `3.07902091e-10`은 기존 `1e-10`보다 크고 N7 해상도 `6.29613541e-10`보다 작다. Decimal80 차이 `1.69341451e-73`은 수학적 identity 근거이며 binary64 통과가 아니다. |
|
||
| HHT-PHY-005 | **해소 — 수정 후 원본 HDF5 재검산** | 새 원본 HDF5의 `M11/M22/M12`가 `(t³/12)Cκ`와 최대 symmetric relative 차이 `1.94601128e-16`으로 일치한다. 이전 2배 불일치는 보관본에만 남는다. 100개 noninitial section-resultant dataset의 굽힘 성분만 정확히 `.5`배로 바뀌었고 나머지 데이터는 유지된다. 이 결론은 해당 recovery 수정의 검증이며 C08 통과가 아니다. |
|
||
| HHT-PHY-006 | **원본 시간 정확도 제한** | T 최대 `191.61420902651`, energy defect 최대 `+190.225571555207`, 최종 `−1.39842750647836`. 독립 적분도 같은 T를 준다. 거친 `h/T1≈7.4567`에서 작은 U와 reference 일치가 rate/energy 정확도를 입증하지 않는다. 이 reference에 없는 energy bound를 새 gate로 만들지 않는다. |
|
||
|
||
## 원본 HDF5 독립 계산
|
||
|
||
현재 [공식 HDF5](../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine_results.h5)의 SHA256은 `f07beddaa232abe314e20210534a243d6deaf1f677c598c64f9334428bbecb56`이다. 9월 26일 volume·평형 계산의 원본은 [수정 전 보관본](../../.harness/build/hht-numerical/reference-before-recovery-fix.h5), SHA256 `23bac93d1f7998b2f74a0f68767ae98a9899ee92c53f5170d08a814d3ee936d4`다. 9월 27일 `uv run --with h5py python -B -`로 두 파일의 2033 datasets를 독립 대조했다. 값이 다른 dataset은 100개 noninitial section resultants뿐이다. 해당 dataset 안의 M 성분은 새 값이 옛 값의 정확히 `.5`배이며 N/Q 성분은 같다. 2025 floating datasets의 byte 비교에서도 그 100개 외 변경은 없다. 따라서 아래 평형·kinetic energy·운동학·stress 계산은 동일 데이터에 관한 근거로 유효하며, 굽힘 결과는 아래 새 재검산으로 대체한다.
|
||
|
||
Reviewer는 solver/build 및 artifact 재생성을 실행하지 않았다. 검토는 stdin Python/NumPy 계산과 실행 결과 열람이다. 모든 floating result 값의 finite 확인은 수정 전 audit와 수정 후 finite M 재검산·나머지 데이터 동일성으로 유지된다. 단위는 `consistent-input-units`; 이하 L/F/T는 입력 length/force/time이며 SI로 단정하지 않는다.
|
||
|
||
729 nodes/676 S4, 외곽 104 nodes의 6 DOF 고정, 중심 source node `2`에 constant force `(-100000,-100000,-100000)` F다. `rho=2700`, 면적 `100`, 두께 `.5`, 총질량 `135000`; 독립 27점 적분값은 `135000.00000000003`이다.
|
||
|
||
재계산은 저장 연결·초기 좌표의 bilinear N과 초기 Jacobian에 3×3×3 Gauss–Legendre quadrature를 적용했다. `z∈[-t/2,t/2]`, `x=ΣN_i(X_i+u_i+z d_i)`, `ḋ=ω×d`, `d̈=ω̇×d+ω×(ω×d)`로 volume v/a를 재구성하고 `T=½∫rho v·v dV0`, `Pdot=∫rho a dV0`, `Ldot=∫rho x×a dV0`를 계산했다. Current nodal arm은 X+u, 원점은 (0,0,0)이다. 이 모델의 applied moment는 0이고 support chart는 0이므로 spatial moment 변환은 항등이다. 일반 nonzero constrained rotation의 변환 검증으로 확대하지 않는다.
|
||
|
||
| 검사 | 실제 계산·최대값 | 판정과 한계 |
|
||
| --- | --- | --- |
|
||
| 고정 경계·반력 | 고정 q/v/a/A 모두 exact 0; `Rg−selector(E)=0`, free reaction exact 0; `R−Rg=0` | N2/I/O와 일치. |
|
||
| Full residual | `E−(I+f_int−F)=0`; free force/moment 최대 `4.52473614e-10` F / `3.06939613e-11` F·L | 상쇄된 항으로 N2 분모를 재정의하지 않는다. |
|
||
| N2 accepted 로그 | 101 rows의 최대 `rho_u=1.22427119e-15`, `rho_phi=8.19697100e-16`; frame0 phi numerator=scale=0 | 각각 `<=1e-10`. 양의 u scale 범위 `[200036.43398,446896.14404]` F, phi `[7874.45824,56398.12645]` F·L. Element별 uncancelled terms는 HDF5에 없어 로그 scale 자체를 독립 재조립하지 않았다. |
|
||
| N2 correction | u/phi 순서: q `2.44698e-11/7.62279e-12`, v `4.88286e-11/1.52110e-11`, a `9.34518e-11/2.91120e-11`, A `8.87792e-11/2.76564e-11` | 로그의 무차원 metric 모두 `<=1e-10`. 원 선형계 N2-L은 이번 audit 대상 밖이다. |
|
||
| N6 force | `Σ(F+R)−Pdot` 최대 `7.27596e-10` F; normalized 최대 `9.16951367e-16` | `<=1e-8`. 상쇄 전 applied/support 절점 force norm 및 volume inertia norm 합의 범위 `[401544.1353,1277362.8173]` F. |
|
||
| N6 moment | `Σ(x×F+M)−Ldot` 최대 `1.37915e-10` F·L; normalized 최대 `2.63510938e-16` | `<=1e-8`. 상쇄 전 applied/support moment 및 volume moment norm 합의 범위 `[274879.6378,1244342.4463]` F·L. 두 N6 분자는 infinity norm이다. |
|
||
| 저장 balance | 독립 계산과 `global/equilibrium` 성분별 차이 최대 `7.13044e-10` | 서로 다른 단위의 물리 norm이 아닌 성분별 차이 요약이다. HDF5에 없는 raw momentum/분모를 위 독립 적분으로 보충했다. |
|
||
| Kinetic energy | 저장 T와 직접 volume T 절대차 `3.12639e-13` F·L, 상대차 `2.98657131e-15` | N4 직접 kinetic 기준 `1e-12` 이내. A를 사용하지 않았다. |
|
||
| Energy 정의 | `W−ΣF·(q−q0)=0`, `defect−(T+Uphys+Udrill−E0−W)=0`; frame0 다섯 값 모두 0 | I/O 정의와 일치. 비선형 음수 alpha에 매-frame 감소/정확 보존을 요구하지 않는다. |
|
||
| 방향·대칭 | 중심 `max|Ux−Uy|=2.11758e-21` L; 최종 U=`(-1.17073455e-6,-1.17073455e-6,-2.56368154e-5)` L | 중심 하중 방향·x/y 교환 대칭과 일관. 전 자유도의 부호를 강제하지 않는다. |
|
||
| 회전·변형 규모 | 전판 `max|Uz|/t=9.77616975e-5`, 최대 UR 성분 `1.25625048e-5` rad; `max|d·d−1|=3.33067e-16` | 작은 응답·director 일관성. 큰 회전/rigid-motion 전체 이력 coverage는 아니다. |
|
||
|
||
초기 support force 합은 각 방향 `−.0146805358` F, Pdot는 각 방향 `−100000.014680536` F다. 작은 초기 반력 부호는 consistent mass coupling의 동적 평형과 일치한다. 최종 support 합 `(100032.408356,100032.408356,100011.576861)` F에 applied force를 더하면 독립 `Pdot=(32.4083563,32.4083563,11.5768612)` F와 일치한다. Support 합이 하중 반대값과 정확히 같아야 한다는 정적 판정을 적용하지 않았다.
|
||
|
||
T/Uphys/Udrill은 모두 비음수, 최대값은 `(191.6142090,5.087207660,1.893293439e-5)` F·L, 최대 `Udrill/Uphys=4.38863644e-6`이다. 최대 T와 양의 defect는 frame10(t=1)에 발생한다. 최종 `(T,Uphys,Udrill,W,defect)=(.000284443261,1.399111305,5.197018635e-6,2.797828452,-1.398427506)` F·L. 이는 수치 에너지 결함이며 physical damping energy가 아니다.
|
||
|
||
## Recovery 수정 전·후 검산
|
||
|
||
Plane-stress `C=E/(1−nu²)[[1,nu,0],[nu,1,0],[0,0,(1−nu)/2]]`로 모든 101 frames/element/GP를 검사했다. `N=t C epsilon0`의 `max|차이|/(max|좌변|+max|우변|)`는 `2.04358e-16`이다. 수정 전 `M=(t³/12)C kappa` 대조의 같은 metric은 `0.333333333333334`로 저장값/예상값이 2였다. 수정 후에는 최대 절대차 `1.45519152e-11` F, 같은 symmetric relative metric `1.94601128e-16`으로 일치한다.
|
||
|
||
Frame1, internal element `12`(0-based; source `Part-1-1`, element label `13`), GP2에서 `kappa11=kappa22=−1.72598199555e-5` L^-1이다. `t=.5,E=2.1e11,nu=.3`이면 `M11=M22=−53936.9373610` F다. 수정 전 저장값은 `−107873.8747221` F였고 수정 후 `−53936.93736103468` F로 일치한다. 같은 점의 `S11(bottom,middle,top)=(795234.504841,−499254.790420,−1793738.488372)` F/L²에서 독립 두께 moment `t²(S_top−S_bottom)/12`도 약 `−53936.93736` F다. Source identity는 HDF5 `/model/elements`의 해당 행으로 정한다.
|
||
|
||
전 frame의 face stress 차분 적분과 수정 M의 최대 절대차는 `4.07217431e-6` F, 위 symmetric relative metric은 `1.93401205e-10`이다. 한쪽 `max|M|`만 분모로 쓰는 [main audit](../../.harness/build/hht-numerical/reference-recovery-audit-20260927.json)의 metric은 `3.86802409e-10`으로 동일 차이를 표현한다. 고 E·작은 strain에서 별도 평가된 face stress의 차감은 curvature 대조보다 민감하다. **Face identity가 전역 `1e-12`로 일치한다고 주장하지 않는다.** 수정 전 2배 오류 해소와 유한정밀도 차감 차이를 구별한다.
|
||
|
||
Generalized strain은 midsurface 값이 아니라 두께 평균/moment다. 따라서 `C epsilon0`와 middle stress의 작은 차이, top/bottom 평균과 middle stress의 작은 차이를 오류로 판정하지 않았다. 최대 membrane strain `5.07413e-6`, curvature `1.72598e-5` L^-1, transverse shear strain `4.28336e-6`, stress `1.79377197e6` F/L²는 작은 탄성 변형률 규모와 일관된다. Numerical drill이 physical stress에 포함됐다고 단정할 근거는 없다.
|
||
|
||
## C08 및 제한 evidence
|
||
|
||
[9월 26일 C08 diagnostic 로그](../../.harness/build/hht-numerical/c08-diagnostic-20260926.log)는 195745 ms에 1 PASS/2 FAIL로 종료해 [이전 로그](../../.harness/build/hht-numerical/c08-optimized.log)의 실패를 재현했다. C08a pointwise 독립 volume force/power/momentum은 최대 회전 `.54757231145` rad에서 PASS다. 시간 이력의 acceleration 차수/오차 실패와 finest N7 noise 분리 미달은 별도로 남는다.
|
||
|
||
C08b finest q_u/q_phi/v_u/v_phi/a_u/a_phi self-difference는 `(5.54743e-6,1.38701e-4,1.77613e-4,.0115434,.0119796,.868939)`다. q_u 외 채널은 finest `1e-4`를 넘는다. 최대 회전 약 `.27266` rad로 finite-rotation 범위는 도달했다. Energy/L error finest `9.55904e-7/4.29749e-7`, 마지막 refinement 비율 `.248198/.250140`은 C08b bounds와 일치한다. P error는 `3.85047e-14→4.82500e-14→2.00403e-13`으로 작지만 감소 조건에 실패했다. Roundoff 수준이라는 관찰로 승인 감소 조건을 면제하지 않는다. Finest hidden v/a defect `1.46403e-6/.00158291`은 진단량이며 N2 tolerance에 임의 대입하지 않는다.
|
||
|
||
후속 [회복 후보 probe](../../.harness/build/hht-numerical/c08-recovery-probe-20260926.log)는 3 tests/1 PASS/2 FAIL이며, [C08a split 수정 실행](../../.harness/build/hht-numerical/c08-recovery-split-spectrum-20260927.log)은 2 tests/1 PASS/1 FAIL이다. C08a recovered angular-a finest 최대오차 `1.005829141075e-4`, 마지막 두 raw 차수 `1.77942349/1.99162617`은 기존 bounds를 모두 충족하지 않는다. 수정된 split의 finest null/physical maximum은 `4.64641213e-7/1.00582661e-4`로 physical complement가 지배한다. 최초 probe의 C08a split=0은 loop 누락 diagnostic이므로 근거로 사용하지 않는다.
|
||
|
||
C08b recovered angular-a self-difference는 `.846306569/.881654308/.982191000/.868938661`로 수렴하지 않는다. Finest physical/null maximum은 `.868938153/.00286332558`이다. q/v를 유지하는 null-only recovery로 이 physical complement 오류가 해소되지 않는다는 근거다. Maximum들은 서로 다른 node/time일 수 있어 제곱합으로 합치지 않는다. Post-hidden2 ratio는 C08a finest `2.81779e-16`, C08b pair별 약 `6.06e-17..1.45e-16`으로 작아졌지만, [독립 수치 검토](implementation-numerical-review.md)의 explicit-time scale·recovery N7 noise qualification이 남는다. **Hidden2 개선은 시간 정확도·후보 채택 승인과 다르며 recovered-a order는 INCONCLUSIVE다.** 원 a_h의 FAIL은 그대로다.
|
||
|
||
기존 제한 근거: C01/C03/C04a/C04b scalar 시간수렴 약 2차, C07 alpha0 energy defect `1.14353e-13 <=1e-10`, 기본 alpha의 `omega*h=1000` spectral radius `.904763`은 analytic limit `.9047619048`에 접근한다. C05/C06 kernel/rotation PASS와 C07 physical inertial support reaction은 각각의 검사 범위만 지지한다.
|
||
|
||
## Evidence와 잔여 위험
|
||
|
||
- [원본 INP](../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp), [CSV](<../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine displacements.csv>), [완료 Newton 로그](../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine_log.txt), [수정 후 비교 JSON](../../.harness/build/hht-numerical/reference-after-recovery-fix.json): U 101 families PASS/UR warnings 200. [수정 전 비교 JSON](../../.harness/build/hht-numerical/reference-comparison.json)의 precheck 441774 scalars, U RMS 최대 `.00227058974`, UR RMS 최대 `.02533113821` 근거도 U/UR 데이터 동일성 범위에서 유지된다. 원본 9 nodes의 U/UR projection만 비교한다.
|
||
- [Debug focused](../../.harness/build/hht-numerical/focused-debug-complete.log), [stable kernel](../../.harness/build/hht-numerical/focused-stable-kernel.log), [exact constraints](../../.harness/build/hht-numerical/focused-exact-constraint.log), [C04a Decimal80](../../.harness/build/hht-numerical/c04a-decimal-reduction.json), [독립 수치 검토](implementation-numerical-review.md).
|
||
- [Recovery 수정 후 optimized focused](../../.harness/build/hht-numerical/recovery-green-optimized.log): 13 tests PASS. 수정 전 HDF5를 소급하여 수정하지 않으며 공식 재생성 결과의 별도 검산은 위 SHA256과 수치로 구분한다.
|
||
|
||
실제 shell의 physical acceleration/무질량 좌표 시간 정확도와 C08b self-convergence는 미해결이다. 원본 굽힘 recovery 수정의 물리 대조는 완료했지만 HDF5에 없는 raw hidden vectors·regularity 조건수·N2-L 원 선형계는 이번 audit로 독립 확인하지 않았다. C09–C11 실패 보존·결정론·전체 rigid-motion coverage와 전체 Debug/CTest는 해당 실행 보고서에서 확인해야 한다. 완료 reference는 이 공백을 해소하지 않는다. 계약·수치 한계·artifact를 변경하지 않았으며 본 문서는 release 승인 문서가 아니다.
|