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
+143 -47
View File
@@ -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%로 이 내부 검사를 대신하지 않는다.