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
+46 -25
View File
@@ -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에 따라 다시 수행한다.