add uncommitted files
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Step 3: Active Instance Domain Normalization
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PRD.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/superpowers/specs/2026-07-29-abaqus-assembly-reference-design.md`
|
||||
- `/include/fesa/model/domain_builder.hpp`
|
||||
- `/include/fesa/io/abaqus/deck_record.hpp`
|
||||
- `/include/fesa/io/abaqus/parser.hpp`
|
||||
- `/tests/fixtures/abaqus/minimal_cantilever.inp`
|
||||
- `/tests/fixtures/abaqus/minimal_part_instance_cantilever.inp`
|
||||
|
||||
## 작업
|
||||
|
||||
flat 또는 단일 무변환 Instance 입력을 동일한 `Domain`으로 변환한다.
|
||||
|
||||
```cpp
|
||||
[[nodiscard]] DomainBuildResult map_deck_to_domain(const ParsedDeck& deck);
|
||||
```
|
||||
|
||||
- 먼저 두 fixture가 동등한 활성 절점·요소·재료·단면·하중·BC를 만드는 통합
|
||||
테스트를 작성한다.
|
||||
- 계층형 deck은 정확히 하나의 Assembly와 Instance를 요구한다.
|
||||
- transform data가 있거나 Part reference가 없으면 source diagnostic을 반환한다.
|
||||
- Instance가 참조하지 않는 Part는 Domain에 포함하지 않는다.
|
||||
- origin에는 실제 Part/Instance/local label을 보존한다.
|
||||
- 전단강성이 없으면 \(A_{sy}=A_{sz}=5A/6\), `SCF=0`,
|
||||
`ShearPropertySource::phase1_default`를 사용한다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
cmake --build --preset windows-debug
|
||||
ctest --preset windows-debug -R "DeckToDomain|ActiveInstance" --output-on-failure
|
||||
ctest --preset windows-debug --output-on-failure
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. public parser와 mapper를 사용하는 실패 테스트를 확인한다.
|
||||
2. syntax record를 복제해 Domain에 저장하지 않고 semantic 값으로 변환한다.
|
||||
3. unreferenced Part exclusion과 provenance를 assertion한다.
|
||||
4. focused/full test 후 index summary를 갱신한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- 여러 Instance를 평탄화하지 마라. 이유: Phase 1 범위 밖이다.
|
||||
- 변환 좌표를 조용히 무시하지 마라. 이유: 잘못된 해석 모델을 만든다.
|
||||
- 테스트에서 Domain을 직접 구성하지 마라. 이유: production 경로를 우회한다.
|
||||
Reference in New Issue
Block a user