Files
FESADev/phases/1-linear-static-mitc4/step2.md
T
2026-05-01 02:40:19 +09:00

70 lines
2.4 KiB
Markdown

# Step 2: domain-model
## Sprint Contract
### Objective
Implement immutable-ish Domain entities for Phase 1 input data: nodes, elements, sets, materials, shell sections, loads, boundaries, and steps.
### Required Reading
- /AGENTS.md
- /PROGRESS.md
- /PLAN.md
- /docs/README.md
- /docs/HARNESS_ENGINEERING.md
- /docs/PRD.md
- /docs/ARCHITECTURE.md
- /docs/ADR.md
- /docs/NUMERICAL_CONVENTIONS.md
- /docs/ABAQUS_INPUT_SUBSET.md
- /phases/1-linear-static-mitc4/step1.md
### Scope
- Add Domain-level value objects and containers preserving input ids and labels.
- Support Phase 1 shell elements as Abaqus `TYPE=S4` mapped to FESA MITC4.
- Represent node sets, element sets, linear elastic materials, shell sections, fixed boundary conditions, nodal loads, and linear static steps.
- Provide lookup APIs and duplicate-id diagnostics without storing equation ids in entities.
### Allowed Files
- `include/**`
- `src/**`
- `tests/**`
- `PLAN.md`
- `PROGRESS.md`
- `phases/1-linear-static-mitc4/index.json`
### Explicit Non-Goals
- Do not parse Abaqus files in this step.
- Do not create `AnalysisModel`, `AnalysisState`, or `DofManager`.
- Do not add support for S4R, pressure loads, nonzero prescribed displacement, Part/Assembly/Instance, dynamics, nonlinear steps, or thermal coupling.
### Tests To Write First
- Domain construction tests for nodes, elements, sets, materials, shell sections, loads, boundaries, and steps.
- Duplicate id/name tests with diagnostics.
- Lookup tests proving labels and ids are preserved.
### Reference Artifacts
- None.
### Acceptance Commands
```bash
python scripts/validate_workspace.py
```
### Evaluator Checklist
- Domain preserves model definition and is treated as immutable after construction.
- Node and element objects do not own global equation numbers.
- Phase 1 object set matches `docs/ABAQUS_INPUT_SUBSET.md`.
- Tests cover duplicate and missing lookup behavior.
### Handoff Requirements
- Record changed files and validation in `PROGRESS.md`.
- Update future tasks in `PLAN.md` only if Domain scope changes.
- Update the matching phase index entry: use `completed` with a one-line `summary`, or `blocked` with `blocked_reason`, or `error` with `error_message`.
## Verification
1. Run the acceptance command.
2. Inspect Domain APIs for architecture-boundary drift.
## Do Not
- Do not make Domain depend on solver adapters, analysis strategies, or result writers.