docs: approve zero rotational boundary compatibility for Hex8

This commit is contained in:
KOKO\Mimi
2026-10-09 00:39:07 +09:00
parent 786b5f0d68
commit df0388ae2f
6 changed files with 34 additions and 23 deletions
+10
View File
@@ -47,3 +47,13 @@ element/IntPt/component이며 elemental-nodal stress·평균·외삽으로 바
**영향:** Foundation과 공통 요구/결정을 재작성하지 않는다. Feature 문서는 자체 계약과 필요한
handoff/evidence만 소유한다. Shared CMake/factory와 prepared/HDF5 연결에 단일 writer를 둔다.
Failed candidate/출력 실패에서 accepted history와 기존 final HDF5를 보존한다.
## HEX8-ADR-007 — Inactive zero rotational BC의 한정된 호환 예외
**승인:** 2026-10-09 사용자는 필수 원본의 zero DOF4–6 경계와 strict 거부 계약 충돌에 대해
A(영 회전 경계만 경고/no-op으로 수용)를 선택했다. 독립 검토 HEX8-NR-001의 해결이다.
**선택:** Solid-only supported displacement BC의 exact-zero DOF4–6(생략0 포함)만 source/location
warning/no-op으로 수용한다. Mixed1–6 range의1–3은 적용하고4–6만 경고한다.
**영향:** 실제 DOF·constraint·state/output은3성분이다. 비영 회전 BC·모든 회전 CLOAD,
DOF범위 밖이나 의미 있는 미지원 BC 옵션은 계속 거부한다. 원본을 수정·preprocess하지 않는다.
Parser에서 경고·translational 적용·회전 equation 부재·거부 경계를 행동 테스트로 확인한다.
+7 -3
View File
@@ -114,7 +114,11 @@ strain/energy, 에너지 gradient·내력 tangent, 좌표 공변성, 선형극
### FEM-REQ-HEX8-008 — 경계와 집중력
`*BOUNDARY`와 `*CLOAD`는 DOF1–3만 허용한다. DOF4–6은 값이 0이어도 거부한다.
실제 `*BOUNDARY`와 `*CLOAD` 성분은 DOF1–3이다. Solid-only 입력 호환 예외로
지원 displacement `*BOUNDARY`의 DOF4–6 exact-zero(생략된0 포함)만 source/location을
남기는 명시적 warning/no-op으로 수용한다. 범위1–6은1–3을 적용하고4–6만 경고한다.
회전 equation·constraint·state는 만들지 않는다. 비영 회전 BC, DOF4–6 CLOAD(값0 포함),
DOF1–6 밖의 경계와 의미 있는 미지원 BC 옵션은 계속 거부한다.
정적은 영/비영 지정 변위를 지원하고, 선형은 \(K_{ff}u_f=F_f-K_{fc}u_c\)다.
비선형 정적에서는 지정 값과 외력을 같은 load factor로 증가시켜 이전 accepted 상태에서
Newton을 수행한다. 동해석은 고정 exact-zero 경계만 지원한다. 동일 resolved node/DOF의
@@ -420,7 +424,7 @@ Generalized sparse FEAST의 공개 진입점은
## 현재 checklist
- [ ] 수식·입출력·numeric controls·원본 mapping 정리 및 독립 numerical review 완료
- [x] 수식·입출력·numeric controls·원본 mapping 정리 및 독립 numerical review 완료
- [ ] Hex8 K0/consistent M/비선형 f/Kmat/Kgeo/Kt·형상·복구 kernel 검증
- [ ] Solid Domain/parser/3N DOF/ordered assembly/amplitude 검증
- [ ] 선형·비선형 정적 accepted state/반력/잔차 검증
@@ -432,5 +436,5 @@ Generalized sparse FEAST의 공개 진입점은
- [ ] 최신 전체 MSVC Debug build/CTest·기존 baseline 대조 완료
- [ ] Independent numerical/physics blocker0·범위/한계/evidence 기록 완료
현재는 계약 문서를 작성 중이며 solver implementation/numerical/reference PASS를 주장하지 않는다.
현재 계약 문서·독립 정식화 검토를 마쳤으며 solver implementation/numerical/reference PASS를 주장하지 않는다.
원본 frequency 결과 부재는 구현 진행을 막지 않지만 기능 검증 완료를 막는다.
+5 -1
View File
@@ -12,7 +12,11 @@ instance/label과 internal index를 구분한다. C3D8의8 distinct nodes와 SOL
material 연결, constant E/nu 및 procedure별 density capability를 검증한다. Blank section row는
허용하되 thickness/material orientation·다른 solid type를 default로 흡수하지 않는다.
BC/CLOAD는 DOF1–3만 허용한다. Static 비영 prescribed는 absolute target이며 nonlinear의
실제 BC/CLOAD 성분은 DOF1–3이다. 사용자 승인된 호환 예외로 supported displacement BC의
exact-zero DOF4–6(생략0 포함)만 source/location warning/no-op으로 처리한다. Mixed1–6 range는
1–3을 적용하고4–6만 경고하며 회전 equation/state를 만들지 않는다. 비영 회전 BC와 모든
회전 CLOAD는 거부하고 unsupported BC 옵션·DOF범위 밖 의미를 이 예외로 수용하지 않는다.
Static 비영 prescribed는 absolute target이며 nonlinear의
factor가 force/target 모두에 적용된다. Frequency는 homogeneous BC, dynamic은 exact-zero BC와
initial q/v0만 허용한다. Unused node·mixed element·alias element·unknown set/material/source
identity·bad density/geometry·unsupported meaningful keyword는 model/input failure다.
@@ -3,18 +3,23 @@
검토 대상은 [PRD](PRD.md), [formulation](formulation.md), [numeric controls](numeric-controls.md),
[I/O](io.md), [reference mapping](reference-model.md)이다. 2026-10-08 작성자와 독립된
`hex8_t1_numerical` reviewer가 문서·관련 코드·원본을 대조했다. 수식에 추가 blocker는 없으나
아래 필수 원본/입력 계약 충돌은 사용자 결정 대기다. 실제 solver 수치 PASS가 아니다.
필수 원본/입력 계약 충돌은2026-10-09 사용자 선택 A로 해소했다. 구현 전 문서 blocker0이며
실제 solver 수치 PASS가 아니다.
## HEX8-NR-001 — 영 회전 경계와 필수 원본 충돌
현재 PRD008/I/O는 BC/CLOAD DOF4–6을 값0이어도 거부한다. 그러나 모든 필수 INP에
검토 당시 PRD008/I/O는 BC/CLOAD DOF4–6을 값0이어도 거부했다. 그러나 모든 필수 INP에
`Set-1, 4, 4`, `Set-1, 5, 5`, `Set-1, 6, 6`의 생략된 영 지정값이 있다.
Static2/frequency는794–796행, dynamic2는796–798행이다. Read-only 원본을 그대로
사용하면5개 모두 input failure이므로 end-to-end integration/필수 비교를 진행할 수 없다.
원본의 영 회전 BC만 warning/no-op으로 수용하는 입력 호환 예외와, strict 거부를 유지하고
사용자가 원본을 수정하는 두 대안을 사용자에게 제시했다. 현재 승인 대기이며 silent ignore/
원본 preprocessing을 적용하지 않았다. Kernel 수식에는 이 충돌과 무관한 수치 blocker가 없다.
사용자가 원본을 수정하는 두 대안을 제시했다. 2026-10-09 사용자는 A를 승인했다.
PRD008/I/O를 zero rotational displacement BC만 source warning/no-op으로 수용하는 한정된
호환 예외로 수정했다. 비영 회전 BC·모든 회전 CLOAD는 계속 거부하고 원본을 보존한다.
따라서 문서 blocker는 해소됐으며 구현에서 경고·실제3N·거부 경계를 테스트해야 한다.
동일 독립 reviewer가 승인된 수정 부분만 bounded recheck했고 `blockers: []`를 반환했다.
정적 읽기 확인 exit0이며 수식 재검토·code 변경·solver 실행은 하지 않았다.
## 독립 검토에서 정리한 내용
@@ -10,6 +10,9 @@ Source revision은2382d3a이며 사용자 제공 `reference/hexa/`의5 INP·8 CS
Static DIRECT h=.1/T=1의 마지막 Increment10을 비교하고 nonlinear은 NLGEOM=YES다.
Dynamic DIRECT h=.1/T=10의 Increment0..100 전체를 비교한다. Amp-1은 `(0,0),(.1,1),(10,1)`다.
Frequency는 original unstressed 상태의10 modes 요청이며 결과 Value는 아직 제공되지 않았다.
원본5개 모두 Set-1의 zero rotational BC4/5/6을 포함한다. 사용자 승인된
[HEX8-ADR-007](ADR.md#hex8-adr-007--inactive-zero-rotational-bc의-한정된-호환-예외)에 따라
이 행만 source warning/no-op으로 처리하며 원본과 실제3N mapping을 보존한다.
| 원본 | CSV rows | SHA-256 raw |
| --- | ---: | --- |