eaa5cbeb21
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.
352 lines
36 KiB
Markdown
352 lines
36 KiB
Markdown
# HHT 동해석 물리 평가
|
||
|
||
2026-10-11 질량 정책 변경: [HHT-ADR-012](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다.
|
||
|
||
## 2026-10-12 lumped 변경본 원본의 물리 검토
|
||
|
||
**판정: 현재 원본 101 endpoints의 nodal inertia·평형·에너지 정의는 제한된 PASS.
|
||
C08 시간 정확도 및 기능 전체 통과를 뜻하지 않는다.** `$fem-physics-review`로 새 결과를
|
||
읽기 전용 검산했다. 아래 9월 consistent 결과와 구분한다. 상세 값은
|
||
[lumped 계산 결과](lumped-mass-physics-details.json)에 있다.
|
||
|
||
실행 evidence는 `.dryforge/lumped-mass-adoption-20261011/references/shell-hht/`의
|
||
`native.json`, `comparison.json`, `shellNL-dyn-meshfine_results.h5`다. Current production
|
||
MSVC x64 **Release** CLI exit 0, U의 101 families blocking PASS, UR warnings 200건이다.
|
||
HDF SHA-256은 `e08f0ab304174f71c21c6644a6b7075ff5b122b2f7096936ddbcac6bcfbfb4ed`다.
|
||
원본/실행 복사본 raw bytes가 같으며 metadata는 `nodal-lumped-kinetic`이다.
|
||
이 CLI를 Debug 실행으로 표시하지 않는다.
|
||
|
||
저장된 reference 좌표·director·두께·밀도에서 **별도 27점 적분**으로
|
||
`(m_i,s_i,j_i)=∫ρN_i(1,z,z²)dV₀`를 재구성했다. 저장된 spatial ω/ωdot와 director로
|
||
`d_dot=ω×d`, `d_ddot=ωdot×d+ω×(ω×d)`를 계산하고 절점 위치
|
||
`x_i=X_i+u_i`의 nodal kinetic measure에서 T/Pdot/Ldot를 직접 합산했다.
|
||
Interpolation한 volume velocity의 제곱인 과거 consistent 식을 사용하지 않았다.
|
||
이 flat centered 원본은 `s_i=0`, 총질량 `135000.00000000003`, `Σj_i=2812.5000000000014`다.
|
||
|
||
| 검사 | 현재 최대값 | 해석 |
|
||
| --- | --- | --- |
|
||
| T 직접 적분 대조 | 절대 `1.77636e-13`, 상대 `3.76138e-15` | N4 `1e-12` 이내 |
|
||
| N6 force / moment balance | normalized `9.98353e-16` / `1.97415e-16` | 각 `1e-8` 이내; 상쇄 전 절점/관성 term norm 합 사용 |
|
||
| 공간 병진 inertia 대조 | `1.60071e-10` force | 별도 질량 적분과 저장 generalized inertia 병진부의 차이 |
|
||
| Fixed q/v/a/A, free reaction | 모두 exact 0 | 구속과 반력 projection 일관 |
|
||
| Residual, Rg projection, work/defect 정의 | 모두 exact 일치 | `E=I+f_int−F`, `W=ΣF·q`, `defect=T+Uphys+Udrill−E0−W` |
|
||
| 중심 x/y 대칭·director norm | `4.23516e-22` length / `3.33067e-16` | 대칭 하중과 단위 director에 일관 |
|
||
| Section N/M/Q constitutive identity | symmetric relative `1.94033e-16` / `2.00805e-16` / `0` | `tCε₀`, `(t³/12)Cκ`, `(5/6)tGγ`와 일치 |
|
||
|
||
초기 중심 node2의 각 병진 acceleration은 `−500.7407241161487`이고 초기 support force 합은
|
||
exact 0이다. Nodal diagonal 병진 질량에 가해진 constant force와 일치하며 과거 consistent
|
||
mass의 비국소 초기 관성 반력을 요구하지 않는다. 최종 중심 U는
|
||
`(−1.17073377449e-6,−1.17073377449e-6,−2.56367687489e-5)`이고 하중 방향과 일관된다.
|
||
`max|Uz|/t=9.77607904e-5`, strain 최대 `5.07413251e-6`, stress 최대
|
||
`1.79376483e6 force/length²`다. 단위는 입력 일관 단위이며 SI로 단정하지 않는다.
|
||
|
||
T/Uphys/Udrill은 모두 비음수다. 최종 `(T,Uphys,Udrill,W,defect)`는
|
||
`(9.31920246e-5,1.39910648216,5.19700964e-6,2.79782362979,−1.39861875859)`이며
|
||
최대 T `64.1247614232`, 최대 `|defect|=62.7362408018`이다. 이는 같은 kinetic/work 정의의
|
||
재현이고, coarse `h=.1`에서 rate·energy 시간 정확도를 증명하지 않는다. Alpha<0의 비선형
|
||
계산에 exact energy conservation이나 매-frame 단조 감소 기준을 추가하지 않았다.
|
||
|
||
모든 support rotation이 0인 이 원본에서는 spatial reaction과 chart reaction이 일치한다.
|
||
일반 nonzero prescribed rotation의 `Jl^-T` 변환, arbitrary warped 모델, 초기조건 확대,
|
||
raw hidden vectors와 C08 시간수렴은 이 원본 audit의 coverage 밖이다. 아래 새 C08a는
|
||
변경본에서도 FAIL이며 원본 U 통과로 해소하지 않는다. 전체 configured Debug 검증의
|
||
진행·중단 기록은 현재 [PRD checklist](PRD.md)를 따른다.
|
||
|
||
새 `new-kernels.log`와 native record는 38 tests PASS / exit 0이며 그 범위의 warped nodal
|
||
moments·Jensen·partial tangent·moving null 등 독립 검사를 지지한다.
|
||
현재 `full-direct.log`에서 C08a의 **pointwise** 독립 force/power/momentum 검사는 PASS다.
|
||
바로 다음 full-coordinate 시간수렴 검사는 FAIL이므로 이 두 판정을 구별한다.
|
||
|
||
### 변경본 C08a — HHT-PHY-007: 시간수렴 FAIL
|
||
|
||
현재 MSVC x64 Debug 실행의
|
||
`.dryforge/lumped-mass-adoption-20261011/full-direct.log`에서
|
||
`HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence`는
|
||
731.27초 후 FAIL로 닫혔다. 이는 새 lumped oracle를 사용한 실행 판정이며 과거 consistent
|
||
수치를 재인용한 결과가 아니다. 계약 [C08a](verification-cases.md) 및
|
||
[N7](numerical-controls.md)의 grid·기준은 바꾸지 않았다.
|
||
|
||
| 현재 측정 | 실제 값 | 기존 기준·판정 |
|
||
| --- | --- | --- |
|
||
| Finest `h=1/256` physical chart angular-a normalized 최대오차 | `5.6747291267426469e-4` | `<=1e-4` 미달 |
|
||
| 마지막 두 refinement 차수 | `1.0283765928414674`, `1.0294567508174022` | 각각 `>=1.8` 미달 |
|
||
| Finest angular-v 오차 / 100×noise bound | `1.1876972777062108e-6` / `1.6576860896252254e-6` | N7 separation 미달; 차수 근거 불충분 |
|
||
| Finest angular-a 오차 / 100×noise bound | `5.6747291267426469e-4` / `8.1218686879245506e-4` | N7 separation 미달; 차수 근거 불충분 |
|
||
|
||
제조 하중은 현재 `ρN_i dV₀` nodal measure의 독립 inertia로 구성한다.
|
||
같은 orbit의 pointwise force/power/momentum PASS는 이 관성식의 물리 대조를 지지하지만,
|
||
무질량 회전 좌표를 포함한 constrained 시간 이력의 정확도를 대신하지 않는다.
|
||
오차와 N7 noise를 분리하지 못한 구간의 차수를 확정된 수렴 차수로 승인하지 않는다.
|
||
관측된 약 1차와 finest bound 미달이 그대로 남아 있으며 tolerance를 완화하지 않았다.
|
||
|
||
로그의 null-only 회복 **진단 후보**는 finest angular-a 최대오차
|
||
`1.0030608493534597e-4`, physical/null maximum
|
||
`1.0030577885358542e-4` / `4.6944218244936117e-7`이다.
|
||
Post-hidden2는 `2.9755320458171044e-16`으로 작아졌지만 physical complement 오차가
|
||
기준을 넘는다. Maximum은 서로 다른 시점일 수 있어 합성하지 않는다.
|
||
이 후보 진단을 채택된 상태·시간수렴 PASS로 표현하지 않는다.
|
||
|
||
과거 consistent finest 오차 `5.675659240050177e-4`와 현재 값은 비슷하지만 동일하지 않다.
|
||
동일한 실패 유형이 남았다는 결론이며 질량 변경이 시간수렴 문제를 해결했다는 근거는 없다.
|
||
현재 C08b는 아래 예외로 FAIL이며 전체 789개 회귀도 아래 기록처럼 실패로 종료했다. 후속 owner는 구현·수치 검토이며,
|
||
본 물리 검토에서 적분 알고리즘·null 처리·acceptance를 변경하지 않는다.
|
||
|
||
### 변경본 C08b — HHT-PHY-008: 새 refinement 중단 FAIL
|
||
|
||
같은 `full-direct.log`의
|
||
`HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`는
|
||
438.18초 후 `invalid-dynamic-rotation` 예외로 FAIL이다. **과거 consistent 실행의
|
||
최종 self-difference assertion 실패와 다른 실패 경로이며 원인 조사가 필요하다.**
|
||
이 결과를 기존 baseline의 동일 실패라고 분류하지 않는다.
|
||
|
||
C08b는 무하중·무구속 9절점/4요소 centered plate이며 span 2×2, `t=.2,ρ=1,E=1000,ν=.3`,
|
||
총 기준 질량 `.8`이다. Initial velocity는 translation `(.125,−.25,.0625)`와
|
||
rotation `(.8,.6,.4)` 및 `vz += .02xy`로 시작하고 무질량 회전 성분을 초기 constraint로
|
||
맞춘다. 현재 nodal 질량에서 이 초기 prescribed physical field의 독립
|
||
`T0=.29818583333333337`, `P0=(.1,−.2,.05)`는 양의 에너지·일정 선형 운동량 규모를 준다.
|
||
이 직접 초기장 계산은 예외 시점의 상태를 재구성한 결과가 아니다.
|
||
|
||
| 완료된 현재 grid | Normalized energy drift | P drift | L drift | accepted `phi_max` |
|
||
| --- | ---: | ---: | ---: | ---: |
|
||
| `h=1/64` | `2.5065432169060303e-4` | `2.45022860759194e-15` | `1.0727438825677137e-4` | `.27391502319015193` |
|
||
| `h=1/128` | `6.4154991143669873e-5` | `6.335052199623923e-15` | `2.7384802983989645e-5` | `.27394592218709063` |
|
||
|
||
첫 refinement의 energy/L ratio는 `.255950069845` / `.255278109053`으로 감소한다.
|
||
이는 두 완료 grid의 관측이며 다섯 grid의 마지막 두 refinement 조건을 충족한 결과가 아니다.
|
||
P drift는 이미 반올림 수준의 작은 값이고 감소하지 않았지만, 미실행 finer grids의
|
||
승인 감소 조건을 미리 면제하거나 판정하지 않는다.
|
||
|
||
세 번째 `RunPlate(h=1/256)`에서 예외가 발생했다. 이어질 `1/512,1/1024` 및 grid 전체가
|
||
준비된 뒤 계산하는 6-channel self-difference·N7 noise separation·finest energy/momentum
|
||
판정은 생성되지 않았다. 완료된 두 grid의 작은 energy drift나 원본 101 U families PASS로
|
||
이 검증 공백을 채우지 않는다.
|
||
|
||
`EvaluateDynamicRotation`의 해당 diagnostic은 phi·initial director·velocity·acceleration의
|
||
finite 검사, initial director unit 검사, principal-chart margin을 함께 포함한다.
|
||
최초 full 로그의 메시지만으로는 어떤 조건이 실패했는지 구분할 수 없었지만,
|
||
추가 진단이 **finite Newton trial의 principal-chart 이탈**을 확인했다.
|
||
|
||
추가 evidence는 `.dryforge/lumped-mass-adoption-20261011/c08b-diagnostic/`의
|
||
`run.log`, `run-native.json`이며 별도 진단 probe는 exit 1이다. `h=1/256`, increment 56,
|
||
iteration 3, `t=.21875`, `phase=newton`, `third=false`에서 내부 node index 4
|
||
(0-based, fixture source label 5)의 phi는
|
||
`(.64127523289755728,−1.1977756953049712,3.6162098692194427)`다.
|
||
독립 norm 재계산 `|phi|=3.8630136368942867 > π`이므로 승인된 principal-chart margin을
|
||
위반한다. 기록된 9개 절점의 phi/v/a는 모두 finite다. Fixture 초기 director는
|
||
`(0,0,1)`로 단위이며 이 진단은 수렴 후 회복 단계나 새 유효한 accepted endpoint의
|
||
물리량이 아니다. Run-log SHA-256은
|
||
`10c25d9bb5fb89f925701f318f9b74e1d08bbeb837016d37cc51345ce6076aad`다.
|
||
|
||
Completed-grid `phi_max≈.274`와 rejected Newton trial의 `|phi|≈3.863`을 구별한다.
|
||
직접적인 거부 조건은 확인했으나 **왜 이 Newton overshoot가 발생했는지**의 근본 trigger와
|
||
안정성 영향은 미확정이다. 지원된 물리 궤적 자체가 π를 넘어야 한다거나 원본 101 endpoints가
|
||
손상됐다는 결론으로 확대하지 않는다. 수치 owner가 직전 유효 상태·correction·tangent/
|
||
constraint conditioning을 추가 조사한다. Predicate 완화·director 재정규화·clamp·시간 grid
|
||
변경으로 통과시키지 않는다. 필수 C08b coverage는 미완료이며 본 검토는 계약·코드·원본·출력을
|
||
변경하지 않았다.
|
||
|
||
### 최종 회귀와 test-only 후속 검증의 구분
|
||
|
||
`full-direct-summary.json`/`full-direct-native.json`의 전체 MSVC x64 Debug 789개 실행은
|
||
자연 종료 native **8**, **784 PASS / 4 FAIL / 1 SKIP**다. Raw 실패 4개는 C08a/C08b 및
|
||
`SolidFrequencyProcedure.RejectsOverflowingOriginalPencilValidationScale`,
|
||
`ElementFactory.SolidBindingPreservesThreeComponentsAndReferenceMass`이며 C04a finest는
|
||
SKIP다. 이 원래 판정을 후속 focused 결과로 덮어쓰지 않았다.
|
||
|
||
최종 test-only 수정은 세 파일에 한정된다. `RigidForceRates` 병진 시간미분 coefficient를
|
||
현재 nodal measure의 `.2`로 맞추고 24개 force 성분의 독립 1·2차 시간미분 검사를 추가했다.
|
||
Factory expectation은 consistent off-diagonal을 요구하던 이전 값을 lumped 질량에 맞췄으며,
|
||
overflow fixture는 lumped pencil에서 finite인 `E=3e306` 대신 실제 nonfinite validation을
|
||
유발하는 `E=4e306`으로 변경했다. Production·형상 predicate·tolerance 변경은 없다.
|
||
|
||
| 실행 시점·범위 | 결과 | 현재 해석 |
|
||
| --- | --- | --- |
|
||
| 수정 전 전체 789 | 784 PASS / 4 FAIL / 1 SKIP, native 8 | Raw 실패 보존 |
|
||
| 최종 Debug rebuild / discovery | build native 0, 발견된 tests 790 | Discovery는 실행 통과가 아님 |
|
||
| 최종 HHT oracle focused | 새 force-rate 시간미분 + 기존 pointwise orbit, 2 PASS | `final-oracle-rebuild/ctest.log`, native 0 |
|
||
| 최종 stale fixture focused | Overflow gate + factory lumped expectation, 2 PASS | `final-stale-fixtures.log`, native 0 |
|
||
| 최종 전체 790 | **미실행** | C08a/C08b OPEN, C04a SKIP을 전체 PASS로 바꾸지 않음 |
|
||
|
||
위 C08a raw 수치는 force-rate oracle 수정 전 test binary의 결과다. 수치 검토의 소비 경로
|
||
확인에서 변경된 병진 force-rate rows는 제조 hidden/null 회복 계산에서 읽지 않으므로,
|
||
이 수정이 C08a 실패의 원인이었다거나 시간수렴을 해결했다는 결론을 내리지 않는다.
|
||
C08b는 free fixture이며 확인된 rejected Newton trial의 chart 이탈도 별도 미해결로 남는다.
|
||
|
||
최종 소유권·SHA record는 `final-test-identities.json`이다. 이전
|
||
`final-oracle-identities.json`의 force-only 설명은 세 test 파일 중 두 개를 누락한 raw note이므로
|
||
최종 manifest의 정정을 따른다. `closed-identities-after-final-regression.json`의 production
|
||
190 files와 reference 16 files의 SHA를 현재 파일에서 독립 재계산해 불일치 0을 확인했다.
|
||
따라서 앞의 닫힌 원본 수지 대조는 같은 production·원본에 관한 근거로 유지하되,
|
||
최종 전체 회귀 통과나 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`, 현재 checkout에 없음)의 SHA256은 `f07beddaa232abe314e20210534a243d6deaf1f677c598c64f9334428bbecb56`이다. 9월 26일 volume·평형 계산의 원본은 수정 전 보관본(당시 경로: `../../.harness/build/hht-numerical/reference-before-recovery-fix.h5`, 현재 checkout에 없음), 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`, 현재 checkout에 없음)의 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`, 현재 checkout에 없음)는 195745 ms에 1 PASS/2 FAIL로 종료해 이전 로그(당시 경로: `../../.harness/build/hht-numerical/c08-optimized.log`, 현재 checkout에 없음)의 실패를 재현했다. 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`, 현재 checkout에 없음)는 3 tests/1 PASS/2 FAIL이며, C08a split 수정 실행(당시 경로: `../../.harness/build/hht-numerical/c08-recovery-split-spectrum-20260927.log`, 현재 checkout에 없음)은 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은 각각의 검사 범위만 지지한다.
|
||
|
||
## 2026-10-12 초기 Newton 정책 변경본의 물리 검토
|
||
|
||
[HHT-ADR-013 변경 evidence](newton-start-policy.md)는 위 consistent mass 시기의 기록과 구분한다.
|
||
현재 nodal lumped kinetic mass와 q_p/q_n 초기 선택을 사용한 공식 C08b는
|
||
h=1/64, 1/128, 1/256, 1/512, 1/1024 모두 T=.25까지 완료했다. Principal-chart 예외는
|
||
재발하지 않았고 h=1/256의 별도65-frame runtime 회귀도 PASS다. 이는 시간 정확도
|
||
acceptance의 통과가 아니다. 전체802 Debug 회귀는11384.61초 뒤 native8로 자연 종료해
|
||
799 PASS·2 FAIL·1 SKIP이다. 예외는 C08a/C08b 정확도 실패와 기존 C04a SKIP이며
|
||
새 runtime 예외는 없다. Source·원본·실행 파일의 검증 전후 hash가 일치한다.
|
||
최종 독립 물리 감사도802개 discovery 이름·순서와 실제 완료 목록, 집계·identity를
|
||
대조해 확인했다. 아래 시간 정확도·에너지 응답의 한계는 전체 실행 종료 후에도 유지한다.
|
||
|
||
독립 재계산에서 C08b의 모든 pair/channel N7 noise separation은 PASS이며 최소
|
||
d/(noise 합)=73223.1>100이다. Finest self-difference는
|
||
q_u/q_phi/v_u/v_phi/a_u/a_phi 순서로
|
||
`(4.29914e-6,1.10373e-4,8.79298e-5,.00721911,.00437504,.474897)`이다.
|
||
회전·가속도 등의 시간 정확도 기준과 P 감소 기준은 FAIL로 유지한다.
|
||
Finest energy/L error는 `1.00065e-6/4.30176e-7`, 마지막 refinement 비율은
|
||
`.248811/.250152`로 해당 bounds를 만족한다. P error는
|
||
`2.84555e-14→8.03575e-14`로 증가했다. 작은 절대값으로 감소 조건을 면제하지 않는다.
|
||
Recovered angular-a의 finest physical/null maximum은 `.474897322/.00184377209`다.
|
||
Physical complement가 지배하므로 null-only recovery로 해결됐다고 판단하지 않으며
|
||
회복 후보를 공식 history에 채택하지 않았다.
|
||
|
||
현재 C08a angular-a finest error는 `5.67473e-4>1e-4`다. Raw 마지막 두 차수
|
||
`1.02838/1.02946`은 N7 finest noise 분리 미달 때문에 확정 차수로 보고하지 않는다.
|
||
C08a noise INCONCLUSIVE와 C08b noise PASS를 구분한다. C04a finest-resolution
|
||
검사는 기존 SKIP이며 해당 coverage는 미완료다.
|
||
|
||
현재 production Release CLI로 원본을 별도 경로에 재생성해 U101 families PASS,
|
||
UR 경고200건을 확인했다. 독립 초기 Q4 nodal mass 적분과 회전 미분 검산에서
|
||
저장 T·inertial power의 최대 상대차는 `4.33647e-15/6.87716e-16`, N6 힘·공간
|
||
모멘트 ratio는 `1.13018e-15/2.19580e-16`이다. Full endpoint E 및 반력 selector,
|
||
고정 q/v/a/A와 free reaction의 정의도 일치했다. 이 검산은 저장 strain/stress의
|
||
독립 recovery 또는 큰 유한회전 검증을 포함하지 않는다. 원본 max phi는
|
||
`1.25636e-5` rad이다.
|
||
|
||
원본의 에너지 시간 응답 적정성은 별도 open 위험이다. 정의대로 계산한 energy defect는
|
||
`[-1.39861876,+62.73624080]` force·length이고 양의 peak는 t=1이다.
|
||
Max T는64.12476142, max W는5.33495625다. 저장 정의 대조는 일치하지만 coarse
|
||
DIRECT 한 이력의 결과로 refinement·시간 정확도·물리적 감쇠를 확인할 수 없다.
|
||
새 에너지 tolerance를 도입하거나 전체 물리 적정성을 PASS로 표시하지 않는다.
|
||
실제 명령·identity·원문 evidence와 독립 검토 artifact는
|
||
[현재 정책 기록](newton-start-policy.md)에 연결한다.
|
||
|
||
## 2026-10-13 reduced-coordinate 변경본의 제한된 물리 평가
|
||
|
||
[HHT-ADR-014/015](ADR.md)와 [축소 정식화](formulation-reduced-coordinate.md)를 기준으로
|
||
실제 reduced Release 결과를 검토했다. 기존 이력을 변경본 PASS로 승계하지 않았다.
|
||
독립 계산·원문 hash는 [reduced 물리 검산](../../.dryforge/hht-remediation-20261012/reduced-physics/assessment.json),
|
||
[계산 script](../../.dryforge/hht-remediation-20261012/reduced-physics/analyze.py)에 보존한다.
|
||
|
||
`reduced-closed-c08b.log`/native는 **599.20 s, exit8/FAIL**이다. 원래 다섯 grid는
|
||
T=.25까지 완료했으나 추가 h=1/32768은 increment4, t=.0001220703125에서 중단됐다.
|
||
이 실행은 stable exponential Jet 수정 이전의 결과이며 최신 source의 통과 근거가 아니다.
|
||
|
||
| 완료 grid h | Normalized energy drift | P drift | L drift |
|
||
| --- | ---: | ---: | ---: |
|
||
| 1/64 | 2.50654158e-4 | 3.79071465e-16 | 1.07274502e-4 |
|
||
| 1/128 | 6.41546821e-5 | 3.97669962e-16 | 2.73848033e-5 |
|
||
| 1/256 | 1.61258753e-5 | 4.00712378e-16 | 6.87804460e-6 |
|
||
| 1/512 | 4.02165996e-6 | 5.98404006e-16 | 1.71966016e-6 |
|
||
| 1/1024 | 1.00063183e-6 | 6.83006552e-16 | 4.30175806e-7 |
|
||
|
||
Energy/L 마지막 두 비는 `.249392/.248811`, `.250022/.250152`로 약2차 감소와 일관된다.
|
||
P는 승인된 absolute1e-3보다 작고 ADR014에 따라 strict 감소를 요구하지 않는다.
|
||
Max rotation `.273836… .273946 rad`는 유한회전 coverage와 일관된다. 초기 nodal
|
||
measure를 별도 계산한 mass=.8, T0=.2981858333333333, P0=(.1,−.2,.05),
|
||
L0=(.3221333333333333,.2416,.32)이며 단위는 각각 mass, force·length,
|
||
momentum, angular momentum의 입력 일관 단위다. 초기장 계산을 후속 이력 검산으로 확대하지 않는다.
|
||
|
||
원문에는 실제 full v/a로 계산하는 독립5³ rectangle nodal/exponential T/P/L oracle의
|
||
assertion 실패가 없다. Accepted full E·regularity·N6는 source의 Require 경로로 확인하되
|
||
원행렬·전 frame를 독립 replay한 근거는 아니다. Static inertia source는
|
||
`rho*N_i*dV0`, `x_i+z*d_i`, 물리 v/a와 current-arm spatial balance를 사용한다.
|
||
Public full A는 physical-a filter 진단량이고 private Ar가 reduced predictor를 구동한다.
|
||
두 값을 kinetic energy·momentum의 physical acceleration으로 사용하지 않는다.
|
||
All-free 반력은 N/A이며 이 로그로 strain/stress recovery·일반 warped/partial-BC를 검증하지 않았다.
|
||
|
||
완료 grid의 hidden v/a 최대는 `2.30218e-13/6.24917e-11`로 작지만 시간정확도
|
||
통과를 대신하지 않는다. 원문은 velocity subtraction assertion1583건 외에도 h=1/1024의
|
||
position update 및 requested-increment trace 실패 각1건을 포함한다. 제거된 별도
|
||
velocity gate와 남은 position 증거를 구분하며 이 실행의 N3 전체 PASS를 주장하지 않는다.
|
||
|
||
실제 중단 state의9절점 force-null을 stored binary64 값에서 별도 Decimal contraction한
|
||
결과, analytic psi와 full force의 차이는 마지막 dot 반올림보다 크다.
|
||
같은 frozen54-coordinate point probe에서 stable 후보의 최대 physical-null force는
|
||
`8.29803e-18→1.65436e-24`, 원 scale의 total-null ratio는
|
||
`3.53875e-10→9.27507e-15`로 줄었다. 같은 물리 identity·허용값의 복구를 지지하는
|
||
제한된 point evidence이며 full Jet·새 trajectory·최종 C08 PASS는 아니다.
|
||
|
||
남은 필수 범위는 최신 동결 source의 C08a7 grid/hidden/N7, C08b 추가3 grid와 최종
|
||
q/v/physical-a self-convergence·N7·E/P/L, 닫힌 reduced 원본 HDF5/비교와 독립 수지 검산,
|
||
구성된 전체 Debug 회귀다. 원본 작은 U 일치 또는 소형 embedding probe로 대체하지 않는다.
|
||
기존 partial-BC rank/branch·실패 보존·determinism/covariance 한계도 해당 검증 범위로 남긴다.
|
||
|
||
## 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`, 현재 checkout에 없음), 수정 후 비교 JSON(당시 경로: `../../.harness/build/hht-numerical/reference-after-recovery-fix.json`, 현재 checkout에 없음): U 101 families PASS/UR warnings 200. 수정 전 비교 JSON(당시 경로: `../../.harness/build/hht-numerical/reference-comparison.json`, 현재 checkout에 없음)의 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`, 현재 checkout에 없음), stable kernel(당시 경로: `../../.harness/build/hht-numerical/focused-stable-kernel.log`, 현재 checkout에 없음), exact constraints(당시 경로: `../../.harness/build/hht-numerical/focused-exact-constraint.log`, 현재 checkout에 없음), C04a Decimal80(당시 경로: `../../.harness/build/hht-numerical/c04a-decimal-reduction.json`, 현재 checkout에 없음), [독립 수치 검토](implementation-numerical-review.md).
|
||
- Recovery 수정 후 optimized focused(당시 경로: `../../.harness/build/hht-numerical/recovery-green-optimized.log`, 현재 checkout에 없음): 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 승인 문서가 아니다.
|