modify docu
This commit is contained in:
+3
-3
@@ -33,12 +33,12 @@ FESA의 architecture decision은 solver correctness, verification traceability,
|
||||
|
||||
**트레이드오프**: 초기 class 수가 늘어난다. Phase 1에서는 interface를 얇게 유지하고 displacement 중심 state부터 구현한다.
|
||||
|
||||
### ADR-005: 공식 결과 파일은 HDF5로 하고 CSV는 비교 view로 제한한다
|
||||
**결정**: FESA solver의 authoritative result output은 HDF5이다. CSV는 reference comparison을 위한 deterministic view 또는 임시 검증 artifact로만 사용한다.
|
||||
### ADR-005: 공식 결과 파일은 HDF5로 하고 reference 결과는 Abaqus CSV로 둔다
|
||||
**결정**: FESA solver의 authoritative result output은 `results.h5` HDF5이다. Abaqus reference results는 `reference/<model-id>/` 아래 CSV 파일로 저장하며, verification은 FESA HDF5 rows와 Abaqus reference CSV rows를 documented IDs, components, units, coordinate system, step/frame identity, tolerance 기준으로 비교한다.
|
||||
|
||||
**이유**: 구조해석 결과는 step/frame, field/history, node/element/integration point location, units, coordinate system, schema version을 함께 가져야 한다. HDF5는 이 계층 구조와 metadata를 안정적으로 표현한다.
|
||||
|
||||
**트레이드오프**: reference comparison은 HDF5 dataset identity와 deterministic CSV view identity를 모두 관리해야 한다. CSV-only bundle은 transition artifact로만 허용하고, 기본 ready 상태는 `results.h5`/`reference.h5`와 `csv/` view 계약을 모두 만족해야 한다.
|
||||
**트레이드오프**: reference comparison은 FESA HDF5 dataset identity와 Abaqus CSV row identity를 모두 관리해야 한다. FESA HDF5에서 추출한 deterministic CSV view는 디버깅/검토용 보조 artifact로 허용하지만, 공식 solver output이나 reference artifact로 취급하지 않는다.
|
||||
|
||||
### ADR-006: 해석 알고리즘과 수치 backend는 Strategy와 Adapter 경계 뒤에 둔다
|
||||
**결정**: `Analysis`, `LinearSolver`, `TimeIntegrator`, `ConvergenceCriteria`는 Strategy로 구성하고, MKL, TBB, HDF5 API는 adapter 계층 뒤에 둔다.
|
||||
|
||||
+13
-11
@@ -35,14 +35,14 @@ tests/
|
||||
unit/
|
||||
integration/
|
||||
reference/
|
||||
references/
|
||||
<feature-id>/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
reference.h5
|
||||
csv/
|
||||
deterministic comparison views
|
||||
reference/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
<model-id>_displacements.csv
|
||||
<model-id>_reactions.csv
|
||||
<model-id>_internalforces.csv
|
||||
<model-id>_stresses.csv
|
||||
.codex/
|
||||
hooks/ # Codex hook scripts
|
||||
skills/ # FESA solver and Harness instructions
|
||||
@@ -227,13 +227,15 @@ Schema requirements:
|
||||
- schema version, units, coordinate system, solver version, source input identity를 metadata에 기록한다.
|
||||
- field output과 history output을 구분한다.
|
||||
- reference comparison을 위한 row identity는 node id, element id, integration point id, step/frame id를 포함한다.
|
||||
- HDF5가 authoritative output이며 CSV는 optional deterministic comparison view이다.
|
||||
- Solver output은 `results.h5`, stored reference output은 `reference.h5`, CSV view는 `csv/*.csv` 경로를 기본으로 한다.
|
||||
- FESA solver는 `results.h5`를 authoritative output으로 쓴다.
|
||||
- Abaqus reference results는 `reference/<model-id>/` 아래 CSV 파일이다.
|
||||
- Verification은 documented IDs, components, units, coordinate system, step/frame identity, tolerance 기준으로 FESA HDF5 rows와 Abaqus reference CSV rows를 비교한다.
|
||||
- FESA HDF5에서 추출한 deterministic CSV view는 optional debugging/review artifact이며 공식 solver output 또는 reference artifact가 아니다.
|
||||
|
||||
## Test Architecture
|
||||
- unit: parser, DOF map, shape functions, material law, sparse assembly, HDF5 schema
|
||||
- integration: small `.inp` to HDF5 end-to-end
|
||||
- reference: stored Abaqus artifact comparison
|
||||
- reference: FESA `results.h5` rows and Abaqus reference CSV rows comparison
|
||||
- physics: equilibrium, sign, symmetry, rigid body mode, stress sanity
|
||||
- harness: hooks, phase executor, workspace validation
|
||||
|
||||
|
||||
+8
-8
@@ -1,7 +1,7 @@
|
||||
# PRD: FESA 구조해석 솔버
|
||||
|
||||
## 목표
|
||||
FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 유한요소법 기반 구조해석을 수행하고, step/frame 단위 결과를 HDF5로 저장하며, 저장된 reference artifact와 비교 가능한 C++17/MSVC 솔버를 제공한다.
|
||||
FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 유한요소법 기반 구조해석을 수행하고, step/frame 단위 결과를 `results.h5` HDF5로 저장하며, Abaqus reference CSV rows와 비교 가능한 C++17/MSVC 솔버를 제공한다.
|
||||
|
||||
이 프로젝트의 성공 기준은 단순 실행 성공이 아니다. 기능은 요구조건, 정식화, I/O 계약, C++ 테스트, reference comparison, physics sanity, release readiness를 모두 통과해야 완료된다.
|
||||
|
||||
@@ -19,7 +19,7 @@ FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 유한요소법 기
|
||||
5. sparse matrix pattern 생성, 전역 행렬/벡터 조립, 제약조건 적용
|
||||
6. `LinearSolver` adapter를 통한 MKL PARDISO backend와 향후 iterative solver 확장
|
||||
7. HDF5 기반 `ResultStep` -> `ResultFrame` -> `FieldOutput`/`HistoryOutput` 저장
|
||||
8. HDF5 authoritative output에서 deterministic CSV comparison view 추출 또는 직접 비교
|
||||
8. FESA HDF5 rows와 `reference/<model-id>/` 아래 Abaqus reference CSV rows의 직접 비교
|
||||
9. CMake/MSVC/x64/Debug, CTest, Harness validation, TDD guard 기반 개발 검증
|
||||
|
||||
## V0 범위
|
||||
@@ -41,7 +41,7 @@ FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 유한요소법 기
|
||||
- output request subset
|
||||
- displacement 중심의 최소 `AnalysisState`
|
||||
- HDF5 result schema v0
|
||||
- reference comparison용 CSV view 또는 HDF5 직접 비교 계약
|
||||
- FESA HDF5 to Abaqus reference CSV comparison 계약
|
||||
|
||||
## V1 범위
|
||||
- 2D plane stress/plane strain element
|
||||
@@ -59,8 +59,8 @@ FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 유한요소법 기
|
||||
| FESA-PRD-003 | FESA는 현재 step의 실행 view를 `AnalysisModel`로 구성해야 한다. | active elements, loads, boundary conditions, properties/materials가 Domain 복사 없이 참조 또는 id view로 연결된다. | analysis model unit test |
|
||||
| FESA-PRD-004 | FESA는 equation numbering과 constraint/free mapping을 `DofManager`에 집중해야 한다. | Node/Element 내부에 equation id를 분산 저장하지 않는다. | code review, DofManager unit test |
|
||||
| FESA-PRD-005 | FESA는 해석 중 변하는 물리량을 `AnalysisState`에 저장해야 한다. | displacement, force, residual, increment/iteration 상태가 step/frame 출력과 연결된다. | state unit test, integration test |
|
||||
| FESA-PRD-006 | FESA는 solver 결과를 HDF5 authoritative output으로 저장해야 한다. | step/frame, field/history, metadata, diagnostics가 schema version과 함께 저장된다. | HDF5 schema test |
|
||||
| FESA-PRD-007 | FESA는 reference artifact와 비교 가능한 deterministic result view를 제공해야 한다. | displacement, reaction, element force, stress 등 검증 물리량의 row identity와 tolerance source가 명확하다. | reference comparison report |
|
||||
| FESA-PRD-006 | FESA는 solver 결과를 HDF5 authoritative output `results.h5`로 저장해야 한다. | step/frame, field/history, metadata, diagnostics가 schema version과 함께 저장된다. | HDF5 schema test |
|
||||
| FESA-PRD-007 | FESA는 Abaqus reference CSV rows와 비교 가능한 deterministic row mapping을 제공해야 한다. | displacement, reaction, internal force, stress 등 검증 물리량의 row identity와 tolerance source가 명확하다. | reference comparison report |
|
||||
| FESA-PRD-008 | FESA의 production C++ 변경은 테스트를 먼저 작성하고 실패를 확인한 뒤 구현해야 한다. | 관련 C++ test file이 있고 Harness TDD guard를 통과한다. | hook test, CTest |
|
||||
| FESA-PRD-009 | FESA는 외부 라이브러리 API를 solver core에 직접 노출하지 않아야 한다. | MKL, TBB, HDF5 의존은 adapter module에 제한된다. | architecture review, dependency review |
|
||||
| FESA-PRD-010 | FESA 기능 완료는 reference comparison과 physics sanity 통과를 요구해야 한다. | 수치 tolerance와 물리 검토가 모두 pass이고 known limitation이 기록된다. | verification report, physics evaluation report |
|
||||
@@ -78,17 +78,17 @@ FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 유한요소법 기
|
||||
1. Requirements approved: 기능 범위, 제외 범위, 입력, 출력, tolerance, 검증 물리량이 정의되어 있다.
|
||||
2. Research evidence complete: 정식화와 benchmark 근거가 신뢰도와 한계와 함께 정리되어 있다.
|
||||
3. Formulation reviewed: 약형, shape function, B matrix, constitutive contract, 수치적분, output recovery가 검토되어 있다.
|
||||
4. I/O contract approved: Abaqus keyword subset, internal model mapping, HDF5/CSV result contract가 승인되어 있다.
|
||||
4. I/O contract approved: Abaqus keyword subset, internal model mapping, HDF5 result contract, reference CSV comparison row contract가 승인되어 있다.
|
||||
5. Tests fail before implementation: 구현 전 실패해야 하는 C++/integration/reference test가 준비되어 있다.
|
||||
6. CMake/CTest pass: MSVC/x64/Debug 기준 configure, build, test가 통과한다.
|
||||
7. Reference comparison pass: 저장된 reference artifact와 구현 결과가 tolerance 안에 있다.
|
||||
7. Reference comparison pass: FESA `results.h5` rows와 Abaqus reference CSV rows가 documented IDs, components, units, coordinate system, step/frame identity, tolerance 기준 안에 있다.
|
||||
8. Physics sanity pass: equilibrium, reaction consistency, displacement direction, symmetry, stress sanity가 검토되어 있다.
|
||||
9. Release readiness pass: acceptance traceability, known limitations, release notes draft가 준비되어 있다.
|
||||
|
||||
## 제외 사항
|
||||
- Abaqus full parser 호환
|
||||
- Abaqus, Nastran 또는 reference solver 직접 실행 자동화
|
||||
- Agent가 reference HDF5 artifact 또는 deterministic CSV view를 임의 생성 또는 수정하는 작업
|
||||
- Agent가 Abaqus reference CSV 파일을 임의 생성 또는 수정하는 작업
|
||||
- GUI 또는 postprocessor
|
||||
- Visual Studio `.sln`/`.vcxproj` 전용 MSBuild workflow
|
||||
- Explicit dynamics, contact, plasticity, shell end-to-end 구현
|
||||
|
||||
@@ -100,14 +100,14 @@ tests/
|
||||
unit/
|
||||
integration/
|
||||
reference/
|
||||
references/
|
||||
<feature-id>/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
reference.h5
|
||||
csv/
|
||||
deterministic comparison views
|
||||
reference/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
<model-id>_displacements.csv
|
||||
<model-id>_reactions.csv
|
||||
<model-id>_internalforces.csv
|
||||
<model-id>_stresses.csv
|
||||
```
|
||||
|
||||
### 모듈 경계 원칙
|
||||
@@ -490,14 +490,17 @@ Abaqus input file
|
||||
| 물리 검토 | `physics-evaluation-agent` | `fesa-physics-sanity` | `docs/physics-evaluations/<feature-id>-physics-evaluation.md` |
|
||||
| 배포 준비 | `release-agent` | `fesa-release-readiness` | `docs/releases/<feature-id>-release.md` |
|
||||
|
||||
## HDF5와 deterministic CSV view 정합성 결정
|
||||
프로젝트 문서와 skill의 reference comparison 경로는 HDF5 authoritative output과 deterministic CSV view 구조를 기준으로 정리한다.
|
||||
## HDF5 결과와 Abaqus reference CSV 비교 결정
|
||||
|
||||
FESA solver의 공식 해석 결과는 `results.h5` HDF5 파일이다. Reference 결과는 동일한 Abaqus `.inp` 모델을 Abaqus에서 해석해 추출한 CSV 파일이며, `reference/<model-id>/` 아래에 물리량별 파일로 저장한다.
|
||||
|
||||
Reference comparison은 FESA HDF5 dataset을 deterministic row record로 읽어 `reference/<model-id>/<model-id>_displacements.csv`, `<model-id>_reactions.csv`, `<model-id>_internalforces.csv`, `<model-id>_stresses.csv`와 직접 비교한다.
|
||||
|
||||
결정:
|
||||
- FESA solver의 정식 결과 파일은 HDF5로 한다.
|
||||
- solver output은 `results.h5`, stored reference output은 `reference.h5`를 authoritative artifact로 둔다.
|
||||
- reference comparison을 위해 HDF5 dataset에서 `csv/displacements.csv`, `csv/reactions.csv`, `csv/element_forces.csv`, `csv/stresses.csv` 같은 deterministic CSV view를 추출할 수 있다.
|
||||
- CSV view는 row identity와 사람이 검토 가능한 비교 view일 뿐이며 authoritative storage가 아니다.
|
||||
- FESA solver writes `results.h5`.
|
||||
- Abaqus reference results are CSV files under `reference/<model-id>/`.
|
||||
- Verification compares FESA HDF5 rows with Abaqus reference CSV rows using documented IDs, components, units, coordinate system, step/frame identity, and tolerance.
|
||||
- FESA HDF5에서 추출한 deterministic CSV view는 비교 디버깅/검토용 보조 artifact이며 공식 solver output 또는 reference artifact가 아니다.
|
||||
- `fesa-reference-comparison`, `fesa-io-contract`, `fesa-reference-models`, 관련 agent 문서는 이 구조를 기준으로 유지한다.
|
||||
|
||||
## 주요 리스크와 열린 질문
|
||||
|
||||
+17
-19
@@ -9,7 +9,7 @@
|
||||
- 기능 요구조건, 이론 정식화, 코드 구현, 검증, 배포 역할을 분리한다.
|
||||
- 실행 가능성만으로 성공을 판단하지 않고, 레퍼런스 결과와 물리량을 비교해 기능 완료를 판정한다.
|
||||
- 테스트는 구현 전에 준비한다. 개발 대상 솔버 테스트와 레퍼런스 솔버 결과 비교 테스트를 함께 사용한다.
|
||||
- Abaqus나 Nastran을 Agent가 직접 실행하지 않는다. `references/`에 저장된 입력 파일, `reference.h5`, deterministic CSV views를 검증 기준으로 사용한다.
|
||||
- Abaqus나 Nastran을 Agent가 직접 실행하지 않는다. `reference/<model-id>/`에 저장된 `model.inp`, `metadata.json`, Abaqus reference CSV files를 검증 기준으로 사용한다.
|
||||
- 기본 개발 환경은 C++17 이상, MSVC, CMake, CTest이다.
|
||||
- 모든 기능은 tolerance 기준을 명시하고, 기준을 만족할 때만 배포 후보가 된다.
|
||||
|
||||
@@ -98,9 +98,9 @@
|
||||
|
||||
책임:
|
||||
- mesh, node, element, material, section, boundary condition, load, step 입력 형식을 정의한다.
|
||||
- authoritative HDF5 result schema와 deterministic CSV view schema를 정의한다.
|
||||
- authoritative HDF5 result schema와 reference CSV comparison row schema를 정의한다.
|
||||
- Abaqus input file과 내부 입력 모델 사이의 대응 관계를 정리한다.
|
||||
- 결과 비교를 위해 reference HDF5 dataset, solver HDF5 dataset, deterministic CSV view의 ID/컴포넌트 규약을 맞춘다.
|
||||
- 결과 비교를 위해 FESA HDF5 dataset과 Abaqus reference CSV row의 ID/컴포넌트 규약을 맞춘다.
|
||||
|
||||
주요 산출물:
|
||||
- 입력 데이터 schema
|
||||
@@ -114,27 +114,25 @@ TDD와 검증에 사용할 테스트 모델을 준비하는 Agent이다.
|
||||
|
||||
책임:
|
||||
- 개발 대상 기능을 검증할 최소 모델, benchmark 모델, 회귀 모델을 설계한다.
|
||||
- `references/`에 보관할 Abaqus input file, `reference.h5`, deterministic CSV view 요구사항을 정의한다.
|
||||
- `reference/<model-id>/`에 보관할 Abaqus input file, metadata, Abaqus reference CSV 요구사항을 정의한다.
|
||||
- 레퍼런스 결과에 포함될 물리량과 tolerance를 명시한다.
|
||||
- 테스트 모델이 요구조건을 실제로 검증하는지 확인한다.
|
||||
|
||||
중요 제약:
|
||||
- Agent는 Abaqus를 직접 실행하지 않는다.
|
||||
- Abaqus 해석 결과는 사람이 생성하거나 별도 승인된 절차로 생성해 `references/`에 저장한다.
|
||||
- Abaqus 해석 결과 CSV는 사람이 생성하거나 별도 승인된 절차로 생성해 `reference/<model-id>/`에 저장한다.
|
||||
- Agent는 저장된 reference artifact만 사용해 비교한다.
|
||||
|
||||
권장 reference 구조:
|
||||
```text
|
||||
references/
|
||||
<feature-name>/
|
||||
reference/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
reference.h5
|
||||
csv/
|
||||
displacements.csv
|
||||
reactions.csv
|
||||
element_forces.csv
|
||||
stresses.csv
|
||||
<model-id>_displacements.csv
|
||||
<model-id>_reactions.csv
|
||||
<model-id>_internalforces.csv
|
||||
<model-id>_stresses.csv
|
||||
```
|
||||
|
||||
### Implementation Planning Agent
|
||||
@@ -203,7 +201,7 @@ python scripts/validate_workspace.py
|
||||
구현 솔버 결과와 저장된 레퍼런스 결과를 비교하는 Agent이다.
|
||||
|
||||
책임:
|
||||
- 구현 솔버 `results.h5`와 `references/`의 `reference.h5`를 비교하고, deterministic CSV views를 row identity 검토와 report evidence로 사용한다.
|
||||
- 구현 솔버 `results.h5`의 rows와 `reference/<model-id>/`의 Abaqus reference CSV rows를 비교하고, FESA debug CSV views는 row identity 검토와 report evidence로만 사용한다.
|
||||
- 절점 변위, 반력, 요소 내력, 응력의 tolerance 만족 여부를 평가한다.
|
||||
- absolute tolerance, relative tolerance, norm-based tolerance를 구분해 적용한다.
|
||||
- 결과 차이가 tolerance 밖이면 원인 후보를 분류한다.
|
||||
@@ -296,7 +294,7 @@ flowchart TD
|
||||
### Gate 3: 테스트 준비 승인
|
||||
통과 조건:
|
||||
- 구현 전 실패해야 하는 테스트가 정의되어 있다.
|
||||
- `references/` artifact 요구사항이 명확하다.
|
||||
- `reference/<model-id>/` artifact 요구사항이 명확하다.
|
||||
- 최소 모델, benchmark 모델, 회귀 모델의 목적이 구분되어 있다.
|
||||
|
||||
### Gate 4: 구현 검증
|
||||
@@ -307,7 +305,7 @@ flowchart TD
|
||||
|
||||
### Gate 5: 레퍼런스 검증
|
||||
통과 조건:
|
||||
- 저장된 reference HDF5 결과와 구현 solver HDF5 결과가 tolerance 안에 있다.
|
||||
- Abaqus reference CSV 결과와 구현 solver HDF5 결과가 tolerance 안에 있다.
|
||||
- 절점 변위, 반력, 요소 내력, 응력 비교 결과가 리포트로 남아 있다.
|
||||
- 실패한 물리량이 없거나 승인된 known limitation으로 기록되어 있다.
|
||||
|
||||
@@ -317,11 +315,11 @@ flowchart TD
|
||||
- 문서와 release note가 준비되어 있다.
|
||||
- 남은 제한사항이 명확히 기록되어 있다.
|
||||
|
||||
## Reference HDF5 / CSV View 비교 기준
|
||||
## FESA HDF5 / Abaqus Reference CSV 비교 기준
|
||||
|
||||
권장 비교 방식:
|
||||
- authoritative 비교는 `results.h5`와 `reference.h5`의 dataset 기준으로 수행한다.
|
||||
- CSV는 HDF5 dataset에서 추출한 deterministic view로만 사용한다.
|
||||
- authoritative 비교는 FESA `results.h5` rows와 Abaqus reference CSV rows 기준으로 수행한다.
|
||||
- FESA HDF5에서 추출한 deterministic CSV view는 debugging/review 보조 artifact로만 사용한다.
|
||||
- scalar 값: absolute tolerance와 relative tolerance를 함께 적용한다.
|
||||
- vector 값: component-wise 비교와 norm 비교를 함께 기록한다.
|
||||
- stress tensor: component-wise 비교를 기본으로 하고, 필요한 경우 principal stress 또는 von Mises stress를 추가 비교한다.
|
||||
|
||||
+10
-10
@@ -13,7 +13,7 @@ Agent는 역할과 책임 단위이고, skill은 여러 Agent가 반복적으로
|
||||
- Skill 본문은 agent TOML의 역할 설명을 반복하지 않고, 입력, 절차, 산출물, 금지사항, 품질 gate, handoff를 정의한다.
|
||||
- Skill은 `AGENTS.md`와 `docs/SOLVER_AGENT_DESIGN.md`를 공통 상위 기준으로 읽는다.
|
||||
- Abaqus, Nastran 또는 reference solver 실행은 skill 범위에 포함하지 않는다.
|
||||
- Reference HDF5 파일 또는 deterministic CSV view 생성/수정은 skill 범위에 포함하지 않는다.
|
||||
- Abaqus reference CSV 파일 생성/수정은 skill 범위에 포함하지 않는다.
|
||||
- C++ 구현 관련 skill은 C++17 이상, MSVC, CMake, CTest, TDD 원칙을 따른다.
|
||||
- 기본 workspace validation 명령은 `python scripts/validate_workspace.py`이다.
|
||||
|
||||
@@ -40,10 +40,10 @@ Agent는 역할과 책임 단위이고, skill은 여러 Agent가 반복적으로
|
||||
2. Research Agent는 `fesa-research-evidence`를 사용해 truss/bar element 이론, benchmark 후보, source reliability, applicability limits를 정리한다.
|
||||
3. Formulation Agent는 `fesa-formulation-spec`을 사용해 strong form, weak form, shape functions, B matrix, element stiffness, output recovery를 정리한다.
|
||||
4. Numerical Review Agent는 `fesa-numerical-review`를 사용해 rigid body modes, patch test, stiffness symmetry, Jacobian, locking 위험을 검토하고 `pass-for-implementation-planning` 여부를 판단한다.
|
||||
5. I/O Definition Agent는 `fesa-io-contract`를 사용해 지원할 Abaqus `.inp` keyword subset, `results.h5` schema, `csv/displacements.csv`, `csv/reactions.csv`, `csv/element_forces.csv`, `csv/stresses.csv` view schema를 정의한다.
|
||||
6. Reference Model Agent는 `fesa-reference-models`를 사용해 `references/linear-truss-1d/<model-id>/` artifact bundle 계약과 coverage matrix를 작성한다.
|
||||
5. I/O Definition Agent는 `fesa-io-contract`를 사용해 지원할 Abaqus `.inp` keyword subset, `results.h5` schema, reference CSV comparison row schema를 정의한다.
|
||||
6. Reference Model Agent는 `fesa-reference-models`를 사용해 `reference/<model-id>/` artifact bundle 계약과 coverage matrix를 작성한다.
|
||||
7. Implementation Planning Agent와 Implementation Agent는 `fesa-cpp-msvc-tdd`를 사용해 테스트 작성, 실패 확인, 최소 구현, CMake/CTest 등록, validation을 수행한다.
|
||||
8. Reference Verification Agent는 `fesa-reference-comparison`을 사용해 구현 solver `results.h5`와 저장된 `reference.h5`를 tolerance 기준으로 비교하고 deterministic CSV view를 검토한다.
|
||||
8. Reference Verification Agent는 `fesa-reference-comparison`을 사용해 구현 solver `results.h5` rows와 Abaqus reference CSV rows를 tolerance 기준으로 비교한다.
|
||||
9. Physics Evaluation Agent는 `fesa-physics-sanity`를 사용해 global equilibrium, reaction consistency, displacement direction, symmetry, model coverage를 검토한다.
|
||||
10. Release Agent는 `fesa-release-readiness`를 사용해 gate evidence, acceptance traceability, known limitations, release notes draft를 작성한다.
|
||||
|
||||
@@ -54,7 +54,7 @@ Agent는 역할과 책임 단위이고, skill은 여러 Agent가 반복적으로
|
||||
- 기능 요청을 검증 가능한 요구조건 baseline으로 만든다.
|
||||
- `shall` 문장과 `FESA-REQ-<FEATURE>-###` id를 사용한다.
|
||||
- 모든 `must` 요구조건은 verification method와 acceptance criteria를 가져야 한다.
|
||||
- FEM 정식화, C++ 구현, reference HDF5/CSV view 생성, release readiness 판단은 하지 않는다.
|
||||
- FEM 정식화, C++ 구현, Abaqus reference CSV 생성 또는 수정, release readiness 판단은 하지 않는다.
|
||||
|
||||
### `fesa-research-evidence`
|
||||
|
||||
@@ -81,15 +81,15 @@ Agent는 역할과 책임 단위이고, skill은 여러 Agent가 반복적으로
|
||||
|
||||
- FESA solver input이 지원할 Abaqus `.inp` subset을 정의한다.
|
||||
- model data와 history data를 구분한다.
|
||||
- 내부 semantic model 계약, HDF5 output schema, deterministic CSV view schema를 정의한다.
|
||||
- 내부 semantic model 계약, HDF5 output schema, reference CSV comparison row schema를 정의한다.
|
||||
- parser 구현이나 full Abaqus compatibility claim은 하지 않는다.
|
||||
|
||||
### `fesa-reference-models`
|
||||
|
||||
- smoke, analytical, patch test, benchmark, regression, negative/invalid-input 모델을 구분한다.
|
||||
- `references/<feature-id>/<model-id>/` artifact bundle 계약을 정의한다.
|
||||
- `model.inp`, `metadata.json`, `reference.h5`, `csv/displacements.csv`, `csv/reactions.csv`, `csv/element_forces.csv`, `csv/stresses.csv`를 기준 artifact로 둔다.
|
||||
- `reference.h5` 또는 required deterministic CSV view가 없으면 완료 상태가 아니라 `needs-reference-artifacts`로 둔다.
|
||||
- `reference/<model-id>/` artifact bundle 계약을 정의한다.
|
||||
- `model.inp`, `metadata.json`, `<model-id>_displacements.csv`, `<model-id>_reactions.csv`, `<model-id>_internalforces.csv`, `<model-id>_stresses.csv`를 기준 artifact로 둔다.
|
||||
- required Abaqus reference CSV가 없으면 완료 상태가 아니라 `needs-reference-artifacts`로 둔다.
|
||||
|
||||
### `fesa-cpp-msvc-tdd`
|
||||
|
||||
@@ -109,7 +109,7 @@ ctest -C Debug -R <feature-or-label>
|
||||
### `fesa-reference-comparison`
|
||||
|
||||
- `ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT` 순서로 수행한다.
|
||||
- `metadata.json`, `results.h5`, `reference.h5`, deterministic CSV views, schema version, units, coordinate system, step/frame identity, ID matching, output location, tolerance source를 확인한다.
|
||||
- `metadata.json`, `model.inp`, `results.h5`, Abaqus reference CSV files, schema version, units, coordinate system, step/frame identity, ID matching, output location, tolerance source를 확인한다.
|
||||
- max absolute error, max relative error, RMS error, norm error, missing rows, extra rows를 보고한다.
|
||||
- Reference pass는 physics validation이나 release readiness를 의미하지 않는다.
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Build/Test Executor Agent는 Implementation Agent 이후 독립적으로 C++/MSV
|
||||
- CMake files를 수정하지 않는다.
|
||||
- requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다.
|
||||
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- release readiness, reference tolerance success, physics validation success를 승인하지 않는다.
|
||||
- 최종 reference verification report를 작성하지 않는다.
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Coordinator Agent는 FESA solver 기능 개발의 전체 lifecycle에서 gate ev
|
||||
- requirements, formulations, I/O contracts, numerical review reports를 수정하지 않는다.
|
||||
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
|
||||
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- subagents를 자동 spawn하지 않는다.
|
||||
- release readiness를 독립적으로 승인하지 않는다.
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Correction Agent는 Build/Test Executor Agent, Reference Verification Agent, Phy
|
||||
- reference artifacts를 수정하지 않는다.
|
||||
- tolerance policies를 수정하지 않는다.
|
||||
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- release readiness, reference tolerance success, physics validation success를 승인하지 않는다.
|
||||
- 최종 reference verification report 또는 physics validation report를 작성하지 않는다.
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Formulation Agent는 구현 가능한 FEM 정식화 문서를 작성한다.
|
||||
- C++ 코드를 구현하지 않는다.
|
||||
- C++ API나 파일 구조를 설계하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- release readiness를 승인하지 않는다.
|
||||
- Numerical Review Agent 검토 전 정식화를 최종 승인하지 않는다.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
이 디렉터리는 Implementation Planning Agent가 작성하거나 제안한 기능별 구현계획 문서를 보관하는 위치다.
|
||||
|
||||
Implementation Planning Agent는 승인된 요구조건, 연구 브리프, 정식화, 수치 리뷰, I/O 정의, reference model 계약을 C++/MSVC 구현 전 TDD 작업계획으로 변환한다. Agent는 코드, 테스트, CMake 파일을 작성하지 않고, Abaqus/Nastran을 실행하지 않으며, reference HDF5/CSV view 생성이나 solver 결과 비교, release readiness 승인도 하지 않는다.
|
||||
Implementation Planning Agent는 승인된 요구조건, 연구 브리프, 정식화, 수치 리뷰, I/O 정의, reference model 계약을 C++/MSVC 구현 전 TDD 작업계획으로 변환한다. Agent는 코드, 테스트, CMake 파일을 작성하지 않고, Abaqus/Nastran을 실행하지 않으며, Abaqus reference CSV 생성 또는 수정이나 solver 결과 비교, release readiness 승인도 하지 않는다.
|
||||
|
||||
기본 파일명은 `docs/implementation-plans/<feature-id>-implementation-plan.md` 형식을 사용한다. 각 문서는 Implementation Agent가 먼저 작성해야 할 실패 테스트, 최소 구현 순서, CMake/CTest 등록 계획, acceptance traceability를 제공해야 한다.
|
||||
|
||||
@@ -23,7 +23,7 @@ Implementation Planning Agent는 승인된 요구조건, 연구 브리프, 정
|
||||
- CMake 파일을 수정하지 않는다.
|
||||
- CMake/CTest를 실행하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- solver 결과를 비교하지 않는다.
|
||||
- release readiness를 승인하지 않는다.
|
||||
- C++ API, class name, storage layout, file ownership을 확정하지 않는다.
|
||||
@@ -95,9 +95,9 @@ Implementation Planning Agent는 승인된 요구조건, 연구 브리프, 정
|
||||
## Data Flow Contract
|
||||
1. Abaqus `.inp` input follows docs/io-definitions/<feature-id>-io.md.
|
||||
2. Parser/I/O path maps model data and history data into the internal semantic model.
|
||||
3. Solver path produces authoritative `results.h5` with displacement, reaction, element force, stress, or feature-specific result datasets.
|
||||
4. Deterministic CSV views are exported from HDF5 only when the I/O contract or comparison command requires them.
|
||||
5. Reference comparison tests compare solver `results.h5` and CSV views against `references/<feature-id>/<model-id>/` artifacts.
|
||||
3. Solver path produces authoritative `results.h5` with displacement, reaction, internal force, stress, or feature-specific result datasets.
|
||||
4. Reference artifacts are Abaqus-generated CSV files under `reference/<model-id>/`.
|
||||
5. Reference comparison tests compare FESA `results.h5` rows against `reference/<model-id>/<model-id>_*.csv` rows.
|
||||
|
||||
## Acceptance Traceability Matrix
|
||||
|
||||
@@ -134,7 +134,7 @@ ctest -C Debug -R <feature-or-label>
|
||||
|
||||
- 모든 `must` requirement는 최소 하나의 task와 test에 연결되어야 한다.
|
||||
- C++ production 변경마다 선행 테스트 파일 또는 테스트 추가 계획이 있어야 한다.
|
||||
- reference artifact가 필요한 기능은 `references/<feature-id>/<model-id>/`와 HDF5/CSV view 비교 테스트 계획을 가져야 한다.
|
||||
- reference artifact가 필요한 기능은 `reference/<model-id>/`와 FESA HDF5-to-reference-CSV 비교 테스트 계획을 가져야 한다.
|
||||
- CMake/CTest 계획은 MSVC x64 Debug 검증 경로와 호환되어야 한다.
|
||||
- 구현 계획은 테스트 작성, 실패 확인, 최소 구현, validation 순서를 명시해야 한다.
|
||||
- upstream 문서가 불완전하면 값을 임의로 채우지 않고 `needs-upstream-decision` 또는 `blocked`로 표시한다.
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
FESA 솔버의 입력 파일은 Abaqus input file이다. 다만 초기 FESA는 Abaqus 전체 문법 호환을 목표로 하지 않고, 기능별로 지원할 Abaqus keyword subset과 내부 모델 매핑을 명확히 정의한다.
|
||||
|
||||
기본 파일명은 `docs/io-definitions/<feature-id>-io.md` 형식을 사용한다. 각 문서는 Requirement Agent, Formulation Agent, Numerical Review Agent의 산출물을 입력으로 받아 Abaqus `.inp` 입력 계약, authoritative HDF5 result schema, deterministic CSV view schema를 정의해야 한다.
|
||||
기본 파일명은 `docs/io-definitions/<feature-id>-io.md` 형식을 사용한다. 각 문서는 Requirement Agent, Formulation Agent, Numerical Review Agent의 산출물을 입력으로 받아 Abaqus `.inp` 입력 계약, authoritative HDF5 result schema, FESA HDF5 to Reference CSV comparison schema를 정의해야 한다.
|
||||
|
||||
## I/O Definition Agent 역할
|
||||
|
||||
I/O Definition Agent는 Abaqus input file subset, 내부 solver model mapping, output request mapping, HDF5 result schema, comparison CSV view schema를 정의한다.
|
||||
I/O Definition Agent는 Abaqus input file subset, 내부 solver model mapping, output request mapping, HDF5 result schema, reference CSV comparison row schema를 정의한다.
|
||||
|
||||
수행한다:
|
||||
- 기능별 supported Abaqus keyword subset을 정의한다.
|
||||
@@ -16,13 +16,13 @@ I/O Definition Agent는 Abaqus input file subset, 내부 solver model mapping, o
|
||||
- model data와 history data를 내부 solver 개념으로 매핑한다.
|
||||
- node, element, set, material, section, boundary condition, load, step, output request의 의미 계약을 정의한다.
|
||||
- `results.h5`의 authoritative HDF5 schema를 정의한다.
|
||||
- `csv/displacements.csv`, `csv/reactions.csv`, `csv/element_forces.csv`, `csv/stresses.csv` deterministic CSV view schema를 정의한다.
|
||||
- FESA HDF5 dataset을 `reference/<model-id>/` 아래 Abaqus reference CSV rows와 비교하기 위한 deterministic row schema를 정의한다.
|
||||
|
||||
수행하지 않는다:
|
||||
- parser를 구현하지 않는다.
|
||||
- C++ API나 파일 구조를 설계하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- solver 결과와 reference 결과를 비교하지 않는다.
|
||||
- release readiness를 승인하지 않는다.
|
||||
- 명시적으로 정의되지 않은 Abaqus full compatibility를 주장하지 않는다.
|
||||
@@ -123,18 +123,20 @@ I/O Definition Agent는 Abaqus input file subset, 내부 solver model mapping, o
|
||||
| element_force | /steps/<step>/frames/<frame>/field_outputs/element_forces | <nrow, ncomp> | float64 | component_names, element_ids, location | element | feature-dependent |
|
||||
| stress | /steps/<step>/frames/<frame>/field_outputs/S | <nrow, ncomp> | float64 | component_names, element_ids, integration_points | integration_point | feature-dependent |
|
||||
|
||||
## Deterministic CSV View Schemas
|
||||
## FESA HDF5 to Reference CSV Comparison Schema
|
||||
|
||||
CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 authoritative storage가 아니다.
|
||||
FESA solver output은 `results.h5`이다. Comparison tooling reads required HDF5 datasets and maps them to deterministic row records that can be matched against Abaqus reference CSV files under `reference/<model-id>/`.
|
||||
|
||||
공통 규칙:
|
||||
- directory: `csv/`
|
||||
- reference_root: `reference/<model-id>/`
|
||||
- hdf5_schema_version: <version>
|
||||
- reference_csv_schema_version: <version>
|
||||
- sort_order: step, frame, id, location, component
|
||||
- numeric_format: <precision and exponent policy>
|
||||
- missing_component_policy: 0 | N/A | omitted, feature-specific
|
||||
- view_source: HDF5 dataset path를 각 파일 metadata 또는 report에 기록한다.
|
||||
- hdf5_dataset_source: HDF5 dataset path를 각 row schema 또는 report에 기록한다.
|
||||
|
||||
### csv/displacements.csv
|
||||
### displacement rows / `<model-id>_displacements.csv`
|
||||
| column | type | description |
|
||||
| --- | --- | --- |
|
||||
| step | string | step name or index |
|
||||
@@ -144,7 +146,7 @@ CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 aut
|
||||
| uy | float | displacement component or 0/N/A |
|
||||
| uz | float | displacement component or 0/N/A |
|
||||
|
||||
### csv/reactions.csv
|
||||
### reaction rows / `<model-id>_reactions.csv`
|
||||
| column | type | description |
|
||||
| --- | --- | --- |
|
||||
| step | string | step name or index |
|
||||
@@ -154,7 +156,7 @@ CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 aut
|
||||
| rfy | float | reaction component or 0/N/A |
|
||||
| rfz | float | reaction component or 0/N/A |
|
||||
|
||||
### csv/element_forces.csv
|
||||
### internal force rows / `<model-id>_internalforces.csv`
|
||||
| column | type | description |
|
||||
| --- | --- | --- |
|
||||
| step | string | step name or index |
|
||||
@@ -164,7 +166,7 @@ CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 aut
|
||||
| component | string | force component name |
|
||||
| value | float | component value |
|
||||
|
||||
### csv/stresses.csv
|
||||
### stress rows / `<model-id>_stresses.csv`
|
||||
| column | type | description |
|
||||
| --- | --- | --- |
|
||||
| step | string | step name or index |
|
||||
@@ -183,7 +185,7 @@ CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 aut
|
||||
- coordinate_conventions: <policy>
|
||||
- output_quantity_availability: <policy>
|
||||
- hdf5_schema_validation: <required datasets and attributes>
|
||||
- csv_view_validation: <stable ordering and required columns>
|
||||
- reference_csv_validation: <stable ordering and required columns>
|
||||
|
||||
## Open Issues and Downstream Handoff
|
||||
|
||||
@@ -191,10 +193,10 @@ CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 aut
|
||||
- <Abaqus input examples and reference artifact schema needs>
|
||||
|
||||
### Implementation Planning Agent
|
||||
- <parser acceptance cases, unsupported keyword diagnostics, HDF5 writer tests, CSV view exporter tests>
|
||||
- <parser acceptance cases, unsupported keyword diagnostics, HDF5 writer tests, comparison row mapping tests>
|
||||
|
||||
### Reference Verification Agent
|
||||
- <HDF5 dataset paths, CSV view schemas, ID matching rules, units, coordinate conventions, tolerance-relevant fields>
|
||||
- <HDF5 dataset paths, reference CSV row schemas, ID matching rules, units, coordinate conventions, tolerance-relevant fields>
|
||||
```
|
||||
|
||||
## 품질 기준
|
||||
@@ -206,4 +208,4 @@ CSV view는 HDF5 dataset에서 추출한 deterministic comparison view이며 aut
|
||||
- 내부 모델 계약은 semantic fields로 작성하고 C++ class/function/API를 확정하지 않는다.
|
||||
- `results.h5`가 authoritative solver output임을 명시해야 한다.
|
||||
- HDF5 schema는 dataset path, dtype/shape, required attributes, ID field, component naming, coordinate system, units, step/frame identity, quantity location을 포함해야 한다.
|
||||
- CSV view schema는 column name, stable sort order, ID field, component naming, coordinate system, units, step/frame identity, quantity location을 포함해야 한다.
|
||||
- Reference CSV comparison row schema는 column name, stable sort order, ID field, component naming, coordinate system, units, step/frame identity, quantity location을 포함해야 한다.
|
||||
|
||||
@@ -20,7 +20,7 @@ Numerical Review Agent는 정식화의 수학적 일관성, 수치 안정성 위
|
||||
- 정식화 문서를 직접 수정하지 않는다.
|
||||
- C++ API나 파일 구조를 설계하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- release readiness를 승인하지 않는다.
|
||||
- 레퍼런스 결과와 구현 솔버 결과의 일치 여부를 판정하지 않는다.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
이 디렉터리는 Physics Evaluation Agent가 작성하거나 제안하는 기능별 physics evaluation report를 보관하는 위치다.
|
||||
|
||||
Physics Evaluation Agent는 Reference Verification Agent가 `pass-for-physics-evaluation`로 넘긴 결과에 대해 물리적 타당성을 검토한다. 이 agent는 reference tolerance를 다시 판정하지 않고, HDF5 결과와 deterministic CSV views를 읽기 전용 evidence로 사용해 평형, 반력 부호, 변위 방향, 대칭성, 요소내력/응력 위치, rigid body mode 징후, energy/residual sanity, 테스트 모델 coverage를 검토한다.
|
||||
Physics Evaluation Agent는 Reference Verification Agent가 `pass-for-physics-evaluation`로 넘긴 결과에 대해 물리적 타당성을 검토한다. 이 agent는 reference tolerance를 다시 판정하지 않고, FESA `results.h5`, Abaqus reference CSV files, optional FESA debug CSV view를 읽기 전용 evidence로 사용해 평형, 반력 부호, 변위 방향, 대칭성, 요소내력/응력 위치, rigid body mode 징후, energy/residual sanity, 테스트 모델 coverage를 검토한다.
|
||||
|
||||
기본 문서명은 `docs/physics-evaluations/<feature-id>-physics-evaluation.md` 형식을 사용한다.
|
||||
|
||||
@@ -23,7 +23,7 @@ Physics Evaluation Agent는 Reference Verification Agent가 `pass-for-physics-ev
|
||||
- requirements, formulations, I/O contracts, reference model contracts를 수정하지 않는다.
|
||||
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
|
||||
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- reference tolerance를 다시 판정하지 않는다.
|
||||
- release readiness를 승인하지 않는다.
|
||||
- release notes 또는 final release checklist를 작성하지 않는다.
|
||||
@@ -39,8 +39,9 @@ EVIDENCE CHECK -> PHYSICS CHECKS -> CLASSIFY -> REPORT
|
||||
`EVIDENCE CHECK`에서 다음 항목을 확인한다.
|
||||
|
||||
- Reference Verification report status가 `pass-for-physics-evaluation`인지 여부
|
||||
- checked solver/reference HDF5 files
|
||||
- checked deterministic CSV views
|
||||
- checked solver HDF5 file: `<solver output directory>/results.h5`
|
||||
- checked Abaqus reference CSV files under `reference/<model-id>/`
|
||||
- optional FESA deterministic CSV view derived from `results.h5` for review only
|
||||
- compared quantities
|
||||
- model purpose
|
||||
- documented physical expectations
|
||||
@@ -96,8 +97,10 @@ EVIDENCE CHECK -> PHYSICS CHECKS -> CLASSIFY -> REPORT
|
||||
| reference_verification | docs/reference-verifications/<feature-id>-reference-verification.md | pass-for-physics-evaluation | <summary> |
|
||||
| solver_hdf5 | <solver output directory>/results.h5 | present | missing | <summary> |
|
||||
| solver_csv_views | <solver output directory>/csv/ | present | missing | <summary or N/A> |
|
||||
| reference_hdf5 | references/<feature-id>/<model-id>/reference.h5 | present | missing | <summary> |
|
||||
| reference_csv_views | references/<feature-id>/<model-id>/csv/ | present | missing | <summary> |
|
||||
| reference_displacements_csv | reference/<model-id>/<model-id>_displacements.csv | present | missing | <summary> |
|
||||
| reference_reactions_csv | reference/<model-id>/<model-id>_reactions.csv | present | missing | <summary> |
|
||||
| reference_internalforces_csv | reference/<model-id>/<model-id>_internalforces.csv | present | missing | <summary> |
|
||||
| reference_stresses_csv | reference/<model-id>/<model-id>_stresses.csv | present | missing | <summary> |
|
||||
| model_purpose | docs/reference-models/<feature-id>-reference-models.md | documented | missing | <summary> |
|
||||
| physical_expectations | <source docs> | documented | missing | <summary> |
|
||||
|
||||
@@ -163,6 +166,6 @@ EVIDENCE CHECK -> PHYSICS CHECKS -> CLASSIFY -> REPORT
|
||||
- documented expectation이 없는 항목은 pass/fail로 판정하지 않고 `skipped`, `needs-upstream-decision`, 또는 `needs-reference-model`로 둔다.
|
||||
- 평형 검토는 적용 하중, 반력, element/internal force sign convention이 문서화된 경우에만 수행한다.
|
||||
- stress/strain 검토는 output location, component naming, coordinate system, units가 정의된 경우에만 수행한다.
|
||||
- HDF5와 deterministic CSV views는 읽기 전용 evidence로만 사용한다.
|
||||
- FESA `results.h5`, Abaqus reference CSV files, optional FESA debug CSV view는 읽기 전용 evidence로만 사용한다.
|
||||
- pass는 Release Agent로 넘길 수 있다는 뜻이며 release readiness 승인이 아니다.
|
||||
- reference artifacts와 tolerance policies는 수정하지 않는다.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
이 디렉터리는 Reference Model Agent가 작성하거나 제안한 기능별 reference model 설계 문서를 보관하는 위치다.
|
||||
|
||||
Reference Model Agent는 FESA 기능 검증에 필요한 Abaqus `.inp` 기반 테스트 모델 포트폴리오와 `references/<feature-id>/<model-id>/` artifact bundle 계약을 정의한다. Agent는 Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않고, reference HDF5 파일이나 deterministic CSV view 값을 생성하지 않으며, solver 결과 비교나 release readiness 승인도 하지 않는다.
|
||||
Reference Model Agent는 FESA 기능 검증에 필요한 Abaqus `.inp` 기반 테스트 모델 포트폴리오와 `reference/<model-id>/` artifact bundle 계약을 정의한다. Agent는 Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않고, Abaqus reference CSV 파일을 생성하거나 수정하지 않으며, solver 결과 비교나 release readiness 승인도 하지 않는다.
|
||||
|
||||
기본 파일명은 `docs/reference-models/<feature-id>-reference-models.md` 형식을 사용한다. 각 문서는 요구조건, 연구 브리프, 정식화, 수치 리뷰, I/O 정의를 입력으로 받아 구현 전에 준비해야 할 테스트 모델과 reference artifact 요구사항을 정의해야 한다.
|
||||
|
||||
@@ -11,17 +11,17 @@ Reference Model Agent는 FESA 기능 검증에 필요한 Abaqus `.inp` 기반
|
||||
수행한다:
|
||||
- 기능별 reference model portfolio를 smoke, analytical, patch test, benchmark, regression, negative/invalid-input model로 구분한다.
|
||||
- `model.inp`가 I/O Definition Agent의 supported Abaqus keyword subset 안에 있는지 확인한다.
|
||||
- `references/<feature-id>/<model-id>/` artifact bundle 구조와 필수 파일을 정의한다.
|
||||
- `reference/<model-id>/` artifact bundle 구조와 필수 파일을 정의한다.
|
||||
- `metadata.json` provenance, 단위, 좌표계, Abaqus version/source, output request, tolerance 정책을 정의한다.
|
||||
- `reference.h5` 요구사항과 HDF5 dataset에서 추출되는 deterministic CSV view 요구사항을 정의한다.
|
||||
- requirement와 model, compared quantity, tolerance, artifact status를 연결하는 Coverage Matrix를 작성한다.
|
||||
- Abaqus reference CSV 파일 요구사항을 정의한다.
|
||||
- requirement와 model, compared quantity, FESA HDF5 dataset, reference CSV, tolerance, artifact status를 연결하는 Coverage Matrix를 작성한다.
|
||||
|
||||
수행하지 않는다:
|
||||
- C++ 코드를 구현하지 않는다.
|
||||
- parser를 구현하지 않는다.
|
||||
- C++ API나 파일 구조를 설계하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- solver 결과를 비교하지 않는다.
|
||||
- release readiness를 승인하지 않는다.
|
||||
- reference 값, tolerance, Abaqus compatibility를 임의로 만들지 않는다.
|
||||
@@ -53,11 +53,11 @@ Reference Model Agent는 FESA 기능 검증에 필요한 Abaqus `.inp` 기반
|
||||
|
||||
| model_id | category | purpose | status | required_artifacts |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| <model-id> | smoke | <basic parser/solve path> | draft | model.inp, metadata.json, reference.h5, required CSV views |
|
||||
| <model-id> | analytical | <closed-form comparison> | draft | model.inp, metadata.json, reference.h5, required CSV views |
|
||||
| <model-id> | patch test | <element consistency check> | draft | model.inp, metadata.json, reference.h5, required CSV views |
|
||||
| <model-id> | benchmark | <trusted benchmark comparison> | draft | model.inp, metadata.json, reference.h5, required CSV views |
|
||||
| <model-id> | regression | <known defect guard> | draft | model.inp, metadata.json, reference.h5, required CSV views |
|
||||
| <model-id> | smoke | <basic parser/solve path> | draft | model.inp, metadata.json, required Abaqus reference CSV files |
|
||||
| <model-id> | analytical | <closed-form comparison> | draft | model.inp, metadata.json, required Abaqus reference CSV files |
|
||||
| <model-id> | patch test | <element consistency check> | draft | model.inp, metadata.json, required Abaqus reference CSV files |
|
||||
| <model-id> | benchmark | <trusted benchmark comparison> | draft | model.inp, metadata.json, required Abaqus reference CSV files |
|
||||
| <model-id> | regression | <known defect guard> | draft | model.inp, metadata.json, required Abaqus reference CSV files |
|
||||
| <model-id> | negative/invalid-input | <unsupported keyword or invalid model diagnostic> | draft | model.inp, metadata.json |
|
||||
|
||||
## Model Record
|
||||
@@ -71,49 +71,46 @@ Reference Model Agent는 FESA 기능 검증에 필요한 Abaqus `.inp` 기반
|
||||
- material: <material model and values>
|
||||
- boundary_conditions: <BC summary>
|
||||
- loads: <load summary>
|
||||
- expected_physical_quantities: displacement | reaction | element force | stress | strain | energy | residual
|
||||
- expected_physical_quantities: displacement | reaction | internal force | stress | strain | energy | residual
|
||||
- tolerance: <absolute/relative/norm policy or needs-user-decision>
|
||||
- source: <user | analytical | Abaqus Verification Guide | Abaqus Benchmarks Guide | NAFEMS | NASA/FEMCI | paper>
|
||||
- artifact_status: draft | needs-reference-artifacts | ready-for-implementation-planning | blocked
|
||||
|
||||
## Abaqus Input Requirements
|
||||
- input_file: references/<feature-id>/<model-id>/model.inp
|
||||
- input_file: reference/<model-id>/model.inp
|
||||
- supported_keyword_subset: <keywords from docs/io-definitions/<feature-id>-io.md>
|
||||
- model_data: <nodes, elements, sets, material, section, coordinates, units>
|
||||
- history_data: <step, procedure, boundary conditions, loads, output requests>
|
||||
- output_requests: <requests needed to populate reference.h5 datasets and deterministic CSV views>
|
||||
- output_requests: <requests needed to populate Abaqus reference CSV files>
|
||||
- unsupported_keyword_policy: unsupported | ignored-with-warning | requires-user-decision
|
||||
|
||||
## Artifact Bundle Contract
|
||||
|
||||
```text
|
||||
references/
|
||||
<feature-id>/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
reference.h5
|
||||
csv/
|
||||
displacements.csv
|
||||
reactions.csv
|
||||
element_forces.csv
|
||||
stresses.csv
|
||||
README.md
|
||||
reference/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
<model-id>_displacements.csv
|
||||
<model-id>_reactions.csv
|
||||
<model-id>_internalforces.csv
|
||||
<model-id>_stresses.csv
|
||||
README.md
|
||||
```
|
||||
|
||||
Required files:
|
||||
- `model.inp`: Abaqus input file for the reference model.
|
||||
- `metadata.json`: provenance and model contract metadata.
|
||||
- `reference.h5`: authoritative reference result artifact.
|
||||
- `csv/displacements.csv`: deterministic view of nodal displacement reference results.
|
||||
- `csv/reactions.csv`: deterministic view of nodal reaction force reference results.
|
||||
- `csv/element_forces.csv`: deterministic view of element internal force reference results.
|
||||
- `csv/stresses.csv`: deterministic view of stress reference results.
|
||||
- `<model-id>_displacements.csv`: required when nodal displacement is a verification quantity.
|
||||
- `<model-id>_reactions.csv`: required when constrained DOF reactions or global equilibrium are verification quantities.
|
||||
- `<model-id>_internalforces.csv`: required when element internal force is a verification quantity.
|
||||
- `<model-id>_stresses.csv`: required when stress is a verification quantity.
|
||||
- `README.md`: short description, generation notes, and limitations.
|
||||
|
||||
Optional files:
|
||||
- `csv/strains.csv`: deterministic strain view when required.
|
||||
- `csv/energy_or_residual.csv`: deterministic energy, residual, or convergence view when required.
|
||||
- `<model-id>_strains.csv`: required when strain is part of the acceptance criteria.
|
||||
- `<model-id>_energy_or_residual.csv`: required when energy balance, residual, or convergence data is part of the acceptance criteria.
|
||||
- `<model-id>_<quantity>.csv`: feature-specific reference quantity when upstream contracts require it.
|
||||
- `notes.md`: manual review notes.
|
||||
|
||||
## Metadata JSON Contract
|
||||
@@ -123,6 +120,7 @@ Optional files:
|
||||
"feature_id": "<feature-id>",
|
||||
"model_id": "<model-id>",
|
||||
"artifact_status": "draft | needs-reference-artifacts | ready-for-implementation-planning | blocked",
|
||||
"input_file": "model.inp",
|
||||
"abaqus_version": "<version or needs-user-decision>",
|
||||
"generation_owner": "<person/procedure>",
|
||||
"generation_date": "<YYYY-MM-DD>",
|
||||
@@ -135,70 +133,69 @@ Optional files:
|
||||
"boundary_condition_summary": "<summary>",
|
||||
"load_summary": "<summary>",
|
||||
"output_requests": ["U", "RF", "S", "<feature-specific quantities>"],
|
||||
"hdf5_schema_version": "<version>",
|
||||
"csv_view_schema_version": "<version>",
|
||||
"csv_view_source": "reference.h5",
|
||||
"reference_csv_schema_version": "<version>",
|
||||
"reference_csv_files": [
|
||||
"<model-id>_displacements.csv",
|
||||
"<model-id>_reactions.csv",
|
||||
"<model-id>_internalforces.csv",
|
||||
"<model-id>_stresses.csv"
|
||||
],
|
||||
"tolerance_policy": "<absolute/relative/norm policy>",
|
||||
"limitations": ["<known limitation>"]
|
||||
}
|
||||
```
|
||||
|
||||
## Reference HDF5 and CSV View Requirements
|
||||
## Abaqus Reference CSV Requirements
|
||||
|
||||
### reference.h5
|
||||
- Required when any numerical reference comparison is part of the acceptance criteria.
|
||||
- Must include schema version, units, coordinate system, step/frame identity, output location, component naming, and row identity metadata.
|
||||
- Must contain datasets sufficient to derive all required deterministic CSV views.
|
||||
|
||||
### csv/displacements.csv
|
||||
### `<model-id>_displacements.csv`
|
||||
- Required when nodal displacement is a verification quantity.
|
||||
- Must include step/frame identity, node id, displacement components, coordinate system, and units.
|
||||
|
||||
### csv/reactions.csv
|
||||
### `<model-id>_reactions.csv`
|
||||
- Required when constrained DOF reactions or global equilibrium are verification quantities.
|
||||
- Must include step/frame identity, node id, reaction components, coordinate system, and units.
|
||||
|
||||
### csv/element_forces.csv
|
||||
### `<model-id>_internalforces.csv`
|
||||
- Required when element internal force is a verification quantity.
|
||||
- Must include step/frame identity, element id, output location, component, value, and units.
|
||||
|
||||
### csv/stresses.csv
|
||||
### `<model-id>_stresses.csv`
|
||||
- Required when stress is a verification quantity.
|
||||
- Must include step/frame identity, element id, integration point or recovery location, component, value, coordinate system, and units.
|
||||
|
||||
### Optional CSV Views
|
||||
- `csv/strains.csv`: required when strain is part of the acceptance criteria.
|
||||
- `csv/energy_or_residual.csv`: required when energy balance, residual, or convergence data is part of the acceptance criteria.
|
||||
### Optional Reference CSV Files
|
||||
- `<model-id>_strains.csv`: required when strain is part of the acceptance criteria.
|
||||
- `<model-id>_energy_or_residual.csv`: required when energy balance, residual, or convergence data is part of the acceptance criteria.
|
||||
- `<model-id>_<quantity>.csv`: required when a feature-specific quantity is part of the acceptance criteria.
|
||||
|
||||
## Coverage Matrix
|
||||
|
||||
| requirement_id | model_id | compared_quantity | hdf5_dataset | csv_view | tolerance | verification_method | status |
|
||||
| requirement_id | model_id | compared_quantity | fesa_hdf5_dataset | reference_csv | tolerance | verification_method | status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| <req-id> | <model-id> | displacement | <dataset path> | csv/displacements.csv | <policy> | reference-comparison | draft |
|
||||
| <req-id> | <model-id> | reaction | <dataset path> | csv/reactions.csv | <policy> | reference-comparison | draft |
|
||||
| <req-id> | <model-id> | element force | <dataset path> | csv/element_forces.csv | <policy> | reference-comparison | draft |
|
||||
| <req-id> | <model-id> | stress | <dataset path> | csv/stresses.csv | <policy> | reference-comparison | draft |
|
||||
| <req-id> | <model-id> | displacement | /steps/<step>/frames/<frame>/field_outputs/U | reference/<model-id>/<model-id>_displacements.csv | <policy> | hdf5-to-reference-csv | draft |
|
||||
| <req-id> | <model-id> | reaction | /steps/<step>/frames/<frame>/field_outputs/RF | reference/<model-id>/<model-id>_reactions.csv | <policy> | hdf5-to-reference-csv | draft |
|
||||
| <req-id> | <model-id> | internal force | /steps/<step>/frames/<frame>/field_outputs/element_forces | reference/<model-id>/<model-id>_internalforces.csv | <policy> | hdf5-to-reference-csv | draft |
|
||||
| <req-id> | <model-id> | stress | /steps/<step>/frames/<frame>/field_outputs/S | reference/<model-id>/<model-id>_stresses.csv | <policy> | hdf5-to-reference-csv | draft |
|
||||
|
||||
## Artifact Acceptance Checklist
|
||||
- 모든 `must` requirement가 최소 하나의 `model_id`와 `compared_quantity`에 연결되어 있다.
|
||||
- `model.inp`가 기능별 supported Abaqus keyword subset을 벗어나지 않는다.
|
||||
- `metadata.json`에 provenance, Abaqus version/source, units, coordinate system, tolerance, HDF5 schema version, CSV view schema version이 기록되어 있다.
|
||||
- `reference.h5`가 존재하거나, 기능상 불필요하면 명확한 reason과 함께 제외되어 있다.
|
||||
- 필수 deterministic CSV view가 존재하거나, 기능상 불필요한 view는 명확한 reason과 함께 제외되어 있다.
|
||||
- output request가 필요한 HDF5 dataset과 CSV view 물리량을 생성할 수 있도록 정의되어 있다.
|
||||
- `reference.h5` 또는 required CSV view가 없으면 status는 `needs-reference-artifacts`다.
|
||||
- `metadata.json`에 provenance, Abaqus version/source, units, coordinate system, tolerance, reference CSV schema version이 기록되어 있다.
|
||||
- 필요한 Abaqus reference CSV 파일이 존재하거나, 기능상 불필요한 quantity는 명확한 reason과 함께 제외되어 있다.
|
||||
- output request가 필요한 Abaqus reference CSV 물리량을 생성할 수 있도록 정의되어 있다.
|
||||
- required Abaqus reference CSV 또는 metadata provenance가 없으면 status는 `needs-reference-artifacts`다.
|
||||
- tolerance, source, units, coordinate system이 불명확하면 status는 `needs-user-decision`이다.
|
||||
|
||||
## Open Issues and Downstream Handoff
|
||||
|
||||
### I/O Definition Agent
|
||||
- <supported keyword, output request, HDF5 schema clarification, CSV view schema clarification>
|
||||
- <supported keyword, output request, FESA HDF5 schema clarification, reference CSV row schema clarification>
|
||||
|
||||
### Implementation Planning Agent
|
||||
- <tests that should fail before implementation, model order, acceptance criteria>
|
||||
|
||||
### Reference Verification Agent
|
||||
- <HDF5 dataset paths, CSV view schema, ID matching, units, coordinate conventions, output locations, tolerance mapping>
|
||||
- <FESA HDF5 dataset paths, reference CSV schema, ID matching, units, coordinate conventions, output locations, tolerance mapping>
|
||||
|
||||
### Physics Evaluation Agent
|
||||
- <equilibrium, symmetry, displacement direction, stress location, rigid body mode, load path sanity checks>
|
||||
@@ -209,8 +206,8 @@ Optional files:
|
||||
- Reference model의 목적과 검증 대상 requirement가 명확해야 한다.
|
||||
- `model.inp`는 Abaqus input file이며, 기능별 supported keyword subset을 따라야 한다.
|
||||
- model data와 history data를 구분해야 한다.
|
||||
- output request와 required HDF5 dataset/CSV view 사이의 연결이 명확해야 한다.
|
||||
- `references/<feature-id>/<model-id>/` 구조와 필수 artifact가 명시되어야 한다.
|
||||
- `metadata.json`에는 provenance, Abaqus version/source, units, coordinate system, tolerance, HDF5 schema version, CSV view schema version이 포함되어야 한다.
|
||||
- `reference.h5` 또는 required CSV view가 없으면 완료 상태가 아니라 `needs-reference-artifacts` 상태로 둔다.
|
||||
- 모든 `must` requirement는 Coverage Matrix에서 model, compared quantity, HDF5 dataset, CSV view, tolerance, verification method로 추적되어야 한다.
|
||||
- output request와 required Abaqus reference CSV 사이의 연결이 명확해야 한다.
|
||||
- `reference/<model-id>/` 구조와 필수 artifact가 명시되어야 한다.
|
||||
- `metadata.json`에는 provenance, Abaqus version/source, units, coordinate system, tolerance, reference CSV schema version이 포함되어야 한다.
|
||||
- required Abaqus reference CSV가 없으면 완료 상태가 아니라 `needs-reference-artifacts` 상태로 둔다.
|
||||
- 모든 `must` requirement는 Coverage Matrix에서 model, compared quantity, FESA HDF5 dataset, reference CSV, tolerance, verification method로 추적되어야 한다.
|
||||
|
||||
@@ -2,18 +2,19 @@
|
||||
|
||||
이 디렉터리는 Reference Verification Agent가 작성하거나 제안하는 기능별 reference comparison report를 보관하는 위치다.
|
||||
|
||||
Reference Verification Agent는 Build/Test Executor Agent 통과 후 generated solver `results.h5`와 stored reference `reference.h5`를 tolerance 기준으로 비교한다. CSV는 authoritative storage가 아니라 HDF5 dataset에서 추출한 deterministic CSV view이다. 이 agent는 comparison과 report만 수행하며, source code, tests, CMake files, requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다.
|
||||
Reference Verification Agent는 Build/Test Executor Agent 통과 후 generated solver `results.h5`와 Abaqus reference CSV files를 tolerance 기준으로 비교한다. Reference CSV는 동일한 Abaqus `.inp` 모델을 Abaqus로 해석해 추출한 변위, 반력, 내력, 응력 결과이며, FESA HDF5 dataset에서 파생된 파일이 아니다. 이 agent는 comparison과 report만 수행하며, source code, tests, CMake files, requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다.
|
||||
|
||||
기본 문서명은 `docs/reference-verifications/<feature-id>-reference-verification.md` 형식을 사용한다.
|
||||
|
||||
## Reference Verification Agent 역할
|
||||
|
||||
수행한다:
|
||||
- `references/<feature-id>/<model-id>/` artifact bundle과 generated solver `results.h5`를 확인한다.
|
||||
- `metadata.json`, `reference.h5`, required deterministic CSV views, schema version, units, coordinate system, step/frame identity, node/element IDs, output location, tolerance source를 확인한다.
|
||||
- HDF5 dataset을 authoritative 비교 대상으로 삼고, `csv/displacements.csv`, `csv/reactions.csv`, `csv/element_forces.csv`, `csv/stresses.csv`는 deterministic row view로 사용한다.
|
||||
- upstream 문서가 요구할 때만 `csv/strains.csv`, `csv/energy_or_residual.csv`를 추가 비교한다.
|
||||
- max absolute error, max relative error, RMS error, norm error, worst node/element/component, missing rows, extra rows, pass/fail을 보고한다.
|
||||
- `reference/<model-id>/` artifact bundle과 generated solver `results.h5`를 확인한다.
|
||||
- `metadata.json`, `model.inp`, required Abaqus reference CSV files, reference CSV schema version, FESA HDF5 schema version, units, coordinate system, step/frame identity, node/element ID matching rule, output location, component naming, tolerance policy를 확인한다.
|
||||
- FESA HDF5 dataset을 normalized row record로 읽고 Abaqus reference CSV row와 직접 비교한다.
|
||||
- comparison command가 FESA `results.h5`에서 deterministic CSV view를 materialize할 수 있지만, 이 파일은 debugging/review용 derived artifact일 뿐 reference artifact가 아니다.
|
||||
- upstream 문서가 요구할 때만 `<model-id>_strains.csv`, `<model-id>_energy_or_residual.csv`, 또는 `<model-id>_<quantity>.csv`를 추가 비교한다.
|
||||
- max absolute error, max relative error, RMS error, norm error, worst id/component, missing rows, extra rows, pass/fail을 보고한다.
|
||||
- 실패를 missing-reference-artifact, missing-solver-output, schema-mismatch, id-mismatch, unit-or-coordinate-mismatch, tolerance-failure, nonfinite-result, upstream-contract, environment로 분류한다.
|
||||
|
||||
수행하지 않는다:
|
||||
@@ -23,7 +24,7 @@ Reference Verification Agent는 Build/Test Executor Agent 통과 후 generated s
|
||||
- requirements, formulations, I/O contracts, reference model contracts를 수정하지 않는다.
|
||||
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
|
||||
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- solver output을 tolerance에 맞추기 위해 보정하지 않는다.
|
||||
- physics validation success 또는 release readiness를 승인하지 않는다.
|
||||
|
||||
@@ -38,41 +39,41 @@ ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT
|
||||
`ARTIFACT CHECK`에서 다음 항목이 없으면 비교를 시작하지 않는다.
|
||||
|
||||
- `metadata.json`
|
||||
- stored reference `reference.h5`
|
||||
- `model.inp`
|
||||
- generated solver `results.h5`
|
||||
- required deterministic CSV view files
|
||||
- HDF5 schema version
|
||||
- CSV view schema version
|
||||
- `reference/<model-id>/<model-id>_displacements.csv`
|
||||
- `reference/<model-id>/<model-id>_reactions.csv`
|
||||
- `reference/<model-id>/<model-id>_internalforces.csv`
|
||||
- `reference/<model-id>/<model-id>_stresses.csv`
|
||||
- reference CSV schema version
|
||||
- FESA HDF5 schema version
|
||||
- units
|
||||
- coordinate system
|
||||
- step/frame identity
|
||||
- node/element ID matching rule
|
||||
- output location
|
||||
- component naming
|
||||
- tolerance policy
|
||||
|
||||
## 비교 대상
|
||||
|
||||
Authoritative 비교 대상:
|
||||
- `results.h5`와 `reference.h5`의 displacement datasets
|
||||
- `results.h5`와 `reference.h5`의 reaction datasets
|
||||
- `results.h5`와 `reference.h5`의 element force datasets
|
||||
- `results.h5`와 `reference.h5`의 stress datasets
|
||||
| quantity | fesa_hdf5_dataset | reference_csv |
|
||||
| --- | --- | --- |
|
||||
| displacement | /steps/<step>/frames/<frame>/field_outputs/U | reference/<model-id>/<model-id>_displacements.csv |
|
||||
| reaction | /steps/<step>/frames/<frame>/field_outputs/RF | reference/<model-id>/<model-id>_reactions.csv |
|
||||
| internal force | /steps/<step>/frames/<frame>/field_outputs/element_forces | reference/<model-id>/<model-id>_internalforces.csv |
|
||||
| stress | /steps/<step>/frames/<frame>/field_outputs/S | reference/<model-id>/<model-id>_stresses.csv |
|
||||
|
||||
기본 deterministic CSV view:
|
||||
- `csv/displacements.csv`: nodal displacement
|
||||
- `csv/reactions.csv`: nodal reaction force
|
||||
- `csv/element_forces.csv`: element internal force
|
||||
- `csv/stresses.csv`: element stress
|
||||
|
||||
선택 deterministic CSV view:
|
||||
- `csv/strains.csv`: strain이 acceptance criteria에 포함된 경우
|
||||
- `csv/energy_or_residual.csv`: energy, residual, convergence quantity가 acceptance criteria에 포함된 경우
|
||||
선택 Abaqus reference CSV:
|
||||
- `reference/<model-id>/<model-id>_strains.csv`: strain이 acceptance criteria에 포함된 경우
|
||||
- `reference/<model-id>/<model-id>_energy_or_residual.csv`: energy, residual, convergence quantity가 acceptance criteria에 포함된 경우
|
||||
- `reference/<model-id>/<model-id>_<quantity>.csv`: feature-specific quantity가 acceptance criteria에 포함된 경우
|
||||
|
||||
## Failure Classification
|
||||
|
||||
- `missing-reference-artifact`: required stored reference file 또는 provenance가 없다.
|
||||
- `missing-reference-artifact`: required Abaqus reference CSV file 또는 provenance가 없다.
|
||||
- `missing-solver-output`: generated solver `results.h5` 또는 comparison command가 없다.
|
||||
- `schema-mismatch`: reference HDF5, solver HDF5, 또는 deterministic CSV view schema가 다르다.
|
||||
- `schema-mismatch`: FESA HDF5 또는 reference CSV row schema가 다르다.
|
||||
- `id-mismatch`: node id, element id, step/frame, integration point, component matching이 실패했다.
|
||||
- `unit-or-coordinate-mismatch`: units 또는 coordinate system이 비교 가능하지 않다.
|
||||
- `tolerance-failure`: schema와 matching은 유효하지만 error가 tolerance를 초과했다.
|
||||
@@ -99,34 +100,37 @@ Authoritative 비교 대상:
|
||||
|
||||
| item | path | status | notes |
|
||||
| --- | --- | --- | --- |
|
||||
| reference_bundle | references/<feature-id>/<model-id>/ | present | missing | <notes> |
|
||||
| metadata | references/<feature-id>/<model-id>/metadata.json | present | missing | <provenance summary> |
|
||||
| reference_hdf5 | references/<feature-id>/<model-id>/reference.h5 | present | missing | <schema summary> |
|
||||
| reference_csv_views | references/<feature-id>/<model-id>/csv/ | present | missing | <view inventory> |
|
||||
| reference_model_dir | reference/<model-id>/ | present | missing | <notes> |
|
||||
| reference_input | reference/<model-id>/model.inp | present | missing | <input summary> |
|
||||
| metadata | reference/<model-id>/metadata.json | present | missing | <provenance summary> |
|
||||
| reference_displacements_csv | reference/<model-id>/<model-id>_displacements.csv | present | missing | <row/schema summary> |
|
||||
| reference_reactions_csv | reference/<model-id>/<model-id>_reactions.csv | present | missing | <row/schema summary> |
|
||||
| reference_internalforces_csv | reference/<model-id>/<model-id>_internalforces.csv | present | missing | <row/schema summary> |
|
||||
| reference_stresses_csv | reference/<model-id>/<model-id>_stresses.csv | present | missing | <row/schema summary> |
|
||||
| solver_hdf5 | <solver output directory>/results.h5 | present | missing | <schema summary> |
|
||||
| solver_csv_views | <solver output directory>/csv/ | present | missing | <view inventory or N/A> |
|
||||
| solver_debug_csv_view | <solver output directory>/csv/ | present | missing | <optional, derived from results.h5 only> |
|
||||
|
||||
## Comparison Contract
|
||||
- hdf5_schema_version: <version>
|
||||
- csv_view_schema_version: <version>
|
||||
- reference_csv_schema_version: <version>
|
||||
- id_matching: node_id | element_id | step/frame | integration_point | component
|
||||
- units: <unit system>
|
||||
- coordinate_system: <global/local convention>
|
||||
- output_location: nodal | element | integration_point | centroid | recovery_location
|
||||
- component_naming: <component naming policy>
|
||||
- csv_view_sort_order: <step, frame, id, location, component order>
|
||||
- row_sort_order: <step, frame, id, location, component order>
|
||||
- tolerance_source: <requirement/reference model/I/O document>
|
||||
- tolerance_policy: absolute | relative | norm-based | combined
|
||||
- zero_reference_policy: <policy or N/A>
|
||||
|
||||
## Quantity Results
|
||||
|
||||
| quantity | model_id | hdf5_dataset | csv_view | compared_rows | missing_rows | extra_rows | max_abs_error | max_rel_error | rms_error | norm_error | worst_id | worst_component | result |
|
||||
| quantity | model_id | fesa_hdf5_dataset | reference_csv | compared_rows | missing_rows | extra_rows | max_abs_error | max_rel_error | rms_error | norm_error | worst_id | worst_component | result |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| displacement | <model-id> | <dataset path> | csv/displacements.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <node id> | <component> | pass | fail |
|
||||
| reaction | <model-id> | <dataset path> | csv/reactions.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <node id> | <component> | pass | fail |
|
||||
| element force | <model-id> | <dataset path> | csv/element_forces.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <element id> | <component> | pass | fail |
|
||||
| stress | <model-id> | <dataset path> | csv/stresses.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <element/ip id> | <component> | pass | fail |
|
||||
| displacement | <model-id> | /steps/<step>/frames/<frame>/field_outputs/U | reference/<model-id>/<model-id>_displacements.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <node id> | <component> | pass | fail |
|
||||
| reaction | <model-id> | /steps/<step>/frames/<frame>/field_outputs/RF | reference/<model-id>/<model-id>_reactions.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <node id> | <component> | pass | fail |
|
||||
| internal force | <model-id> | /steps/<step>/frames/<frame>/field_outputs/element_forces | reference/<model-id>/<model-id>_internalforces.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <element id> | <component> | pass | fail |
|
||||
| stress | <model-id> | /steps/<step>/frames/<frame>/field_outputs/S | reference/<model-id>/<model-id>_stresses.csv | <n> | <n> | <n> | <value> | <value> | <value> | <value or N/A> | <element/ip id> | <component> | pass | fail |
|
||||
|
||||
## Failure Classification
|
||||
- classification: missing-reference-artifact | missing-solver-output | schema-mismatch | id-mismatch | unit-or-coordinate-mismatch | tolerance-failure | nonfinite-result | upstream-contract | environment | N/A
|
||||
@@ -139,7 +143,7 @@ Authoritative 비교 대상:
|
||||
| --- | --- | --- |
|
||||
| Correction Agent | <implementation-owned mismatch or nonfinite result> | <comparison metrics and failing quantity> |
|
||||
| Reference Model Agent | <missing or invalid reference artifact/provenance> | <artifact inventory> |
|
||||
| I/O Definition Agent | <HDF5 schema, CSV view schema, units, coordinate, output location mismatch> | <contract mismatch> |
|
||||
| I/O Definition Agent | <FESA HDF5 schema, reference CSV schema, units, coordinate, output location mismatch> | <contract mismatch> |
|
||||
| Physics Evaluation Agent | <reference comparisons passed> | <quantity results and report> |
|
||||
| Coordinator Agent | <blocked or repeated ambiguity> | <classification and open issue> |
|
||||
|
||||
@@ -159,17 +163,17 @@ Authoritative 비교 대상:
|
||||
|
||||
- `pass-for-physics-evaluation`: required reference comparisons가 모두 통과했고 Physics Evaluation Agent로 넘길 수 있다.
|
||||
- `needs-correction`: implementation-owned solver result mismatch 또는 nonfinite result가 있다.
|
||||
- `needs-reference-artifacts`: required reference artifact 또는 provenance가 누락됐다.
|
||||
- `needs-reference-artifacts`: required Abaqus reference CSV 또는 provenance가 누락됐다.
|
||||
- `needs-solver-results`: generated solver `results.h5` 또는 comparison command가 없다.
|
||||
- `needs-upstream-decision`: schema, tolerance, units, coordinate system, output location, ID matching policy가 누락 또는 충돌한다.
|
||||
- `blocked`: 사용자 또는 Coordinator Agent 결정 없이는 안전하게 진행할 수 없다.
|
||||
|
||||
## 품질 기준
|
||||
|
||||
- 모든 `must` requirement의 reference-comparison 항목은 model id, compared quantity, HDF5 dataset, CSV view, tolerance에 trace되어야 한다.
|
||||
- reference artifact는 읽기 전용이다. `model.inp`, `metadata.json`, `reference.h5`, `csv/*.csv`를 수정하지 않는다.
|
||||
- `results.h5`와 `reference.h5`가 authoritative 비교 입력이다.
|
||||
- deterministic CSV view는 행 정렬과 사람이 검토 가능한 비교 view일 뿐이며 tolerance에 맞추기 위해 후처리 보정하지 않는다.
|
||||
- 모든 `must` requirement의 reference-comparison 항목은 model id, compared quantity, FESA HDF5 dataset, reference CSV, tolerance에 trace되어야 한다.
|
||||
- reference artifact는 읽기 전용이다. `model.inp`, `metadata.json`, `reference/<model-id>/<model-id>_*.csv`를 수정하지 않는다.
|
||||
- FESA `results.h5`가 authoritative solver output이고 Abaqus reference CSV files가 authoritative reference result다.
|
||||
- solver debug CSV view는 행 정렬과 사람이 검토 가능한 비교 view일 뿐이며 tolerance에 맞추기 위해 후처리 보정하지 않는다.
|
||||
- stress/strain은 element id, integration point 또는 recovery location, component naming이 일치할 때만 비교한다.
|
||||
- nodal displacement/reaction은 node id, DOF/component, coordinate system, unit이 일치할 때만 비교한다.
|
||||
- missing rows와 extra rows를 숨기지 않고 보고한다.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
이 디렉터리는 Release Agent가 작성하거나 제안하는 기능별 release readiness report를 보관하는 위치다.
|
||||
|
||||
Release Agent는 Physics Evaluation Agent가 `pass-for-release-agent`로 넘긴 기능에 대해 최종 gate evidence를 감사한다. 이 Agent는 source code, tests, CMake, upstream 계약, reference artifacts, tolerance policies를 수정하지 않는다. 또한 Abaqus/Nastran 실행, reference HDF5/CSV view 생성, 외부 publish/deploy/package/tag/commit 작업을 수행하지 않는다.
|
||||
Release Agent는 Physics Evaluation Agent가 `pass-for-release-agent`로 넘긴 기능에 대해 최종 gate evidence를 감사한다. 이 Agent는 source code, tests, CMake, upstream 계약, reference artifacts, tolerance policies를 수정하지 않는다. 또한 Abaqus/Nastran 실행, Abaqus reference CSV 생성 또는 수정, 외부 publish/deploy/package/tag/commit 작업을 수행하지 않는다.
|
||||
|
||||
기본 문서명은 `docs/releases/<feature-id>-release.md` 형식을 사용한다.
|
||||
|
||||
@@ -24,7 +24,7 @@ Release Agent는 Physics Evaluation Agent가 `pass-for-release-agent`로 넘긴
|
||||
- requirements, formulations, I/O contracts, numerical review reports, reference verification reports, physics evaluation reports를 수정하지 않는다.
|
||||
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
|
||||
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- 실패하거나 누락된 upstream gate를 우회하지 않는다.
|
||||
- 사용자 명시 요청 없이 publish, deploy, package, tag, commit, external release를 수행하지 않는다.
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Requirement Agent는 솔버 기능 요청을 검증 가능한 요구조건으로
|
||||
- 유한요소 정식화를 확정하지 않는다.
|
||||
- C++ API나 파일 구조를 설계하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- 기능 완료 여부를 승인하지 않는다.
|
||||
|
||||
## 문서 템플릿
|
||||
@@ -74,15 +74,14 @@ Requirement Agent는 솔버 기능 요청을 검증 가능한 요구조건으로
|
||||
- norm_based_tolerance: <value or TBD>
|
||||
|
||||
## Reference Artifact Requirements
|
||||
Expected location: `references/<feature-id>/`
|
||||
Expected location: `reference/<model-id>/`
|
||||
|
||||
- `model.inp`: required | not-applicable
|
||||
- `metadata.json`: required
|
||||
- `reference.h5`: required | not-applicable
|
||||
- `csv/displacements.csv`: required | not-applicable
|
||||
- `csv/reactions.csv`: required | not-applicable
|
||||
- `csv/element_forces.csv`: required | not-applicable
|
||||
- `csv/stresses.csv`: required | not-applicable
|
||||
- `<model-id>_displacements.csv`: required | not-applicable
|
||||
- `<model-id>_reactions.csv`: required | not-applicable
|
||||
- `<model-id>_internalforces.csv`: required | not-applicable
|
||||
- `<model-id>_stresses.csv`: required | not-applicable
|
||||
|
||||
## Requirement Verification Matrix
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Research Agent는 FEM 이론, benchmark, verification reference, solver manual,
|
||||
- 유한요소 정식화를 확정하지 않는다.
|
||||
- C++ API나 파일 구조를 설계하지 않는다.
|
||||
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
|
||||
- reference HDF5 파일이나 deterministic CSV view를 생성하지 않는다.
|
||||
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
|
||||
- 기능 완료 여부를 승인하지 않는다.
|
||||
|
||||
## Source Reliability Tier
|
||||
|
||||
Reference in New Issue
Block a user