Files
FESADev/docs/PRD.md
T
2026-06-05 16:31:21 +09:00

4.8 KiB

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.
  • 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.