add uncommitted files
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# Step 0: Semantic Domain and Origin Types
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/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/core/entity_id.hpp`
|
||||
- `/include/fesa/core/vec3.hpp`
|
||||
- `/include/fesa/core/diagnostic.hpp`
|
||||
|
||||
## 작업
|
||||
|
||||
정규화된 solver semantic model의 값 타입과 불변 조회 계약을 만든다.
|
||||
|
||||
- `include/fesa/model/` 아래 `ids.hpp`, `entity_origin.hpp`, `node.hpp`,
|
||||
`material.hpp`, `beam_section.hpp`, `beam_element.hpp`, `entity_set.hpp`,
|
||||
`step_definition.hpp`, `domain.hpp`를 만든다.
|
||||
- 핵심 타입:
|
||||
|
||||
```cpp
|
||||
struct EntityOrigin final {
|
||||
std::string part_name;
|
||||
std::string instance_name;
|
||||
std::int64_t local_label;
|
||||
};
|
||||
struct Node final { NodeId id; EntityOrigin origin; Vec3 position; };
|
||||
struct BeamElement final {
|
||||
ElementId id;
|
||||
EntityOrigin origin;
|
||||
std::array<NodeId, 2> nodes;
|
||||
MaterialId material;
|
||||
SectionId section;
|
||||
};
|
||||
```
|
||||
|
||||
- `BeamSection`은 \(A,I_y,I_z,J,A_{sy},A_{sz}\), orientation과 recovery point를
|
||||
가진다. 전단값 출처는 `enum class ShearPropertySource { input, phase1_default };`
|
||||
로 표현한다.
|
||||
- flat mesh는 빈 `part_name/instance_name`, 계층형 mesh는 실제 이름을 사용한다.
|
||||
- 먼저 값 보존과 origin 조회가 실패하는 테스트를 작성한다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
cmake --build --preset windows-debug
|
||||
ctest --preset windows-debug -R "ModelTypes|EntityOrigin" --output-on-failure
|
||||
ctest --preset windows-debug --output-on-failure
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. 테스트를 먼저 작성하고 compile failure를 확인한다.
|
||||
2. 저장과 읽기에 필요한 최소 API만 구현한다.
|
||||
3. `model` public header에 Abaqus/MKL/TBB/HDF5 타입이 없는지 확인한다.
|
||||
4. focused 및 전체 테스트를 실행하고 index를 갱신한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- parser record를 `Domain`에 저장하지 마라. 이유: syntax/semantic 경계를 깨뜨린다.
|
||||
- 여러 Instance container를 만들지 마라. 이유: Phase 1은 단일 Instance다.
|
||||
- equation 번호를 Node/Element에 저장하지 마라. 이유: DofManager 책임이다.
|
||||
Reference in New Issue
Block a user