72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# Step 12: assembly-reaction-recovery
|
|
|
|
## Sprint Contract
|
|
|
|
### Objective
|
|
Implement assembly of element stiffness/load contributions into full and reduced system data while preserving full-space data for reactions.
|
|
|
|
### Required Reading
|
|
- /AGENTS.md
|
|
- /PROGRESS.md
|
|
- /PLAN.md
|
|
- /docs/README.md
|
|
- /docs/HARNESS_ENGINEERING.md
|
|
- /docs/ARCHITECTURE.md
|
|
- /docs/ADR.md
|
|
- /docs/NUMERICAL_CONVENTIONS.md
|
|
- /docs/RESULTS_SCHEMA.md
|
|
- /phases/1-linear-static-mitc4/step6.md
|
|
- /phases/1-linear-static-mitc4/step7.md
|
|
- /phases/1-linear-static-mitc4/step11.md
|
|
|
|
### Scope
|
|
- Assemble global stiffness and load data from active elements and nodal loads.
|
|
- Create reduced free-DOF systems using `DofManager` mappings.
|
|
- Preserve or reconstruct full-space `K_full`, `F_full`, and `U_full` data needed for `RF = K_full * U_full - F_full`.
|
|
- Add assembly diagnostics for missing contributions and singular-prone untouched DOFs where detectable.
|
|
|
|
### Allowed Files
|
|
- `include/**`
|
|
- `src/**`
|
|
- `tests/**`
|
|
- `PLAN.md`
|
|
- `PROGRESS.md`
|
|
- `phases/1-linear-static-mitc4/index.json`
|
|
|
|
### Explicit Non-Goals
|
|
- Do not implement the full `LinearStaticAnalysis` orchestration here.
|
|
- Do not compute reactions from reduced quantities only.
|
|
- Do not add pressure loads, nonzero prescribed displacement, or nonlinear residual assembly.
|
|
|
|
### Tests To Write First
|
|
- Assembly tests for simple element/load contributions into full and reduced matrices/vectors.
|
|
- Constrained elimination tests using known DOF mappings.
|
|
- Full-vector reaction recovery tests using `RF = K_full * U_full - F_full`.
|
|
- Missing contribution or untouched free DOF diagnostic tests.
|
|
|
|
### Reference Artifacts
|
|
- None required. RF reference CSV is not available; use internal equilibrium/reaction tests for this step.
|
|
|
|
### Acceptance Commands
|
|
```bash
|
|
python scripts/validate_workspace.py
|
|
```
|
|
|
|
### Evaluator Checklist
|
|
- Full-space reaction data is preserved.
|
|
- Reduced system assembly matches constrained/free DOF mapping.
|
|
- Reaction tests use full vectors and the documented sign convention.
|
|
- Unsupported loads and nonlinear behavior are not introduced.
|
|
|
|
### Handoff Requirements
|
|
- Record assembly and RF recovery behavior in `PROGRESS.md`.
|
|
- Update `PLAN.md` if R-010 remains unresolved or becomes resolved.
|
|
- 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 reaction tests for full-vector recovery.
|
|
|
|
## Do Not
|
|
- Do not allow reduced-system convenience to overwrite the documented RF convention.
|