51 lines
2.4 KiB
Markdown
51 lines
2.4 KiB
Markdown
# Step 2: Cantilever Reference Comparison
|
|
|
|
## 읽어야 할 파일
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/PRD.md`
|
|
- `/docs/ARCHITECTURE.md`
|
|
- `/docs/ADR.md`
|
|
- `/reference/cantilever beam/cantilever beam.inp`
|
|
- `/reference/cantilever beam/cantilever beam displacements.csv`
|
|
- `/reference/cantilever beam/cantilever beam reactions.csv`
|
|
- `/include/fesa/analysis/run_solver.hpp`
|
|
- `/include/fesa/io/hdf5/reader.hpp`
|
|
- `/include/fesa/validation/reference_csv.hpp`
|
|
|
|
## 작업
|
|
|
|
제공된 계층형 캔틸레버를 production pipeline으로 해석하고 현재 존재하는 변위와
|
|
반력만 Abaqus 2024 결과와 비교한다.
|
|
|
|
- `tests/reference/cantilever_reference_test.cpp`와 reference compare CLI를 먼저
|
|
작성한다.
|
|
- comparison request는 Instance `Part-1-1`, relative tolerance `1e-5`,
|
|
displacement absolute scale `1e-10`, reaction absolute scale `1e-8`을 명시한다.
|
|
- HDF5 결과와 CSV를 public adapter로 읽어 `(Instance,Node Label)`로 join한다.
|
|
- 요청하지 않은 internal force/stress 파일을 검색하거나 pass로 보고하지 않는다.
|
|
- equilibrium과 finite result도 함께 assertion한다.
|
|
|
|
## Acceptance Criteria
|
|
|
|
```powershell
|
|
cmake --build --preset windows-debug
|
|
ctest --preset windows-debug -R CantileverReference --output-on-failure
|
|
.\out\build\windows-debug\Debug\fesa.exe solve "reference\cantilever beam\cantilever beam.inp" --output out\cantilever-beam.h5
|
|
.\out\build\windows-debug\Debug\fesa-reference-compare.exe --results out\cantilever-beam.h5 --instance Part-1-1 --displacements "reference\cantilever beam\cantilever beam displacements.csv" --reactions "reference\cantilever beam\cantilever beam reactions.csv" --relative-tolerance 1e-5 --displacement-absolute-scale 1e-10 --reaction-absolute-scale 1e-8
|
|
ctest --preset windows-debug --output-on-failure
|
|
```
|
|
|
|
## 검증 절차
|
|
|
|
1. reference test가 실제 오차를 보고하며 실패하는 것을 확인한다.
|
|
2. discrepancy마다 가장 작은 analytical test를 추가한 뒤 근거 있는 kernel만 수정한다.
|
|
3. tolerance를 넓혀 결함을 숨기지 않는다.
|
|
4. 전체 테스트와 최대 정규화 오차를 index summary에 기록한다.
|
|
|
|
## 금지사항
|
|
|
|
- reference `.inp` 또는 CSV를 수정하지 마라. 이유: 원본 golden을 보존해야 한다.
|
|
- 미제공 내력/응력 Abaqus 검증을 통과했다고 주장하지 마라. 이유: 증거가 없다.
|
|
- test-only parser/solver 경로를 만들지 마라. 이유: production pipeline 검증이다.
|