diff --git a/docs/hex8-structural-analysis/FEATURED_AGENTS.md b/docs/hex8-structural-analysis/FEATURED_AGENTS.md index cfad05a..07aa646 100644 --- a/docs/hex8-structural-analysis/FEATURED_AGENTS.md +++ b/docs/hex8-structural-analysis/FEATURED_AGENTS.md @@ -10,6 +10,7 @@ static/frequency/HHT 절차를 추가한다. 코드 존재와 기능 검증 완 | 문서 | 책임·용도 | | --- | --- | +| [README](README.md) | 개발 목적·CLI 사용·다른 기능의 참조점·적용 한계 | | [formulation](formulation.md) | 3D local 계산, energy/force/tangent, mass·HHT와 검증 불변량 | | [io](io.md) | 입력 의미·typed 경계·공식 결과 metadata/units·진단 | | [numeric controls](numeric-controls.md) | 수치 scale·zero branch·tuning·독립 검사 기준 | diff --git a/docs/hex8-structural-analysis/PRD.md b/docs/hex8-structural-analysis/PRD.md index 74de1a4..cb99633 100644 --- a/docs/hex8-structural-analysis/PRD.md +++ b/docs/hex8-structural-analysis/PRD.md @@ -435,7 +435,7 @@ HHT 식·기준 consistent M·입력·고정 schedule·100회·Si/exact-zero· - [x] 선형·비선형 정적 accepted state/반력/잔차 검증 - [x] Generalized consistent-mass frequency·최저 N·original-pencil 검증 - [x] 선형·비선형 HHT u/v/physical a·시간수렴·수지 내부 검증 -- [ ] 공식 HDF5/CLI/self-check/실패 final 보존 검증 +- [x] 공식 HDF5/CLI/self-check/실패 final 보존 검증 - [ ] 정적2·동적2 원본 필수 family 비교 PASS - [ ] 사용자 원본 최저10 modal Value 제공 및 필수 비교 PASS - [ ] 최신 전체 MSVC Debug build/CTest·기존 baseline 대조 완료 @@ -455,5 +455,10 @@ native CTest exit0이며 독립 수치 검토를 통과했다. 두 정적 원본 증분1–3은 unchanged schedule로 관측했고, 원래 모든 free 성분의 전체 pair 물리 gate를 독립 재계산했다. 이 관측은 네 번째 증분 전에 종료했으며 전체101 endpoint 완료가 아니다. 상세 범위와 한계는 [수치 검토](numerical-review.md), [물리 검토](physics-review.md)에 있다. -공식 결과·외부 비교·최신 전체 회귀도 남아 있다. +공식 결과 연결은 `e2c3c5b`에 통합했다. 작성자 행동본의 관련101/101과 public header만 +보완한 후속본의5절차 API/schema1/1이 native build/CTest0/0이며, 독립 수치·I/O 검토에서 +요청 밖 modal pair의 입력 검증 누락을 보완하고 잔여 finding0을 확인했다. 메인 연결 후 +실제 CLI·HDF5·full-pair RN64·실패 final 보존 관련17/17도 native build/CTest0/0이다. +이 범위의 완료와 외부 비교·최신 전체 회귀는 구분한다. 실행 방법은 [README](README.md), +세부 근거와 한계는 [수치 검토](numerical-review.md)에 있다. 원본 frequency 결과 부재는 구현 진행을 막지 않지만 기능 검증 완료를 막는다. diff --git a/docs/hex8-structural-analysis/README.md b/docs/hex8-structural-analysis/README.md new file mode 100644 index 0000000..2d6cc4b --- /dev/null +++ b/docs/hex8-structural-analysis/README.md @@ -0,0 +1,71 @@ +# Hex8 구조해석 + +개인 연구용 FESA에 8절점 육면체의 선형 강성, Total Lagrangian–StVK 기하비선형 +내력·접선 강성과 기준 형상의 consistent 질량을 추가한다. 요소당 병진 자유도는24개이며 +강성·질량·복구에 full 2×2×2 적분을 사용한다. 선형/비선형 정적, consistent-mass frequency, +선형/비선형 HHT 동해석을 typed state에서 공식 HDF5와 CLI까지 연결한다. + +구현과 기능 검증 완료는 다르다. 원본 정적2·동적2의 필수 수치 비교, 사용자 modal Value와 +최신 전체 회귀·최종 검토가 완료 조건이다. 현재 상태는 [PRD checklist](PRD.md#현재-checklist), +선택과 승인 이력은 [ADR](ADR.md)에 있다. + +## 사용법 + +[공통 환경·빌드 방법](../operations.md)에 따라 MSVC x64 Debug 실행 파일과 dependency DLL을 +준비한다. CLI는 입력 `.inp` 하나를 받으며 입력의 lexical parent에 `_results.h5`와 +`_log.txt`를 생성한다. `--output`은 지원하지 않는다. + +Read-only 원본에서 직접 실행하지 않고 별도 폴더에 복사한 입력으로 실행한다. 저장소 루트의 +다음 예시는 제공된 선형 정적 입력을 사용한다. + +```powershell +New-Item -ItemType Directory -Path '.harness/hex8-example' -Force +Copy-Item -LiteralPath 'reference/hexa/hexa_linearstatic.inp' -Destination '.harness/hex8-example/hexa_linearstatic.inp' +& '.harness/build-ninja-msvc-debug/src/fesa/fesa.exe' '.harness/hex8-example/hexa_linearstatic.inp' +$LASTEXITCODE +``` + +Native exit0과 이번 입력의 `source_input_identity`를 함께 확인한다. 기존 결과 파일의 존재만으로 +이번 실행의 성공을 판단하지 않는다. 해석·로그·쓰기·readback·close·final 교체 실패에서는 기존 +최종 HDF5를 보존한다. + +입력은 single Part/identity Instance의 Solid-only `C3D8`, `SOLID SECTION`, 상수 등방성 +`ELASTIC`을 사용한다. Frequency와 동해석에는 양의 `DENSITY`가 필요하다. 실제 BC/CLOAD는 +DOF1–3이다. 승인된 exact-zero 회전 BC4–6만 source 경고와 no-op으로 처리하며, 비영 회전 +BC와 값0을 포함한 모든 회전 CLOAD는 거부한다. Unsupported 의미를 기본값으로 흡수하지 않는다. + +정적 해석은 지정 변위·집중하중, 비선형은 full Newton을 사용한다. 동해석은 fixed +`DYNAMIC,DIRECT` schedule, 영 초기 변위·속도와 영 지정 BC를 사용하며 CLOAD의 +`TABULAR` step-time relative amplitude·선형 보간·끝 값 유지를 지원한다. Frequency의 원본 +LANCZOS 표기는 보존하지만 내부 해법은 generalized MKL FEAST다. 상세 subset과 실패 의미는 +[I/O 계약](io.md), field·shape는 [PRD017](PRD.md#fem-req-hex8-017--hdf5-계약)을 따른다. + +## 결과와 다른 기능 개발의 참조점 + +Nodal 결과는 `N×3`, 적분점 stress/strain은 `E×8×6`이다. Source node/element/IntPt identity를 +보존하고 절점 평균·외삽을 하지 않는다. Stress는 global Cauchy, strain은 선형 infinitesimal +또는 비선형 Green–Lagrange이며 shear 성분은 tensor다. 반력과 전체 residual은 구분한다. +Frequency는 modes/vectors와 모든 반환 pair의 검증량을 별도 eigen 경로에 저장한다. + +HHT는 변위·속도·physical a·algorithmic A와 force·energy·history를 normalized high+low로 +유지한다. 공식 Float64는 전체 물리량의 RN64 observable이며 low를 별도 영속 field로 내보내지 +않는다. 출력 배열만으로 엄격한 내부 gate를 다시 계산해 같은 판정을 기대하지 않는다. +Restart는 지원하지 않는다. [정밀도 정식화](precision-formulation.md)는 같은 gradient의 +내력·미분, 산술 범위와 반올림 의미를 다음 개발에 전달한다. + +[정식화](formulation.md)는 K/M·접선·형상 인증·물리량의 기준이다. +[수치 기준](numeric-controls.md)은 엄격한 내부 gate와 외부 tolerance를 구분한다. +[원본 mapping](reference-model.md)은 case/frame/source identity·point 순서·RF projection을 +소유한다. 독립 평가의 범위는 [수치 검토](numerical-review.md)와 [물리 검토](physics-review.md), +실패와 수정 근거는 [lessons](lessons.md)에 보존한다. + +## 적용 한계 + +Full integration의 굽힘 shear locking과 거의 비압축성의 locking을 다른 요소 formulation으로 +자동 대체하지 않는다. Warped geometry는 보수적으로 cell 전체의 Jacobian 양성을 인증하며 +uncertain geometry/trial도 실패한다. StVK 선택과 입력 호환성은 외부 solver의 내부 재료·체적 +처리·시간 알고리즘 동등성을 보증하지 않는다. + +Reduced/hybrid/incompatible·20절점 요소, 소성·contact, mixed Shell–Solid mesh, 압력·체적력, +시간변화 지정 BC·비영 초기 상태, adaptive/explicit dynamics와 restart는 범위 밖이다. +한 원본 U의 일치만으로 physical a·에너지·일반 mesh나 장시간 정확성을 검증했다고 주장하지 않는다. diff --git a/docs/hex8-structural-analysis/numerical-review.md b/docs/hex8-structural-analysis/numerical-review.md index ca59e9a..28c569e 100644 --- a/docs/hex8-structural-analysis/numerical-review.md +++ b/docs/hex8-structural-analysis/numerical-review.md @@ -56,6 +56,30 @@ source-prefix bounded PASS를 반환했다. 저장값 비교의2^-90 budget을 graph/106-bit 정확도 보장으로 확대하지 않는다. 이 검산은 accepted 상태와 실제 반환 du를 확인하며 중간 각 solve의 Kt/Keff·RHS 방정식 잔차를 별도로 증명한 것은 아니다. +## 공식 결과·prepared/CLI 연결의 독립 검토 + +작성자 행동본 `9144eef`와 public header 직접 include·Doxygen만 보완한 후속본 `63cfdd0`을 +독립 reviewer가 검토했다. Typed Solid static/frequency/dynamic outcome, 실제5절차 dispatch, +source warning, static 실제2채널·dynamic scalar 로그와 로그 실패 우선순위를 확인했다. +HDF5 field·dtype/endian/UTF-8·shape·source identity·units, 전체 pair 검증 이후 RN64 출력, +callback 이후 산술 환경, 실제 writer/reader checked-close·readback·atomic replace와 기존 +final 보존을 확인했다. Rounded 배열에서 물리 gate를 다시 계산하지 않는다. + +요청 mode 뒤의 backend pair에는 차원 상한·정렬·유의 음수 lambda 검증이 빠져 있었다. +전체 pair 수를 free 차원 이하로 제한하고 T5와 같은 `lambda/scale>=-1e-9` 정책을 적용했다. +실제3-free/request1 API 결과에서 요청 밖 row를 음수·역순·차원 초과로 각각 변형해 +서로 다른 거부 원인과 기존 final byte 보존을 확인했다. Raw near-zero 음수를0으로 +바꾸거나 그 frequency를 생성하지 않는다. 이 finding은 해소됐으며 잔여 actionable finding0이다. + +행동본의 실제 native build/CTest는0/0, 관련101/101 PASS·112.60s다. Header-only 후속본은 +전체 configured 대상 recompile0 및5절차 API/schema1/1 PASS·9.88s이며101개를 후속본에서 +다시 실행한 것으로 보고하지 않는다. 메인 `e2c3c5b`는 같은13개 owned blob과4개 CMake +등록을 연결했고 관련17/17을 native build/CTest0/0·72.95s로 확인했다. +원시114개 SHA/크기와 source13개 committed blob/snapshot 일치를 reviewer와 메인이 각각 +확인했다. 로컬 자료는 `.harness/hex8-evidence/{t7-output-frozen,t7-integrated}/`다. +이 판정은 T7의 bounded PASS다. 전체780개 CTest·공식 원본 CLI 수치 비교·기능 완료와 +release PASS를 뜻하지 않는다. + ## HEX8-NR-001 — 영 회전 경계와 필수 원본 충돌 검토 당시 PRD008/I/O는 BC/CLOAD DOF4–6을 값0이어도 거부했다. 그러나 모든 필수 INP에