# PRD: FESA MITC4 Linear Static Shell Solver ## 목적 FESA는 유한요소 input 파일을 읽어 구조해석을 수행하고, 절점과 요소의 해석 결과를 출력하는 C++ 구조해석 솔버를 제공한다. 초기 제품 기능은 MITC4 4절점 shell element 기반 선형정적 해석이다. ## 사용자 - 구조해석 솔버를 개발하는 C++/MSVC 개발자 - Abaqus/Nastran 계열 input과 결과 검증 방식을 이해하는 해석 엔지니어 - reference solver 결과와 FESA 결과를 비교해 기능 release를 판단하는 reviewer - Codex/FESA agent workflow로 기능을 단계별 구현하는 agent ## 문제 정의 구조해석 솔버는 단순히 코드를 빌드하는 것만으로 정확성을 판단할 수 없다. 요소 정식화, 입력 mapping, 선형해법, 결과 출력, reference solver 비교, tolerance 판정이 모두 명시되어야 한다. FESA는 이 과정을 문서화된 단계와 자동 검증으로 묶어 구현 실수를 줄인다. ## 핵심 기능 1. Abaqus `.inp` subset 입력 - `*NODE`, `*ELEMENT`, `*MATERIAL`, `*ELASTIC`, `*SHELL SECTION`, `*BOUNDARY`, `*CLOAD`, `*STEP` 지원 - unsupported keyword는 명시적 diagnostic을 낸다. 2. MITC4 shell 선형정적 해석 - 4-node quadrilateral shell - 6 DOF per node: `U1, U2, U3, UR1, UR2, UR3` - isotropic linear elastic shell section - 2x2 Gauss integration - membrane, bending, transverse shear resultants 3. Sparse system solve - CSR global stiffness assembly - Intel oneAPI MKL PARDISO direct solver - constrained DOF 처리와 reaction recovery 4. Parallel computation - Intel oneAPI TBB 기반 element stiffness/result recovery 병렬화 - deterministic assembly merge 5. HDF5 result output - mesh metadata - nodal displacement - nodal reaction - element internal force/resultant - element stress 6. Reference solver verification - stored Abaqus S4R reference HDF5 artifact와 비교 - Abaqus S4 artifact는 diagnostic reference로 보관 - nodal displacement, reaction, element internal force, stress 비교 - tolerance `1e-5` 단일 기준 7. Solver state and result model - `Domain`, `AnalysisModel`, `AnalysisState` 분리 - step/frame/field/history HDF5 결과 구조 - constrained DOF 제거와 full-system reaction recovery 8. Extensible object creation - Abaqus parser와 element/material/load/boundary factory registry 분리 - 향후 1D/3D 요소, nonlinear, dynamic, thermal 기능 추가를 위한 module boundary 유지 ## 성공 기준 - MITC4 요구조건, 연구, 정식화, I/O, reference model, 구현 계획, reference verification, release 문서가 작성되어 있다. - 모든 C++ production 변경은 관련 테스트가 먼저 작성되고 실패가 확인된 뒤 구현된다. - MSVC x64 Debug CMake build와 CTest가 통과한다. - 다음 테스트모델이 stored Abaqus S4R reference와 `abs-or-rel 1e-5` 이내로 일치한다. - membrane patch - bending patch - transverse shear patch - twist patch - coarse Scordelis-Lo shell - HDF5 output schema가 reference comparison에 필요한 모든 id, component, step/frame, units, metadata를 포함한다. - Essential boundary condition reaction은 `K_full * U_full - F_full` 기준으로 계산되어 reference reaction과 비교 가능하다. - Singular system 또는 solver factorization 실패는 명시적 diagnostic으로 보고된다. ## 제외 사항 - Nastran BDF parser - nonlinear static analysis - geometric nonlinearity - dynamic analysis - eigen/buckling analysis - material plasticity - layered composite shell section - contact analysis - Abaqus/Nastran 실행 자동화 - reference artifact 자동 생성 - OpenSees API 호환성 - Phase 1 mesh quality scoring ## 확장 로드맵 MITC4 선형정적 기능이 reference 검증을 통과한 뒤 다음 기능을 별도 요구조건과 정식화 문서로 진행한다. 1. nonlinear static analysis 2. nonlinear dynamic analysis 3. heat transfer and thermal-stress coupling 4. 1D truss/beam and 3D solid elements 5. additional material models and properties ## Dependency Requirements - MSVC and CMake must be available for C++ build validation. - Intel oneAPI MKL must be available through `MKLROOT` or known oneAPI installation paths. - Intel oneAPI TBB must be available through `TBBROOT` or known oneAPI installation paths. - HDF5 C library must be supplied through `HDF5_ROOT` or `HDF5_DIR`; the current local default is `C:\Program Files\HDF_Group\HDF5\2.1.1`, with CMake package files under `C:\Program Files\HDF_Group\HDF5\2.1.1\cmake`. - Python 3 must be available for harness validation and phase execution. ## Release Requirements Solver feature release is allowed only when: 1. Requirements are approved. 2. Research evidence and formulation are reviewed. 3. I/O contract and HDF5 schema are fixed. 4. Reference model artifacts exist and provenance is documented. 5. C++ TDD implementation passes CTest. 6. Reference comparison passes tolerance `1e-5`. 7. Known limitations are written in the release document.