From df0388ae2f830b4f1af64854cc7b171b29b141dc Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Fri, 9 Oct 2026 00:39:07 +0900 Subject: [PATCH] docs: approve zero rotational boundary compatibility for Hex8 --- docs/hex8-structural-analysis/ADR.md | 10 ++++++++++ docs/hex8-structural-analysis/PRD.md | 10 +++++++--- docs/hex8-structural-analysis/io.md | 6 +++++- docs/hex8-structural-analysis/numerical-review.md | 13 +++++++++---- docs/hex8-structural-analysis/reference-model.md | 3 +++ docs/tracking/findings.md | 15 --------------- 6 files changed, 34 insertions(+), 23 deletions(-) diff --git a/docs/hex8-structural-analysis/ADR.md b/docs/hex8-structural-analysis/ADR.md index 650d338..1c66764 100644 --- a/docs/hex8-structural-analysis/ADR.md +++ b/docs/hex8-structural-analysis/ADR.md @@ -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 부재·거부 경계를 행동 테스트로 확인한다. diff --git a/docs/hex8-structural-analysis/PRD.md b/docs/hex8-structural-analysis/PRD.md index eac24c7..6446337 100644 --- a/docs/hex8-structural-analysis/PRD.md +++ b/docs/hex8-structural-analysis/PRD.md @@ -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 결과 부재는 구현 진행을 막지 않지만 기능 검증 완료를 막는다. diff --git a/docs/hex8-structural-analysis/io.md b/docs/hex8-structural-analysis/io.md index 6e63623..a95da5d 100644 --- a/docs/hex8-structural-analysis/io.md +++ b/docs/hex8-structural-analysis/io.md @@ -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다. diff --git a/docs/hex8-structural-analysis/numerical-review.md b/docs/hex8-structural-analysis/numerical-review.md index f3b7ad3..48fdb89 100644 --- a/docs/hex8-structural-analysis/numerical-review.md +++ b/docs/hex8-structural-analysis/numerical-review.md @@ -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 실행은 하지 않았다. ## 독립 검토에서 정리한 내용 diff --git a/docs/hex8-structural-analysis/reference-model.md b/docs/hex8-structural-analysis/reference-model.md index 1e63411..d0ca90e 100644 --- a/docs/hex8-structural-analysis/reference-model.md +++ b/docs/hex8-structural-analysis/reference-model.md @@ -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 | | --- | ---: | --- | diff --git a/docs/tracking/findings.md b/docs/tracking/findings.md index 4082ede..6871440 100644 --- a/docs/tracking/findings.md +++ b/docs/tracking/findings.md @@ -1,20 +1,5 @@ # 미해결 문제 -## Hex8 필수 원본과 영 회전 경계 입력 계약의 충돌 - -- 조건·현상: 승인된 Hex8 입력 계약은 BC DOF4–6을 값0이어도 거부하지만, - `reference/hexa/`의 필수5 INP 모두 `Set-1, 4, 4`, `Set-1, 5, 5`, `Set-1, 6, 6`의 - 생략된 영 지정값을 포함한다. 정적2/frequency는794–796행, 동적2는796–798행이다. -- 영향: 엄격한 계약을 그대로 구현하면5개 원본 모두 input failure로 필수 비교가 불가능하다. - 독립 kernel 수식에 대한 blocker와는 별개다. -- 현재 해결하지 못하는 이유: 승인된 입력 의미를 변경하거나 원본을 수정할 권한을 - 임의로 추정하지 않는다. 영 회전 BC만 경고/no-op으로 수용하는 예외 또는 엄격한 거부 유지와 - 사용자 원본 수정 중 한정된 결정을 요청한 상태다. -- 다음 접근: 사용자 답변에 따라 [기능 PRD](../hex8-structural-analysis/PRD.md), - [I/O](../hex8-structural-analysis/io.md), [결정](../hex8-structural-analysis/ADR.md)을 일치시키고 - 승인된 의미를 parser 테스트로 검증한다. [독립 수치 검토](../hex8-structural-analysis/numerical-review.md)의 - HEX8-NR-001을 해소하며 원본/source identity와 비영 회전 경계·회전 CLOAD 거부는 보존한다. - ## HHT shell의 시간수렴 - 조건·현상: 실제 shell의 두 시간수렴 사례에서 요구한 수렴 성능을 만족하지 못한