docs(hex8): define approved mean-volume energy contract

This commit is contained in:
KOKO\Mimi
2026-10-10 23:00:58 +09:00
parent 7b75f37462
commit 96b6f86f28
9 changed files with 313 additions and 113 deletions
@@ -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\)를 생략하는 대조는 실패해야 한다.