From 96b6f86f2891336ee9fc3f4685804245cbc8c6e7 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Sat, 10 Oct 2026 23:00:58 +0900 Subject: [PATCH] docs(hex8): define approved mean-volume energy contract --- docs/hex8-structural-analysis/ADR.md | 19 +- .../FEATURED_AGENTS.md | 4 +- docs/hex8-structural-analysis/PRD.md | 71 ++++--- docs/hex8-structural-analysis/README.md | 8 +- docs/hex8-structural-analysis/formulation.md | 190 +++++++++++++----- docs/hex8-structural-analysis/io.md | 12 +- .../numeric-controls.md | 17 ++ .../precision-formulation.md | 92 ++++++--- .../reference-discrepancy-proposal.md | 13 +- 9 files changed, 313 insertions(+), 113 deletions(-) diff --git a/docs/hex8-structural-analysis/ADR.md b/docs/hex8-structural-analysis/ADR.md index 23a21c8..8100d1d 100644 --- a/docs/hex8-structural-analysis/ADR.md +++ b/docs/hex8-structural-analysis/ADR.md @@ -10,7 +10,7 @@ Feature ID: `hex8-structural-analysis`. 상태: 사용자 승인된 구현 계 **선택:** 8절점 일반 등매개 육면체, 3개 병진 DOF,2×2×2 전체 Gauss 적분, Total Lagrangian–St. Venant–Kirchhoff의 energy/internal force/material+geometric tangent. **이유와 영향:** 큰 회전·작은 elastic strain을 대상으로 같은 energy의 미분 일관성을 검증한다. -Reduced/SRI/hourglass/hybrid/incompatible mode는 첫 범위에 없다. 굽힘/체적 잠김과 +이 최초 선택의 pointwise 체적 항은 이후 HEX8-ADR-009로 대체됐다. Hourglass/hybrid/incompatible mode는 범위 밖이다. 굽힘/체적 잠김과 거의 비압축성 conditioning 한계를 공개한다. Abaqus C3D8 내부 처리와 동일하다고 주장하지 않는다. ## HEX8-ADR-002 — Constant reference consistent mass @@ -69,3 +69,20 @@ backend와 HDF5 field/shape/dtype은 유지하되 공식 값은 전체 물리량 tolerance는 유지한다. Kernel/geometry에 low를 전달하지 않는 update carry와 구분한다. 작은 독립 산술/Hex8·시간수렴·상태 보존 검증과 긍정적 실제 실행 이후 필수 원본101개 endpoint·HDF5/외부 비교·전체 회귀를 진행한다. 승인과 수렴 완료를 혼동하지 않는다. + +## HEX8-ADR-009 — Reference-volume 평균 Green trace energy + +**승인:** 2026-10-10 사용자는 [체적 차이와 변경안](reference-discrepancy-proposal.md)의 +B: 체적 평균 energy 도입 후 전체 재검증을 선택했다. +**선택:** 선형·비선형 정적, unloaded frequency, 선형·비선형 HHT 모두 같은 요소 energy를 +사용한다. Reference 8점 가중치와 실제 infinitesimal/Green strain의 deviatoric 항을 유지하고, +체적 항을 `kappa*V*theta_bar^2/2`, `theta_bar=sum(w*trace(strain))/V`로 정의한다. +내력과 Kmat/Kgeo/Kt는 이 energy의 일관 미분이며 체적 tangent는 서로 다른 Gauss 점의 +coupling을 포함한다. 평균 determinant/Fbar/로그변형률 재료식은 채택하지 않는다. +**영향:** ADR-001의 pointwise 체적 energy/구성식과 그 강성을 대체한다. 실제 strain을 +출력하고 응력은 요소 평균에 의존하는 law로 복구한다. Reference consistent M·HHT 식· +고정 schedule·100회·strict gate·전체 pair 상태·반올림 observable·공식 field/schema와 +원본·수치 기준은 유지한다. 새 solver 선택 옵션이나 원본 diagnostic 전환은 추가하지 않는다. +**검증:** 한 선형 private 후보의 원본 일치와 독립 변분 검토는 근거이며 production PASS가 아니다. +새 kernel/절차·시간/공간수렴·공식 출력·필수 원본·전체 MSVC Debug 회귀를 다시 검증한다. +기존 pointwise 구현의 통과·실패 기록은 과거 evidence로 보존하고 변경본에 승계하지 않는다. diff --git a/docs/hex8-structural-analysis/FEATURED_AGENTS.md b/docs/hex8-structural-analysis/FEATURED_AGENTS.md index b0e0fff..b26a741 100644 --- a/docs/hex8-structural-analysis/FEATURED_AGENTS.md +++ b/docs/hex8-structural-analysis/FEATURED_AGENTS.md @@ -1,7 +1,7 @@ # Hex8 구조해석 작업 지침 Feature ID: `hex8-structural-analysis`. 사용자 승인: 2026-10-08 ready 문서 승인 및 go 실행 요청. -개인 연구용 FESA에 full-integration Hex8의 선형/기하비선형 강성·일관 질량과 +개인 연구용 FESA에 reference8점 deviatoric·체적 평균 energy Hex8의 선형/기하비선형 강성·일관 질량과 static/frequency/HHT 절차를 추가한다. 코드 존재와 기능 검증 완료를 구분한다. 상위 기준은 [프로젝트 지침](../../AGENTS.md), [공통 PRD](../PRD.md), @@ -16,7 +16,7 @@ static/frequency/HHT 절차를 추가한다. 코드 존재와 기능 검증 완 | [numeric controls](numeric-controls.md) | 수치 scale·zero branch·tuning·독립 검사 기준 | | [reference model](reference-model.md) | read-only 원본 inventory·quantity/key/point/time mapping | | [verification](verification.md) | 비교 도구 사용·공식 원본 비교·Python 검사 결과와 한계 | -| [reference discrepancy proposal](reference-discrepancy-proposal.md) | 미채택 체적 정식화/reference 변경안·실제 불일치와 선형 후보 관측 | +| [reference discrepancy proposal](reference-discrepancy-proposal.md) | 승인된 B 체적 변경안·과거 원본 불일치와 별도 선형 후보 관측 | | [numerical review](numerical-review.md) | 작성자와 독립된 정식화/controls 검토의 결과 | | [lessons](lessons.md) | 정밀도 손실·수렴 실패와 수정의 근거 및 재사용할 주의점 | | [precision proposal](precision-proposal.md) | 승인된 내부 정밀도 변경안·결과 의미·구현 전 검증 범위 | diff --git a/docs/hex8-structural-analysis/PRD.md b/docs/hex8-structural-analysis/PRD.md index 2fbc9d6..d4db232 100644 --- a/docs/hex8-structural-analysis/PRD.md +++ b/docs/hex8-structural-analysis/PRD.md @@ -10,9 +10,11 @@ Feature ID: `hex8-structural-analysis`. 작성일: 2026-10-08. 상태: 사용자 완료하지 않는다. 기존 프로젝트를 유지하며 새 프로젝트 기준을 재작성하지 않는다. 첫 구현은 큰 회전·작은 탄성 변형률을 대상으로 한다. 전체 8점 적분과 Total Lagrangian -St. Venant–Kirchhoff 식을 선택해 에너지·내력·접선의 일관성을 독립 검증한다. 일관 질량은 +St. Venant–Kirchhoff의 deviatoric 항과 요소 평균 Green trace 체적 energy를 선택해 +에너지·내력·접선의 일관성을 독립 검증한다. 2026-10-10 사용자 B 승인으로 최초 pointwise +체적 항을 대체했으며 [ADR-009](ADR.md)를 따른다. 일관 질량은 고유치와 동해석 모두에 사용한다. 집중 질량이나 안정화로 계산 결과를 맞추지 않는다. -일반 등매개 육면체를 지원하지만 full integration의 굽힘·체적 잠김 한계는 공개한다. +일반 등매개 육면체를 지원하며 체적 projection의 안정성·conditioning 및 남은 굽힘 잠김 한계를 검증·공개한다. 초기 합의의 일정 동하중에 더해, 제공된 reference의 ramp를 처리하도록 구간별 선형 집중력 amplitude를 포함한다. 지정 변위의 시간 변화나 비영 초기 변위·속도까지 확대하지 않는다. @@ -64,9 +66,9 @@ Source `C3D8`을 FESA Hex8로 연결하고 source 표기·instance·element/node ### FEM-REQ-HEX8-003 — 재료와 단위 상수 등방성 탄성 \(E>0,-1<\nu<0.5\)와 기준 밀도 \(\rho_0>0\)를 사용한다. -모든 값과 파생 Lamé 상수는 finite여야 한다. 밀도는 고유치·동해석에서 필수이며 정적 +모든 값과 파생 shear/bulk 실행 계수는 finite여야 한다. 밀도는 고유치·동해석에서 필수이며 정적 입력의 양의 density는 보존하되 강성에 사용하지 않는다. 입력 일관 단위를 유지한다. -\(\mu=E/[2(1+\nu)]\), \(\lambda=E\nu/[(1+\nu)(1-2\nu)]\)다. +\(\mu=E/[2(1+\nu)]\), \(\kappa=E/[3(1-2\nu)]\)다. 두 실행 계수는 finite·positive여야 한다. 거의 비압축성인 입력을 다른 재료식으로 바꾸지 않으며 잠김과 conditioning을 구분해 보고한다. ### FEM-REQ-HEX8-004 — 적분 규칙 @@ -74,33 +76,45 @@ Source `C3D8`을 FESA Hex8로 연결하고 source 표기·instance·element/node 강성·내력·접선·질량·에너지에 동일한 2×2×2 Gauss 규칙을 사용한다. 각 축은 ±1/√3, weight=1이며 volume weight는 det J0다. 출력 point ID는 `1:---, 2:+--, 3:-+-, 4:++-, 5:--+, 6:+-+, 7:-++, 8:+++` 순서다. -절점 순서와 적분점 순서를 혼동하지 않는다. 감소 적분·선택적 체적 적분·hourglass 항은 없다. +절점 순서와 적분점 순서를 혼동하지 않는다. 모든 평균과 deviatoric 항은 이8점의 reference +체적 가중치로 계산한다. 체적 항은 요소 평균 trace energy이며 pointwise8점 체적 항이나 +중심점 단일 적분으로 바꾸지 않는다. One-point reduced element·hourglass 항은 없다. 일반 뒤틀린 요소에서 8점 질량이나 비선형 적분이 연속체 적분과 항상 exact하다고 주장하지 않는다. 높은 차수 적분 oracle는 정확도·한계의 검사이며 production 규칙의 자동 변경이 아니다. ### FEM-REQ-HEX8-005 — 선형 강성 -미소변형률 \(\epsilon=\operatorname{sym}\nabla_Xu\), \(\sigma=\lambda\operatorname{tr}\epsilon I+2\mu\epsilon\). +미소변형률 \(\epsilon_g=\operatorname{sym}\nabla_Xu\), \(V=\sum_gw_g\), +\(\bar\theta=\sum_gw_g\operatorname{tr}\epsilon_g/V\), +\(\sigma_g=2\mu\operatorname{dev}\epsilon_g+\kappa\bar\theta I\)다. 공학 전단 벡터 순서는 `[ε11,ε22,ε33,2ε12,2ε13,2ε23]`, 응력은 -`[S11,S22,S33,S12,S13,S23]`다. 일의 짝이 되는 B0와 C를 사용해 -\(K_0=\sum_g B_{0g}^TCB_{0g}\det J_{0g}\), \(f_{int}=K_0u\)를 계산한다. +`[S11,S22,S33,S12,S13,S23]`다. 선형 energy는 +\(U=\sum_gw_g\mu\operatorname{dev}\epsilon_g:\operatorname{dev}\epsilon_g+\kappa V\bar\theta^2/2\)다. +\(K_0=\partial^2U/\partial u^2\), \(f_{int}=K_0u\)이며 weighted divergence vector의 +외적 \(\kappa bb^T/V\)로 서로 다른 point의 체적 coupling을 포함한다. 대칭성·6개 강체 영모드·상수 변형률 patch·단위와 scale을 독립 검증한다. ### FEM-REQ-HEX8-006 — 비선형 내력과 접선 기준 형상에서 \(F=I+\sum_a u_a\otimes G_a\), -\(E_G=(F^TF-I)/2\), \(W=\lambda(\operatorname{tr}E_G)^2/2+\mu E_G:E_G\), -\(S=\lambda\operatorname{tr}E_GI+2\mu E_G\), \(P=FS\)다. +\(E_{Gg}=(F_g^TF_g-I)/2\), \(\bar\theta=\sum_gw_g\operatorname{tr}E_{Gg}/V\)와 +\(U=\sum_gw_g\mu\operatorname{dev}E_{Gg}:\operatorname{dev}E_{Gg}+\kappa V\bar\theta^2/2\), +\(S_g=2\mu\operatorname{dev}E_{Gg}+\kappa\bar\theta I\), \(P_g=F_gS_g\)다. \(f_{ai}=\sum_g P_{iJ}G_{aJ}\det J_{0g}\)와 같은 에너지의 일관 미분 \(K_t=K_{mat}+K_{geo}\)를 반환한다. \[ -A_{iJkL}=\delta_{ik}S_{LJ}+F_{iI}\mathbb C_{IJLN}F_{kN},\qquad -(K_t)_{ai,bk}=\sum_gG_{aJ}A_{iJkL}G_{bL}\det J_{0g}. +Z_g^{ai}=\operatorname{sym}(F_g^T(e_i\otimes G_{ag})),\quad +b_{ai}=\sum_gw_g(F_gG_{ag})_i, +\] +\[ +(K_{mat})_{ai,bk}=2\mu\sum_gw_g\operatorname{dev}Z_g^{ai}:\operatorname{dev}Z_g^{bk} + +\kappa b_{ai}b_{bk}/V,\quad +(K_{geo})_{ai,bk}=\delta_{ik}\sum_gw_gG_{ag}^TS_gG_{bg}. \] -\(\mathbb C_{IJLN}=\lambda\delta_{IJ}\delta_{LN}+\mu(\delta_{IL}\delta_{JN}+\delta_{IN}\delta_{JL})\). -기하 항은 \(\delta_{ik}G_a^TSG_b\), 나머지는 재료항이다. Kgeo만으로 전체 비선형 강성을 +모든 gradient는 실제 relative kinematics의 같은 derivative이며 paired 경로는 Ghat를 사용한다. +평균 trace의 미분을 유지하고 point-local 기존 C로 체적 tangent를 대체하지 않는다. Kgeo만으로 전체 비선형 강성을 대체하지 않는다. 내부 API는 두 항과 합, 내력·에너지·복구량을 구별한다. 같은 trial에서 계산하며 유한차분 접선을 production 계산으로 사용하지 않는다. 강체 유한회전의 zero strain/energy, 에너지 gradient·내력 tangent, 좌표 공변성, 선형극한을 검사한다. @@ -412,9 +426,9 @@ mixed mesh·Shell–Solid 연결·prestressed modes·좌굴·다중 step/restart ## 방법과 자료의 한계 -StVK는 선택한 탄성 regime의 FESA 모델이며 Abaqus `*ELASTIC, NLGEOM=YES`와 내부 -유한변형 재료 알고리즘이 동일하다고 주장하지 않는다. Full 8점은 Abaqus C3D8의 체적 -처리까지 그대로 재현하겠다는 선택이 아니다. 제공 결과의 일치만으로 다른 regime을 보증하지 않는다. +평균 Green trace energy는 선택한 탄성 regime의 FESA 모델이며 Abaqus `*ELASTIC, NLGEOM=YES`의 +평균 J/Fbar·유한변형 재료 알고리즘과 동일하다고 주장하지 않는다. 선형 체적 평균 일치를 +비선형 동등성으로 승계하지 않는다. 제공 결과의 일치만으로 다른 regime을 보증하지 않는다. Amplitude의 step-time·상대 값·선형 보간·끝 값 유지 의미는 [Abaqus 공식 설명](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEPRCRefMap/simaprc-c-amplitude.htm)을 따른다. @@ -424,18 +438,22 @@ Generalized sparse FEAST의 공개 진입점은 ## 현재 checklist +2026-10-10 사용자 B 승인은 HEX8-ADR-009의 체적 평균 energy를 다섯 절차에 적용하고 +전체 재검증하는 변경이다. 아래 관련 항목은 변경본에서 다시 확인한다. 이어지는 이전 +pointwise 구현의 실행 기록은 과거 evidence이며 변경본 PASS로 승계하지 않는다. + 2026-10-09 사용자 A 승인은 [내부 정밀도 변경안](precision-proposal.md)의 전체 high+low 물리 상태와 Float64 반올림 observable을 FEM-REQ-HEX8-015·017–020에 적용한다. HHT 식·기준 consistent M·입력·고정 schedule·100회·Si/exact-zero·원래 strict gate 및 외부 tolerance는 유지한다. 아래 구현·검증 checklist는 이 승인만으로 완료되지 않는다. -- [x] 수식·입출력·numeric controls·원본 mapping 정리 및 독립 numerical review 완료 -- [x] Hex8 K0/consistent M/비선형 f/Kmat/Kgeo/Kt·형상·복구 kernel 검증 +- [ ] 승인된 체적 평균 수식·입출력·numeric controls·원본 mapping 정리 및 독립 numerical review 완료 +- [ ] 체적 평균 Hex8 K0/consistent M/비선형 f/Kmat/Kgeo/Kt·형상·복구 kernel 검증 - [x] Solid Domain/parser/3N DOF/ordered assembly/amplitude 검증 -- [x] 선형·비선형 정적 accepted state/반력/잔차 검증 -- [x] Generalized consistent-mass frequency·최저 N·original-pencil 검증 -- [x] 선형·비선형 HHT u/v/physical a·시간수렴·수지 내부 검증 -- [x] 공식 HDF5/CLI/self-check/실패 final 보존 검증 +- [ ] 체적 평균 선형·비선형 정적 accepted state/반력/잔차 검증 +- [ ] 체적 평균 generalized consistent-mass frequency·최저 N·original-pencil 검증 +- [ ] 체적 평균 선형·비선형 HHT u/v/physical a·시간수렴·수지 내부 검증 +- [ ] 체적 평균 공식 HDF5/CLI/self-check/실패 final 보존 검증 - [ ] 정적2·동적2 원본 필수 family 비교 PASS - [ ] 사용자 원본 최저10 modal Value 제공 및 필수 비교 PASS - [ ] 최신 전체 MSVC Debug build/CTest·기존 baseline 대조 완료 @@ -467,6 +485,9 @@ native CTest exit0이며 독립 수치 검토를 통과했다. 두 정적 원본 정적 수치 실패와 modal NOT RUN을 재현했다. 두 정적 원본은 실제 CLI native0이지만 U/RF/S 필수 비교는 모두 FAIL이다. 고유치 공식 readback은 검사했으나 원본 Value 부재로 비교는 NOT RUN이다. [verification](verification.md)의 metric과 -[미채택 변경안](reference-discrepancy-proposal.md)을 구분한다. 별도 선형 Python 후보의 +[승인된 변경 근거](reference-discrepancy-proposal.md)를 구분한다. 별도 선형 Python 후보의 수치 일치는 현재 구현의 PASS가 아니다. Source `1eb9cdd`의 전체 build는 native0이고 -780개 CTest는 진행 중이다. 종료 전 checklist를 통과로 바꾸지 않는다. +제외 없는780개 CTest는 native8,777 PASS·2 FAIL·1 SKIP으로 종료됐다. 추가163개는 모두 +PASS이며 기존 예외3개의 이름·status·metric body가 baseline과 동일하다. 전체 green은 아니다. +기존 pointwise 구현의 두 동적 원본도 native0으로101 endpoint를 완료했다. 이는 새 체적 +평균 energy의 결과가 아니며 변경본의 검증은 위 checklist에 따라 다시 수행한다. diff --git a/docs/hex8-structural-analysis/README.md b/docs/hex8-structural-analysis/README.md index 2d6cc4b..69e7274 100644 --- a/docs/hex8-structural-analysis/README.md +++ b/docs/hex8-structural-analysis/README.md @@ -2,7 +2,9 @@ 개인 연구용 FESA에 8절점 육면체의 선형 강성, Total Lagrangian–StVK 기하비선형 내력·접선 강성과 기준 형상의 consistent 질량을 추가한다. 요소당 병진 자유도는24개이며 -강성·질량·복구에 full 2×2×2 적분을 사용한다. 선형/비선형 정적, consistent-mass frequency, +강성·질량·복구에2×2×2 reference 적분점을 사용한다. 2026-10-10 승인으로 deviatoric 항과 +요소 평균 infinitesimal/Green trace 체적 energy를 사용한다. 변경본 구현·재검증은 진행 중이다. +선형/비선형 정적, consistent-mass frequency, 선형/비선형 HHT 동해석을 typed state에서 공식 HDF5와 CLI까지 연결한다. 구현과 기능 검증 완료는 다르다. 원본 정적2·동적2의 필수 수치 비교, 사용자 modal Value와 @@ -61,8 +63,8 @@ Restart는 지원하지 않는다. [정밀도 정식화](precision-formulation.m ## 적용 한계 -Full integration의 굽힘 shear locking과 거의 비압축성의 locking을 다른 요소 formulation으로 -자동 대체하지 않는다. Warped geometry는 보수적으로 cell 전체의 Jacobian 양성을 인증하며 +체적 projection의 conditioning·안정성과 남은 굽힘 shear locking을 검증하고, +다른 요소 formulation으로 자동 대체하지 않는다. Warped geometry는 보수적으로 cell 전체의 Jacobian 양성을 인증하며 uncertain geometry/trial도 실패한다. StVK 선택과 입력 호환성은 외부 solver의 내부 재료·체적 처리·시간 알고리즘 동등성을 보증하지 않는다. diff --git a/docs/hex8-structural-analysis/formulation.md b/docs/hex8-structural-analysis/formulation.md index 79da771..12d1ab0 100644 --- a/docs/hex8-structural-analysis/formulation.md +++ b/docs/hex8-structural-analysis/formulation.md @@ -7,6 +7,10 @@ 2026-10-09 승인된 Solid HHT 내부 정밀도 변경의 구현 계약은 [precision formulation](precision-formulation.md)이다. 동적 paired 경로의 상대변위 gradient, 전체 상태·계수 연산과 반올림 출력 의미는 해당 문서를 함께 적용한다. +사용자 선택 B로 승인된 현재 모델은 **8점 deviatoric 적분 + 기준 체적가중 평균 Green trace +energy**다. 선형/비선형 정적, 무응력 원형상 frequency, 선형/비선형 HHT 모두 같은 energy의 +선형극한·내력·Hessian을 사용한다. 이전 비수정 pointwise full8의 수식/evidence는 변경 전 +이력이며 현재 모델의 PASS로 승계하지 않는다. Fbar·평균 determinant·log-strain law는 아니다. ## Shape·기준 geometry·적분 @@ -23,6 +27,21 @@ Translation 차이를 먼저 사용해 large coordinate offset의 취소 오차 기준 좌표와 source identity는 변경하지 않는다. Shape의 partition of unity·linear reproduction와 gradient 합0을 검증한다. Invalid det/inverse는 abs/clamp나 corner 재배열로 숨기지 않는다. +실제 상대변위 계산과 그 미분을 모든 절차에서 일치시킨다. Local 절점 index는0–7이다. +기존 immutable F64 cache의 \(G_{ag},w_g\)를 그대로 사용하고 + +\[ + H_g=\sum_{a=1}^7(u_a-u_0)\otimes G_{ag},\quad + \widehat G_{ag}=G_{ag}\ (a>0),\quad + \widehat G_{0g}=-\sum_{a=1}^7G_{ag},\quad + D_g[p]=\sum_{a=0}^7p_a\otimes\widehat G_{ag}. +\] + +\(D_g[p]\)는 방향 p에 대한 \(\delta F_g=\delta H_g\)다. F64 static/frequency 및 paired +dynamic은 각 경로의 산술로 같은 순서의 coefficient 합을 평가한다. Relative H를 사용하고 +force/tangent에는 별도의 cached \(G_{0g}\)를 쓰는 혼합은 허용하지 않는다. +새 quadrature로 coefficient를 재생성하지 않으며 coefficient/합산 roundoff는 독립 검증한다. + ## Cell 전체의 Jacobian 인증 Trilinear map의 det J는 각 자연 좌표에 대해 최대2차인 tensor polynomial이다. @@ -45,57 +64,125 @@ multiplication·변환·subdivision·current Xa+ua까지 실제 FP 오차를 포 Current geometry에도 같은 인증을 적용하고 point det F>0를 확인한다. Trial failure가 reference cache나 accepted state를 변경하지 않는다. 세부 종료 controls는 numeric-controls를 따른다. -## Linear elasticity와 K0 +## 재료·체적 평균 energy·선형 K0 -\(\mu=E/[2(1+\nu)],\lambda=E\nu/[(1+\nu)(1-2\nu)]\). -\(E>0,-1<\nu<.5\)에서 bulk/shear modulus가 양수다. Engineering strain vector는 -`[ε11,ε22,ε33,2ε12,2ε13,2ε23]`; stress vector는 실제 shear stress다. -Normal C block은 diagonal λ+2μ/off-diagonal λ, shear diagonal μ다. +\(\mu=E/[2(1+\nu)]\), \(\lambda=E\nu/[(1+\nu)(1-2\nu)]\), +\(\kappa=\lambda+2\mu/3=E/[3(1-2\nu)]\)는 실수 수학 identity다. +실행 coefficient는 \(\nu\to-1\)에서 \(\lambda+2\mu/3\)의 취소를 피하도록 +**E/ν에서 직접 F64 \(\kappa=E/[3(1-2\nu)]\)를 한 번 계산**하고 finite positive를 검증한다. +계산 순서는 `2*nu`, `1-(2*nu)`, `3*(1-(2*nu))`, `E/denominator`의 RN64 연산이다. +`E/3` 선계산 등으로 재배열하지 않는다. Overflow/nonfinite 및 underflow-to-zero κ는 +지원 산술 실패이며 값 보정은 없다. 기존 λ 조합의 bulk guard로 유효한 직접 κ를 다시 거부하지 않는다. +현재 실행 coefficient는 기존 정의의 F64 μ와 직접 F64 κ다. λ는 위 실수 identity와 변경 전 +이력을 설명하는 기호이며 새 law의 별도 실행 cache/guard가 아니다. Paired 경로는 μ/κ를 exact lift한다. +변경 전 rounded μ/λ로 다시 만든 κ와의 bit equality를 요구하지 않으며 near-bound coefficient 오차를 +독립 검토한다. \(E>0,-1<\nu<.5\)와 실제 positive finite shear/bulk를 요구하며 새로운 ν 범위 +제한이나 clamp는 없다. λ 조합이나 `3*kappa` 등의 파생 overflow로 material 범위를 추가로 +제한하지 않는다. 실제 element/trial 연산 graph가 nonfinite/지원 범위 실패이면 해당 평가를 실패시킨다. +\(\operatorname{dev}T=T-\operatorname{tr}(T)I/3\)다. +\(w_g=\det J_{0g}>0\), \(V=\sum_{g=1}^8w_g>0\)는 불변 기준 coefficient다. +Deviatoric 항·평균의 numerator/denominator 모두 동일 2×2×2 점을 사용한다. +평균은 기준 volume-weighted 값이며 center strain·단순8점 평균·current-volume 평균으로 바꾸지 않는다. + +선형은 실제 \(\epsilon_g=\operatorname{sym}H_g\)에서 \[ -K_0=\sum_g B_g^TCB_gw_g,\qquad f=K_0u,\qquad U={1\over2}u^TK_0u. -\] - -동일 point의 block 형태는 \(\lambda G_{ai}G_{bk}+\mu\delta_{ik}G_a\cdot G_b+ -\mu G_{ak}G_{bi}\)다. B/Voigt 코드와 독립 tensor/polynomial oracle를 구분한다. -Unconstrained K0는 symmetry/PSD 및6 rigid modes를 가지며 BC 적용 후 mechanism/singularity를 -solver가 명시적으로 처리한다. Full integration 잠김을 안정화로 바꾸지 않는다. - -## Total Lagrangian energy·내력·접선 - -\[ -F=I+\sum_a u_a\otimes G_a,\quad E_G=(F^TF-I)/2, -\quad W={\lambda\over2}(\operatorname{tr}E_G)^2+\mu E_G:E_G. -\] - -\(S=\partial W/\partial E_G=\lambda\operatorname{tr}(E_G)I+2\mu E_G\), -\(P=FS\). \(\delta E_G=\operatorname{sym}(F^T\delta F)\)이므로 -\(\delta W=P:\delta F\), \(\delta F=\sum\delta u_a\otimes G_a\)다. - -\[ -U=\sum W_gw_g,\quad f_{ai}=\sum P_{iJ}G_{aJ}w_g. -\] - -\(\delta P=\delta F S+F\delta S\)를 분리하면 - -\[ -\mathbb C_{IJLN}=\lambda\delta_{IJ}\delta_{LN} -+\mu(\delta_{IL}\delta_{JN}+\delta_{IN}\delta_{JL}), + \bar\theta_{lin}=\sum_gw_g\operatorname{tr}\epsilon_g/V,\quad + U_{lin}=\mu\sum_gw_g\operatorname{dev}\epsilon_g:\operatorname{dev}\epsilon_g + +\kappa V\bar\theta_{lin}^2/2, \] \[ -(K_{geo})_{ai,bk}=\sum\delta_{ik}G_{aJ}S_{LJ}G_{bL}w_g, -\quad (K_{mat})_{ai,bk}=\sum G_{aJ}F_{iI}\mathbb C_{IJLN}F_{kN}G_{bL}w_g. + \sigma_g=2\mu\operatorname{dev}\epsilon_g+\kappa\bar\theta_{lin}I, + \quad f_{ai}=\sum_gw_g\sigma_{g,iJ}\widehat G_{ag,J},\quad + f=K_0u,\quad U_{lin}=u^TK_0u/2. \] -Kt=Kmat+Kgeo는 energy Hessian이며 load-independent CLOAD tangent는0이다. -S는 symmetric이고 total Kt도 symmetric이나 stressed trial에서 SPD라고 가정하지 않는다. -Zero state에서 F=I/S=0/geo=0/total=K0다. 유한 rigid R에서 F=R, Green/W/f는0이며 -strained 상태를 global R로 회전하면 energy invariant·force/tangent covariance를 만족해야 한다. -Affine deformation의 energy/stress 및 multi-element constant-stress patch가 독립 oracle다. +Engineering strain vector는 `[ε11,ε22,ε33,2ε12,2ε13,2ε23]`이고 stress의 shear는 실제 값이다. +\(Q_g^{ai}=\operatorname{sym}(e_i\otimes\widehat G_{ag})\), +\(b^0_{ai}=\sum_gw_g\widehat G_{ag,i}\)이면 zero-state Hessian은 -공식 비선형 stress는 \(\sigma=FSF^T/\det F\), Green strain은 기준 global tensor다. -Linear 공식 strain은 infinitesimal tensor다. 저장 strain의 shear는 실제 tensor 성분이고 -B 계산용 engineering shear의 절반이다.8점 값을 그대로 저장한다. +\[ + (K_0)_{ai,bk}=2\mu\sum_gw_g\operatorname{dev}Q_g^{ai}:\operatorname{dev}Q_g^{bk} + +\kappa b^0_{ai}b^0_{bk}/V. +\] + +첫 항의 point block은 \(\mu\delta_{ik}\widehat G_a\cdot\widehat G_b+ +\mu\widehat G_{a,k}\widehat G_{b,i}-(2\mu/3)\widehat G_{a,i}\widehat G_{b,k}\)다. +마지막 체적 외적은 모든 GP의 coupling을 포함한다. 기존 비수정 point-local +\(\sum B^TCB w\)를 선형 정적·frequency·linear HHT의 K0로 재사용하지 않는다. + +## Total Lagrangian energy·내력·전체 Hessian + +\[ + F_g=I+H_g,\quad E_g=\operatorname{sym}H_g+H_g^TH_g/2=(F_g^TF_g-I)/2, + \quad\theta_g=\operatorname{tr}E_g,\quad\bar\theta=\sum_gw_g\theta_g/V, +\] +\[ + U=\mu\sum_gw_g\operatorname{dev}E_g:\operatorname{dev}E_g + +\kappa V\bar\theta^2/2, + \quad S_g=2\mu\operatorname{dev}E_g+\kappa\bar\theta I,\quad P_g=F_gS_g. +\] + +이 식은 요소의 discrete nonlocal energy다. Homogeneous material과 reference coefficient 외에 +소성/history state는 없다. 매 trial의8점 E를 평가한 뒤 같은 trial의 평균/S/P를 계산한다. +\(Z_g[p]=\operatorname{sym}(F_g^TD_g[p])\), +\(Y_g[p,q]=\operatorname{sym}(D_g[p]^TD_g[q])\)라 두면 + +\[ + \delta U[p]=\sum_gw_gS_g:Z_g[p],\quad + f_{ai}=\sum_gw_gP_{g,iJ}\widehat G_{ag,J}, +\] +\[ + \delta^2U[p,q]=\sum_gw_g\{2\mu\operatorname{dev}Z_g[p]:\operatorname{dev}Z_g[q] + +S_g:Y_g[p,q]\} + +\frac{\kappa}{V}\Big(\sum_gw_g\operatorname{tr}Z_g[p]\Big) + \Big(\sum_hw_h\operatorname{tr}Z_h[q]\Big). +\] + +\(Z_g^{ai}=\operatorname{sym}(F_g^T(e_i\otimes\widehat G_{ag}))\), +\(b_{ai}=\sum_gw_g(F_g\widehat G_{ag})_i\)를 사용한 구현용 block은 + +\[ + (K_{mat})_{ai,bk}=2\mu\sum_gw_g\operatorname{dev}Z_g^{ai}:\operatorname{dev}Z_g^{bk} + +\kappa b_{ai}b_{bk}/V, +\] +\[ + (K_{geo})_{ai,bk}=\delta_{ik}\sum_gw_g\widehat G_{ag}^TS_g\widehat G_{bg}, + \quad K_t=K_{mat}+K_{geo}. +\] + +\(\delta S_g=2\mu\operatorname{dev}\delta E_g+\kappa\delta\bar\theta I\)이며 +\(\delta\bar\theta=\sum_hw_h\operatorname{tr}\delta E_h/V\)다. +체적 Hessian은 \(g\ne h\)도 포함한다. 평균을 Newton 동안 고정하거나 GP별 기존 StVK C로 +접선을 만들거나 stress만 평균화하면 이 energy의 내력·Hessian이 아니다. +Kt는 symmetric energy Hessian이나 stressed trial에서 SPD라고 가정하지 않는다. +Load-independent CLOAD tangent는0이고, zero state에서 F=I/S=0/Kgeo=0/Kt=K0다. + +### 객관성·rank·복구 의미 + +실수 연산과 exact geometric completeness \(\sum_a\widehat G_{ag}=0\), +\(\sum_aX_a\otimes\widehat G_{ag}=I\)에서 \(u_a=(R-I)X_a+c\)이면 F=R/E=0/U=f=0이다. +Cached F64 coefficient/gradient 합/paired 반올림의 실제 rigid rotation은 coefficient와 연산 +roundoff의 bounded 검사 대상이다. Gradient partition sum만으로 affine reproduction/exact0을 +주장하지 않는다. 이미 주어진 F를 global R로 회전하면 E/평균/U는 invariant이고 force/tangent는 +covariant다. 이 객관성은 평균 Green trace에 관한 것이며 determinant 평균화가 아니다. + +K0는 nonnegative quadratic energy의 Hessian이다. 유효 brick의 local6 rigid modes/rank18, +warped cell의 추가 영모드·conditioning 및 실제 BC 뒤 mechanism/singularity를 검증한다. +특정 brick rank를 모든 admissible cell의 엄격 coercivity 증명으로 대신하지 않는다. +\(U_{old}-U=\kappa\sum_gw_g(\theta_g-\bar\theta)^2/2\ge0\)에서 Uold는 변경 전 비수정 +pointwise full8의 **같은 μ/κ로 쓴 수학적 energy**다. 이전 실제 λ/μ rounded cache와 현재 직접 κ의 +bit equality를 이 항등식에서 추론하지 않는다. 체적변형률 변동의 energy가 감소하므로 +새 잠김·공간수렴·rank 검사가 필요하다. +Affine F에서는 위 같은 μ/κ/gradient로 정의한 Uold의 U/force/stress와 수학적으로 일치하지만 +이전 rounded λ/raw G0 경로와의 byte equality나 모든 비affine direction의 Hessian 일치를 뜻하지 않는다. + +공식 비선형 stress는 실제 \(\sigma_g=F_gS_gF_g^T/\det F_g\), strain은 **실제 기준 global Green E**다. +S의 isotropic 항이 요소 내 공통이어도 finite Cauchy pressure가 반드시 상수는 아니다. +선형 공식 strain은 실제 infinitesimal tensor이며 stress는 위 평균 trace law다. +8점 `[11,22,33,12,13,23]` 실제 tensor shear를 그대로 저장하고 평균/외삽/nodal smoothing하지 않는다. +저장 strain을 \(\operatorname{dev}E+\bar\theta I/3\)로 치환하지 않는다. Point stress는 같은 point의 +strain만으로 결정되는 이전 pointwise law가 아니라 element mean에 의존한다. ## Consistent mass와 generalized eigen @@ -115,7 +202,7 @@ node에 적어도 하나의 element가 있는 경우 min_e bound는 conservative 실제 FP matrix의 roundoff와 SPD evidence를 포함해야 하며 이 수학적 식만으로 설치 backend의 실행을 검증했다고 주장하지 않는다. -\(K_{ff}\phi=\lambda M_{ff}\phi\)를 풀며 constrained component0으로 복구하고 +무응력 원형상에서 위 새 energy의 K0를 사용해 \(K_{ff}\phi=\lambda M_{ff}\phi\)를 풀며 constrained component0으로 복구하고 \(\phi^TM\phi=1\), \(f=\sqrt\lambda/(2\pi)\)를 구분한다. Proven mass lower bound가 있다면 \(\lambda_{max}\le\|K_{ff}\|_\infty/m_{lower}\)는 search upper-bound 근거가 된다. Diagonal ratio classification scale 자체는 upper bound가 아니다. 검색/count의 실제 증거와 @@ -148,6 +235,10 @@ R=MA_{n+1}+(1+\alpha)(f_{n+1}-F_{n+1})-\alpha(f_n-F_n), \quad K_{eff}=M/(\beta h^2)+(1+\alpha)K_t. \] +f/U/Kt는 위 평균 trace energy에서 함께 평가한다. Linear HHT는 그 zero-state K0, +비선형 HHT는 trial의 cross-GP 전체 Hessian이다. 상수 reference consistent M·계수·고정 h· +100회·strict physical/correction/update 판정은 변경하지 않는다. + 이전 free endpoint가 \(Ma_n+f_n-F_n=0\)이면 R=(1+alpha)(Ma_next+f_next−F_next)다. Endpoint 표현을 쓰면 tangent도1/(1+alpha)로 함께 환산해야 한다. Incomplete previous endpoint를 동등하다고 가정하거나 weighted force에서 reaction을 계산하지 않는다. Physical reaction은 @@ -175,9 +266,14 @@ evidence/로그로 설명한다. Newton 허용오차의 free residual 기여도 ## 정식화 검증 경계 -Analytic brick/affine energy, independent tensor polynomial integrals,6 rigid modes, scaling/ -covariance, gradient/tangent directional step sweep와 small-load limit를 결합한다. Warped geometry는 -independent higher-order quadrature로 discretization error를 보고한다. Generalized eigen은 +Analytic brick/affine energy, independent tensor polynomial integrals,6 rigid modes/rank, scaling/ +covariance, node0 포함 gradient/tangent signed directional step sweep와 small-load limit를 결합한다. +Compatible 비균일 trace field에서 reference-weighted mean과 center/unweighted mean의 차이, +cross-GP outer product, 위 weighted-variance energy 차이와 linear–NL zero-state 일치를 검사한다. +GP-local bulk tangent를 사용하는 대조는 방향 미분 검사에서 실패해야 한다. +Warped geometry는 independent higher-order quadrature로 평균과 deviatoric 적분의 discretization +error를 보고하되 production8점 규칙을 바꾸지 않는다. Extra-null·conditioning·굽힘/체적 잠김과 +spatial refinement를 별도로 검사한다. Generalized eigen은 작은 independent dense oracle와 original sparse-pencil metrics로 검증한다. HHT는 analytic oscillator/비선형 constant-mass 제조해에서 u/v/physical a·h/h2/h4 수렴을 검증한다. 외부 comparison의5%/1%로 이 내부 검사를 대신하지 않는다. diff --git a/docs/hex8-structural-analysis/io.md b/docs/hex8-structural-analysis/io.md index 73a921d..bce3905 100644 --- a/docs/hex8-structural-analysis/io.md +++ b/docs/hex8-structural-analysis/io.md @@ -52,11 +52,15 @@ repository-conforming 이름 조정은 허용하며 physics/schema 수정은 아 않아 T2/T3를 분리한다. Layout은8 source-order nodes×UX/UY/UZ다. - Explicit `EvaluateLinear(u)`/`EvaluateNonlinear(u)`는 immutable element의 local u[24]를 받아 f[24], Kmat/Kgeo/Kt[24,24], strain energy와8 typed integration-point rows를 반환한다. - Linear은 material=K0/geo=0, nonlinear은 같은 trial의 energy 미분이다. `ComputeMass()`는 + Linear은 새 체적 평균 energy의 zero Hessian material=K0/geo=0, + nonlinear은 같은 trial의 체적 평균 Green energy 미분이다. `ComputeMass()`는 local consistent24×24 Matrix contribution이며 absent density이면 실패한다. - Typed Solid point row는 internal element index, point ID1–8, natural/reference coordinate3, Cauchy stress6·infinitesimal/Green tensor strain6를 가진다. Identity/상수 coordinates를 trial마다 - 다른 source row로 만들지 않는다. Generic recovery variant의 Solid payload는 별도 type이다. + 다른 source row로 만들지 않는다. 저장 strain은 실제 kinematics의 strain이며 평균된 + 대체 strain이 아니다. 응력은 같은 point의 deviatoric strain과 요소 전체의 reference-volume + 평균 trace에 의존한다. 비선형은 PK2를 실제 F/J로 Cauchy 변환하며 평균 Cauchy pressure를 + 가정하지 않는다. Generic recovery variant의 Solid payload는 별도 type이다. - Semantic Domain은 Solid element/section/material/density·amplitude 정의를 소유한다. DOF profile은 `kSolidStructural`에 해당하는3-component 구조이며 `FullDof`, free/constrained, generic `ElementScatter`, sparse pattern의 기존 공개 의미를 유지한다. 동작별 node component @@ -108,6 +112,10 @@ Result array의 leading node/element inventory와 component list를 self-check | mode vectors | `UX,UY,UZ` / `mass-normalized`; `normalization=phi^T*M*phi=1` | Strain-energy definition은 linear `0.5*u^T*K0*u`, nonlinear `sum(W*detJ0)`다. +K0는 승인된 mean-trace energy의 zero Hessian이고 nonlinear Wg는 +`mu*dev(Eg):dev(Eg)+0.5*kappa*theta_bar^2`다. 같은 theta_bar를8점의 reference 가중치로 +계산하므로 그 합은 요소 체적 항 `0.5*kappa*V*theta_bar^2`와 같다. 기존 attribute 문자열과 +field/schema/dtype은 유지하며 새 energy 의미는 HEX8-ADR-009 및 정식화를 따른다. Kinetic은 `0.5*v^T*M*v`, work는 `sum(0.5*(F_old+F_new)*delta_u)`이며 initial0이다. Balance error는 `T+U-T0-U0-Wext`이고 HHT numerical dissipation을0으로 보정하지 않는다. Constrained mask/prescribed 의미·point ordering은 model inventory에서 확인한다. diff --git a/docs/hex8-structural-analysis/numeric-controls.md b/docs/hex8-structural-analysis/numeric-controls.md index d866e2c..ef37d7a 100644 --- a/docs/hex8-structural-analysis/numeric-controls.md +++ b/docs/hex8-structural-analysis/numeric-controls.md @@ -17,6 +17,23 @@ Depth default10, 처리한 cell budget default65536이며 uncertain 시 fail-clo resource/precision tuning이고 accepted geometry의 positive 조건을 완화하는 tolerance가 아니다. 현재 Xa+ua를 인증할 때 addition uncertainty도 포함한다. Failed trial은 immutable cache를 보존한다. +## 체적 평균 energy의 실행 계수와 누적 + +2026-10-10 승인된 B는 reference weights의 순서0..7을 유지해 V와 weighted trace를 누적한다. +Mu는 `E/(2*(1+nu))`, kappa는 `E/(3*(1-2*nu))`를 Float64로 직접 계산·finite positive +검증한다. Kappa의 exact-real identity인 `lambda+2*mu/3`를 실행값으로 빼기/더하기해 +nu→−1의 큰 계수 취소로 bulk를 잃지 않는다. E/3을 먼저 계산하는 재배열은 실행 계수 +계약이 아니다. Overflow/underflow로 supported positive 계수를 만들 수 없으면 실패하며 +clamp·임의 material bound를 추가하지 않는다. + +같은 저장된 F64 mu/kappa/weights/gradient를 paired 경로에 exact lift한다. V·mean trace· +dev strain·cross-point bulk outer product·energy/force/Kt/recovery의 pair를 중간에 F64로 +접지 않는다. F64와 pair 모두 실제 relative kinematics의 동일 derivative를 사용한다. +Ghat의 partition sum만으로 finite rotation의 exact-zero를 보장하지 않으며 기하 완전성과 +coefficient/graph roundoff를 분리해 검증한다. 새로운 수식 검증은 weighted mean vs center, +signed energy/force/tangent sweep, extra-null/conditioning 및 low-only bulk 응답을 포함한다. +기존 Newton·형상·시간수렴·수지 기준과 외부 비교 tolerance는 유지한다. + ## 정적 Newton Force residual numerator는 free residual infinity norm이다. 기존 diff --git a/docs/hex8-structural-analysis/precision-formulation.md b/docs/hex8-structural-analysis/precision-formulation.md index 9a799fd..d7c6a8c 100644 --- a/docs/hex8-structural-analysis/precision-formulation.md +++ b/docs/hex8-structural-analysis/precision-formulation.md @@ -4,7 +4,8 @@ 기본 물리식·DOF·부호·적분점 순서는 [formulation](formulation.md), 판정 원본은 [numeric-controls](numeric-controls.md), 영속 출력은 [I/O](io.md)다. 본 문서는 승인된 정밀도 변경의 구현 계약이며 구현 완료나 독립 수치 승인이 아니다. -기존 선형/비선형 정적·고유치의 Float64 경로를 변경하는 계약이 아니다. +사용자 선택 B의 평균 Green trace energy는 모든 절차에 적용하며 이 문서는 그 동적 paired +평가를 정의한다. Static/frequency의 F64 산술 종류는 유지하되 물리 energy/K0는 같은 새 모델이다. ## 산술과 고정 계수 @@ -74,11 +75,16 @@ Normal quotient의 `Bc=u*|rh/dh|`, 지원 subnormal의 exact rational rounding c 106-bit 보장이 아니다. 독립 exact rational fixtures와 binary scaling으로 실제 graph를 검증한다. 최소 계수 정밀도 선택은 다음과 같다. 기존 reference cache의 F64 \(N_a,G_a,w_g\), -Lamé 상수와 좌표, 기존 조립 F64 consistent \(M\), 기존 load assembler가 endpoint에서 -평가한 F64 \(F_n\)를 exact dyadic 입력으로 올린다. 형상/재료/질량 적분을 새로 정의하거나 -높은 차수 quadrature로 바꾸지 않는다. 단, 아래 상대변위의 미분에 필요한 \(\widehat G_0\)와 -dynamic paired linear operator는 동일 pair 산술로 구성한다. 기존 rounded K0를 paired -힘에 혼합하지 않는다. 일정 F64 \(\alpha,\beta,\gamma,h\)는 기존 생성값을 올리며 +μ와 좌표, 기존 조립 F64 consistent \(M\), 기존 load assembler가 endpoint에서 평가한 F64 +\(F_n\)를 exact dyadic 입력으로 올린다. Bulk κ는 [기본 정식화](formulation.md)의 +\(E/[3(1-2\nu)]\) direct F64 coefficient를 한 번 finite/positive 검증 후 exact lift한다. +실수 identity \(\kappa=\lambda+2\mu/3\)로부터 변경 전 rounded λ/μ cache의 bit equality를 +추론하지 않는다. 새 law에는 별도 λ cache/guard가 없으며 μ/κ를 같은 energy/S/Hessian에 쓴다. +입력 ν 범위·기존 reference geometry/mass 적분은 유지하며 높은 차수 +quadrature로 바꾸지 않는다. 아래 상대변위의 \(\widehat G_0\), 새 paired linear operator, +평균·dev의 `/3` 및 cross-GP contraction은 동일 pair 산술로 구성한다. +새 F64 K0 또는 변경 전 pointwise K0를 paired 힘에 혼합하지 않는다. +일정 F64 \(\alpha,\beta,\gamma,h\)는 기존 생성값을 올리며 \(c=1+\alpha\), \(b=\beta h^2\)와 모든 파생 계수는 공통 pair 산술로 계산한다. \(b>0,c>0\) 및 finite를 요구한다. 기존 coefficient 생성·검증과 `time=double(n)*h`, `N*h==T` 및 endpoint 하중 평가 의미는 유지한다. @@ -105,49 +111,72 @@ exact일 필요가 없다. \(\widehat G_0\) 선택은 기존 상대변위 weak f \(\sum_a\widehat G_a\)가 exact0이라고 주장하지 않는다. Node0의 미분 오차도 이 graph의 산술 bound에 포함한다. -선형 동해석에서는 \(\epsilon=\operatorname{sym}H\), -\(\sigma=\lambda\operatorname{tr}\epsilon I+2\mu\epsilon\)이고 +\(V=\sum_gw_g>0\)는 같은 reference8점의 pair sum이고 trial에 따라 변하지 않는다. +선형 동해석에서는 실제 \(\epsilon_g=\operatorname{sym}H_g\), +\(\bar\theta_{lin}=\sum_gw_g\operatorname{tr}\epsilon_g/V\), +\(\sigma_g=2\mu\operatorname{dev}\epsilon_g+\kappa\bar\theta_{lin}I\)이고 \[ - U_{lin}=\sum_g[\tfrac12\lambda(\operatorname{tr}\epsilon)^2+ - \mu\epsilon:\epsilon]w_g, - \quad f_{ai}=\sum_g\sigma_{iJ}\widehat G_{aJ}w_g, - \quad K_{lin}=\sum_g\widehat B_g^TC\widehat B_gw_g. + U_{lin}=\mu\sum_gw_g\operatorname{dev}\epsilon_g:\operatorname{dev}\epsilon_g + +\kappa V\bar\theta_{lin}^2/2, + \quad f_{ai}=\sum_gw_g\sigma_{g,iJ}\widehat G_{ag,J}. \] -\(\widehat B\)는 위 \(\widehat G\)로 만든 기존 engineering-shear B다. +\(Q_g^{ai}=\operatorname{sym}(e_i\otimes\widehat G_{ag})\), +\(b^0_{ai}=\sum_gw_g\widehat G_{ag,i}\)에서 linear operator는 + +\[ + (K_{lin})_{ai,bk}=2\mu\sum_gw_g\operatorname{dev}Q_g^{ai}:\operatorname{dev}Q_g^{bk} + +\kappa b^0_{ai}b^0_{bk}/V. +\] + +실제 strain의 engineering/tensor shear 구분은 기존 계약을 유지한다. 비선형 동해석은 \(F=I+H\)이며 tiny strain의 불필요한 I 취소를 피하는 동등식 \[ - E_G=\operatorname{sym}H+\tfrac12H^TH,\quad - S=\lambda\operatorname{tr}(E_G)I+2\mu E_G,\quad P=FS, + E_g=\operatorname{sym}H_g+\tfrac12H_g^TH_g,\quad + \bar\theta=\sum_gw_g\operatorname{tr}E_g/V,\quad + S_g=2\mu\operatorname{dev}E_g+\kappa\bar\theta I,\quad P_g=F_gS_g, \] \[ - U=\sum_g[\tfrac12\lambda(\operatorname{tr}E_G)^2+\mu E_G:E_G]w_g, - \qquad f_{ai}=\sum_gP_{iJ}\widehat G_{aJ}w_g. + U=\mu\sum_gw_g\operatorname{dev}E_g:\operatorname{dev}E_g+\kappa V\bar\theta^2/2, + \qquad f_{ai}=\sum_gw_gP_{g,iJ}\widehat G_{ag,J}. \] -\(H,E_G,S,P,F,U,f\)와 8점 recovery는 low를 보존한다. H를 만든 직후 F64로 축소하는 -경로는 이 계약을 충족하지 않는다. \(\mathbb C\)는 기본 정식화의 같은 StVK tensor이며 +\(H,E,S,P,F,U,f\), V/평균/\(\operatorname{dev}E=E-\operatorname{tr}E I/3\)와8점 recovery는 +low를 보존한다. Element의8점 E를 평가한 뒤 같은 full trial에서 평균/S/P를 계산한다. +H나 평균을 만든 직후 F64로 축소하는 경로는 이 계약을 충족하지 않는다. +\(Z_g^{ai}=\operatorname{sym}(F_g^T(e_i\otimes\widehat G_{ag}))\), +\(b_{ai}=\sum_gw_g(F_g\widehat G_{ag})_i\)에서 \[ - (K_{geo})_{ai,bk}=\sum_g\delta_{ik}\widehat G_{aJ}S_{LJ} - \widehat G_{bL}w_g, + (K_{geo})_{ai,bk}=\delta_{ik}\sum_gw_g\widehat G_{ag}^TS_g\widehat G_{bg}, \] \[ - (K_{mat})_{ai,bk}=\sum_g\widehat G_{aJ}F_{iI}\mathbb C_{IJLN} - F_{kN}\widehat G_{bL}w_g, + (K_{mat})_{ai,bk}=2\mu\sum_gw_g\operatorname{dev}Z_g^{ai}:\operatorname{dev}Z_g^{bk} + +\kappa b_{ai}b_{bk}/V, \qquad K_t=K_{mat}+K_{geo}. \] +마지막 outer product는 서로 다른 GP도 포함하는 전체 체적 Hessian이다. +\(\delta\bar\theta=\sum_hw_h\operatorname{tr}\delta E_h/V\)를 미분해야 하며 +GP-local 기존 StVK tangent를 사용하거나 mean을 고정하는 경로는 허용하지 않는다. +이 평균은 승인된 energy의 일부이며 사후 residual/force projection이 아니다. 각 식은 동일 trial·동일 계수·동일 2×2×2 적분을 사용한다. 에너지의 실수 polynomial 미분을 pair 산술로 평가한 tangent이며 유한 반올림 함수의 미분을 주장하지 않는다. -Zero state의 paired \(K_t=K_{lin}\)이고 geometric 항은0이다. Paired \(K_{lin}\)은 기존 -cached F64 K0와 coefficient-roundoff 수준에서 다를 수 있다. Byte identity나 별도 -rounded K0와의 exact equality를 요구하지 않는다. 차이는 실제 측정하고 기본 linear +Zero state의 paired \(K_t=K_{lin}\)이고 geometric 항은0이다. Paired \(K_{lin}\)과 **새 energy의** +F64 K0 사이에는 coefficient/평균/축약 roundoff 차이가 있을 수 있다. Byte identity나 +두 산술 경로의 exact equality를 요구하지 않는다. 변경 전 비수정 pointwise K0와는 물리 +energy가 달라졌으므로 차이를 roundoff로 설명하지 않는다. 새 경로의 차이는 실제 측정하고 linear weak form·energy gradient·tangent 불변량으로 독립 검토한다. 대칭 강제 평균이나 잔차 floor로 이 검토를 대신하지 않는다. Strained tangent가 SPD라고 가정하지 않는다. +실수 geometric completeness \(\sum_a\widehat G_{ag}=0\), +\(\sum_aX_a\otimes\widehat G_{ag}=I\)를 전제한 pure rigid motion은 F=R/E=U=f=0이다. +Rounded cached G/\(\widehat G\)/pair 산술에서 실제 rotation은 same-unit uncancelled scale과 +coefficient/graph bound로 검증한다. Partition sum만으로 affine reproduction/exact0을 보장하지 않는다. +평균 Green trace는 finite left-rotation 객관성을 유지하며 Fbar/mean J/log strain을 사용하지 않는다. + ## 형상·질량 action·복구 현재 절점은 실수값 \(x_a=X_a+u_{ah}+u_{al}\)이다. Whole-cell 인증의 outward-rounded @@ -160,6 +189,9 @@ Point \(\det F>0\)도 full tensor에서 확인하며 유한성/부호가 불확 비선형 Cauchy \(\sigma=FSF^T/\det F\), Green strain, 선형 Cauchy/infinitesimal strain은 pair로 복구한다. 8점 global tensor의 실제 shear `[11,22,33,12,13,23]`를 유지한다. +실제 E/ε를 저장하며 modified mean strain으로 치환하지 않는다. Point stress는 실제 E/ε와 +element mean trace law에 의존한다. S의 공통 isotropic 항으로부터 finite Cauchy pressure의 +pointwise equality를 추론하지 않는다. Public shape/dtype/schema는 그대로다. \(M\)은 기준 형상·밀도에서 한 번 조립한 **기존 F64 matrix 그 자체**이고 변형/시간에 따라 변하지 않는다. 모든 action \((Mz)_i=\sum_j(M_{ij},0)z_j\)는 full z와 pair product/reduction이다. F64 \(M\)으로 먼저 rounded high action을 계산하고 low를 별도 residual 보정으로 넣지 않는다. @@ -261,9 +293,13 @@ Self-check는 schema/identity/finite 및 내부 물리량의 올바른 RN64 seri - 작은 brick 및 coupled 두 Hex8: 공통 high 병진과 \(2^{-60}\) 규모의 비균일 low field로 nonzero H/E/f/U와 이웃 element/global row 전달을 확인한다. 에너지 차분·signed directional tangent의 step sweep(기준 node0의 독립 perturbation 포함), paired linear–NL zero-state 일치, - rigid translation/rotation·covariance와 - 기존 잠김/warped quadrature 한계를 검사한다. High-only 대조가 같은 물리장을 만들지 못하는 + reference-weighted mean/dev와 cross-GP outer product의 low 전달을 확인한다. + Rigid translation/rotation·covariance의 completeness/roundoff, local6 rigid modes/rank18와 + warped의 extra-null/conditioning·공간수렴/잠김을 검사한다. High-only 대조가 같은 물리장을 만들지 못하는 유의한 force/energy scale을 선택한다. +- Compatible 비균일 trace field로 center/unweighted mean과의 차이, weighted-variance energy + 차이 및 평균의 directional derivative를 검사한다. GP-local bulk tangent나 rounded mean을 + 사용하는 대조는 energy→force→tangent/full low 검사에서 실패해야 한다. - Coupled consistent M에 low velocity/acceleration을 주어 off-diagonal inertia·T·momentum 및 current moment를 검사한다. 비영 old \(r_n\)의 weighted 항등식·네 correction·세 update 식과 full-state oracle를 대조한다. \(-\alpha r_n\)를 생략하는 대조는 실패해야 한다. diff --git a/docs/hex8-structural-analysis/reference-discrepancy-proposal.md b/docs/hex8-structural-analysis/reference-discrepancy-proposal.md index c3475e4..39895f2 100644 --- a/docs/hex8-structural-analysis/reference-discrepancy-proposal.md +++ b/docs/hex8-structural-analysis/reference-discrepancy-proposal.md @@ -1,8 +1,11 @@ -# 정적 원본 불일치와 변경 선택지 — 미채택 +# 정적 원본 불일치와 변경 선택지 — B 승인 -현재 승인된 표준 full8 정식화·전체 high+low 물리 상태·원본·수치 기준은 유지한다. -이 문서는 사용자 결정용 변경안이며 [PRD](PRD.md)나 [ADR](ADR.md)를 대체하지 않는다. -현재 공식 결과의 실제 비교는 [verification](verification.md)에 있다. +2026-10-10 사용자는 B: 체적 평균 energy 도입 후 전체 재검증을 승인했다. +새 정식화는 [PRD](PRD.md)·[ADR-009](ADR.md)·[formulation](formulation.md)을 따른다. +전체 high+low 물리 상태·원본·수치 기준은 유지한다. A는 선택되지 않았다. +이 문서는 변경 근거와 승인 범위를 보존한다. 아래 공식 결과와 private 후보는 변경 전 +pointwise 구현의 불일치 조사이며 변경본 production PASS가 아니다. 실제 비교 기록은 +[verification](verification.md)에 있다. ## 확인한 차이 @@ -94,7 +97,7 @@ consistent M·반력·work/energy·운동량, 모든 low 전달·rollback·시 A/B 어느 선택도 원본·tolerance를 보정하지 않는다. 공개 Fbar 자체를 목표로 하려면 별도 정식화 조사를 선택해야 한다. 고유치 원본 Value 부재와 기존 Shell 회귀 문제도 별개로 남는다. -Physics·필수 reference 지위 변경은 사용자 결정 전에는 적용하지 않는다. +Physics 변경 B는 승인됐으며 필수 reference 지위는 유지한다. 승인만으로 변경본 검증을 완료하지 않는다. 원시 독립 표준 full8 audit는 로컬 `.harness/hex8-evidence/t8-independent-full8-audit/`, 체적 조사·후보 수식·한 번의 선형 계산과 SHA는