docs: add linear static beam harness phase
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# Step 4: I/O Contract
|
||||
|
||||
## 담당 역할과 필수 스킬
|
||||
|
||||
- 담당 역할: `io-definition-agent`
|
||||
- 필수 스킬: `fesa-io-contract`
|
||||
- 스킬을 끝까지 읽고 semantic contract만 정의하라. C++ API는 다음 gate가 담당한다.
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/SOLVER_AGENT_DESIGN.md`
|
||||
- `/docs/io-definitions/README.md`
|
||||
- `/docs/requirements/linear-static-3d-euler-beam.md`
|
||||
- `/docs/formulations/3d-isoparametric-euler-beam-formulation.md`
|
||||
- `/docs/numerical-reviews/linear-static-3d-euler-beam-review.md`
|
||||
- `/docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
|
||||
- `/reference/cantilever beam/cantilever beam.inp`
|
||||
- `/reference/cantilever beam/cantilever beam displacements.csv`
|
||||
- `/reference/cantilever beam/cantilever beam reactions.csv`
|
||||
- `/reference/cantilever beam/cantilever beam elemental forces.csv`
|
||||
|
||||
## 작업
|
||||
|
||||
`docs/io-definitions/linear-static-3d-euler-beam-io.md`를 생성하라. Metadata status는
|
||||
`ready-for-implementation-planning`으로 둔다.
|
||||
|
||||
- 지원 keyword별 위치, parameter, data grammar, case policy, source-location 보존,
|
||||
duplicate/dangling reference validation을 표로 정의한다.
|
||||
- `*PART/*ASSEMBLY/*INSTANCE` nesting grammar, 여러 identity instance, stable
|
||||
`SourceEntityId`, assembly set의 `INSTANCE` parameter를 정의한다.
|
||||
- B33 acceptance, B31 rejection, transform/nested assembly/multiple-step rejection code를
|
||||
포함한다.
|
||||
- `*STEP`의 `NLGEOM`은 absent 또는 `NO`만 허용하고 `YES`는 거부한다. `*STATIC`의 승인
|
||||
legacy data `initial increment, time period, minimum increment, maximum increment` 네 값을
|
||||
accept하되 V0 결과 identity는 `(Step-1, frame 0)`으로 고정한다.
|
||||
- `*BOUNDARY target, first_dof, last_dof[, value]`와
|
||||
`*CLOAD target, dof, magnitude`, DOF 1..6 의미를 정확히 정의한다.
|
||||
- General section의 `A,I11,I12,I22,J`, material `E,nu`, `G`, guide vector/geometry
|
||||
validation과 local axis mapping을 정의한다.
|
||||
- `*PREPRINT`, `*RESTART`, `*TRANSVERSE SHEAR STIFFNESS`, `*OUTPUT, FIELD`,
|
||||
`*OUTPUT, HISTORY`, `*NODE OUTPUT`, `*ELEMENT OUTPUT`, `*CONTACT OUTPUT` 및 그 output
|
||||
variable data의 warning no-op allowlist와 unknown model-affecting keyword error를 분리한다.
|
||||
- HDF5 schema v0의 exact dataset path, shape, row identity, component order, units label,
|
||||
metadata, diagnostics, atomic finalization을 정의한다.
|
||||
- legacy CSV header의 `U-U1/U-U2/U-U3`, `UR-UR1/UR-UR2/UR-UR3`,
|
||||
`RF-RF1/RF-RF2/RF-RF3`, `RM-RM1/RM-RM2/RM-RM3`, `SF-SF1`,
|
||||
`SM-SM1/SM-SM2/SM-SM3`을 canonical component로 바꾸는 규칙과
|
||||
frame/instance/node-station normalization 및
|
||||
`SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`, interior endpoint consistency를 정의한다.
|
||||
- 일반 end-action/section mapping은 `SF1->FX/N`, `SF3->FY`, `SF2->FZ`,
|
||||
`SM3->MX/T`, `SM1->MY`, `SM2->MZ`로 정의한다. 승인 legacy comparison에는 CSV에
|
||||
존재하는 `SF1/SM1/SM2/SM3`만 사용하고 `SF2/SF3`를 reference row로 만들어내지 않는다.
|
||||
- component-scale tolerance와 missing/extra/nonfinite precheck를 정의한다.
|
||||
- CLI syntax와 exit code `0,2,3,4,5,6`을 포함한다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
$path = 'docs/io-definitions/linear-static-3d-euler-beam-io.md'
|
||||
if (-not (Test-Path $path)) { throw "Missing $path" }
|
||||
$required = @(
|
||||
'status: `ready-for-implementation-planning`',
|
||||
'## Abaqus Input Scope',
|
||||
'## Syntax Policy',
|
||||
'## Model Data Mapping',
|
||||
'## Output HDF5 Schema',
|
||||
'## FESA HDF5 to Reference CSV Comparison Schema',
|
||||
'*OUTPUT, FIELD',
|
||||
'SF1',
|
||||
'/steps/<step-name>/frames/0/nodal/displacement',
|
||||
'absolute_floor + 1e-6 * reference_scale'
|
||||
)
|
||||
foreach ($text in $required) {
|
||||
if (-not (Select-String -LiteralPath $path -SimpleMatch $text -Quiet)) {
|
||||
throw "Missing I/O contract: $text"
|
||||
}
|
||||
}
|
||||
git diff --check -- $path
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. Acceptance Criteria 명령을 실행한다.
|
||||
2. 지원 keyword마다 purpose, required data, unsupported behavior가 있는지 확인한다.
|
||||
3. HDF5 dataset과 reference CSV component/identity가 양방향으로 추적되는지 확인한다.
|
||||
4. Step 4를 `completed`와 schema summary로 갱신한다. upstream 충돌은 `blocked`, 반복
|
||||
생성 실패는 `error`로 기록한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- parser나 HDF5 writer를 구현하지 마라. 이유: 이 step은 I/O 계약만 소유한다.
|
||||
- full Abaqus compatibility를 주장하지 마라. 이유: 승인 subset만 지원한다.
|
||||
- output request가 FESA 기본 output을 끄도록 정의하지 마라. 이유: 승인 의미와 반대다.
|
||||
- reference CSV를 rewrite하거나 tolerance를 변경하지 마라. 이유: 승인 baseline이다.
|
||||
- 직접 commit하지 마라. 이유: Harness executor가 담당한다.
|
||||
Reference in New Issue
Block a user