53 lines
1.9 KiB
Markdown
53 lines
1.9 KiB
Markdown
# Step 0: Abaqus Input Contract
|
|
|
|
## 읽어야 할 파일
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/PRD.md`
|
|
- `/docs/ARCHITECTURE.md`
|
|
- `/docs/ADR.md`
|
|
- `/docs/superpowers/specs/2026-07-29-abaqus-assembly-reference-design.md`
|
|
- `/docs/superpowers/plans/2026-07-29-fesa-phase-1.md`
|
|
- `/include/fesa/io/abaqus/`
|
|
- `/reference/cantilever beam/cantilever beam.inp`
|
|
|
|
## 작업
|
|
|
|
production parser를 수정하기 전에 `docs/ABAQUS_INPUT_SUBSET.md`를 normative contract로
|
|
작성하고 valid/invalid fixture matrix를 등록한다.
|
|
|
|
문서에 각 keyword의 허용 scope, parameter, data line, diagnostic을 정확히 정의한다.
|
|
|
|
- `*NODE`, `*ELEMENT,TYPE=B31`
|
|
- `*PART/*END PART`, `*ASSEMBLY/*END ASSEMBLY`,
|
|
`*INSTANCE/*END INSTANCE`
|
|
- `*NSET`, `*ELSET`, `GENERATE`, nested set, `INSTANCE=`
|
|
- `*MATERIAL`, `*ELASTIC`, `*BEAM GENERAL SECTION`
|
|
- optional `*TRANSVERSE SHEAR STIFFNESS`
|
|
- `*BOUNDARY`, `*CLOAD`, `*STEP`, `*STATIC`, `*END STEP`
|
|
- no-op `*HEADING`, `*PREPRINT`, `*RESTART`, `*OUTPUT`
|
|
|
|
`tests/fixtures/abaqus/valid`와 `invalid`에 최소 한 규칙당 fixture를 정의하고
|
|
data-driven contract test를 먼저 실패시킨다.
|
|
|
|
## Acceptance Criteria
|
|
|
|
```powershell
|
|
cmake --build --preset windows-debug
|
|
ctest --preset windows-debug -R AbaqusInputContract --output-on-failure
|
|
ctest --preset windows-debug --output-on-failure
|
|
```
|
|
|
|
## 검증 절차
|
|
|
|
1. 문서와 fixture manifest를 먼저 작성한다.
|
|
2. 아직 미구현인 계약 테스트가 실패하는 것을 확인한다.
|
|
3. 이 step에서는 parser behavior를 확장하지 않는다.
|
|
4. index summary에 계약 문서와 미통과 fixture 범위를 기록한다.
|
|
|
|
## 금지사항
|
|
|
|
- Abaqus 전체 문법 지원을 약속하지 마라. 이유: 명시된 subset만 대상이다.
|
|
- unknown keyword ignore 규칙을 만들지 마라. 이유: 조용한 모델 손실을 유발한다.
|
|
- reference 원본을 고치지 마라. 이유: golden provenance를 보존해야 한다.
|