add uncommitted files
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"project": "FESA",
|
||||
"phase": "result-contract-completion",
|
||||
"steps": [
|
||||
{
|
||||
"step": 0,
|
||||
"name": "beam-element-end-recovery",
|
||||
"status": "pending"
|
||||
},
|
||||
{
|
||||
"step": 1,
|
||||
"name": "complete-result-contract",
|
||||
"status": "pending"
|
||||
},
|
||||
{
|
||||
"step": 2,
|
||||
"name": "self-contained-hdf5",
|
||||
"status": "pending"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
# Step 0: Beam Element-end Recovery
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PRD.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/formulation/timoshenko-beam-3d.md`
|
||||
- `/include/fesa/elements/beam/beam3d2.hpp`
|
||||
- `/include/fesa/model/beam_section.hpp`
|
||||
|
||||
## 작업
|
||||
|
||||
요소 양 끝 절점에서 section strain/resultant, 도심 응력과 선택 회복점 축응력을
|
||||
계산한다.
|
||||
|
||||
```cpp
|
||||
struct BeamSectionResult final {
|
||||
double xi;
|
||||
NodeId end_node;
|
||||
std::array<double, 6> section_strain;
|
||||
std::array<double, 6> section_force;
|
||||
double centroid_sigma_xx;
|
||||
std::vector<double> sigma_xx;
|
||||
};
|
||||
[[nodiscard]] std::vector<BeamSectionResult> recover_beam3d2(
|
||||
const Beam3D2Input&,
|
||||
std::span<const double, 12> element_displacement,
|
||||
std::span<const std::array<double, 2>> recovery_points);
|
||||
```
|
||||
|
||||
- component 순서는 \(N,V_y,V_z,T,M_y,M_z\)다.
|
||||
- `centroid_sigma_xx=N/A`; 회복점은 axial+bending \(\sigma_{xx}\)만 계산한다.
|
||||
- 순수 축/비틀림/각 축 굽힘/이축 굽힘, 양 끝 부호, 회복점 순서를 먼저 테스트한다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
cmake --build --preset windows-debug
|
||||
ctest --preset windows-debug -R "BeamRecovery|CentroidStress|SectionForce" --output-on-failure
|
||||
ctest --preset windows-debug --output-on-failure
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. hand-calculated recovery test 실패를 확인한다.
|
||||
2. stiffness와 같은 frame/부호 convention을 재사용한다.
|
||||
3. 도심에서 bending contribution이 0인지 확인한다.
|
||||
4. 전체 테스트와 index를 갱신한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- point shear/torsional stress를 출력하지 마라. 이유: 단면 형상 정보가 부족하다.
|
||||
- Abaqus column 이름을 element kernel에 넣지 마라. 이유: validation adapter 책임이다.
|
||||
- 절점별 내력 부호를 임의 절댓값으로 바꾸지 마라. 이유: 평형 검증을 깨뜨린다.
|
||||
@@ -0,0 +1,55 @@
|
||||
# Step 1: Complete Result Contract
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PRD.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/include/fesa/results/result_database.hpp`
|
||||
- `/include/fesa/elements/beam/beam3d2.hpp`
|
||||
- `/include/fesa/model/entity_origin.hpp`
|
||||
|
||||
## 작업
|
||||
|
||||
ResultDatabase에 element-end Beam 결과, local frame, model provenance와 diagnostics를
|
||||
추가한다.
|
||||
|
||||
```cpp
|
||||
struct BeamElementFrame final {
|
||||
ElementId element;
|
||||
EntityOrigin origin;
|
||||
BeamFrame local_frame;
|
||||
std::array<BeamSectionResult, 2> end_results;
|
||||
};
|
||||
struct ElementFrame final {
|
||||
std::vector<BeamElementFrame> beams;
|
||||
};
|
||||
```
|
||||
|
||||
- `ResultFrame`에 `ElementFrame element`를 추가한다.
|
||||
- node/element origin, field coordinate system, component labels와 ordering을 명시한다.
|
||||
- duplicate element/end node, wrong connectivity, nonfinite result, mismatched recovery
|
||||
point count를 실패 테스트로 먼저 작성한다.
|
||||
- LinearStaticAnalysis가 production recovery를 호출해 ResultDatabase를 채우게 한다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
cmake --build --preset windows-debug
|
||||
ctest --preset windows-debug -R "CompleteResultContract|ElementFrame" --output-on-failure
|
||||
ctest --preset windows-debug --output-on-failure
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. result validation과 analysis integration test 실패를 확인한다.
|
||||
2. 의미 타입과 orchestration만 수정한다.
|
||||
3. element-end/node connectivity와 origin 보존을 assertion한다.
|
||||
4. 전체 테스트와 index를 갱신한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- CSV-specific field를 ResultDatabase에 넣지 마라. 이유: 결과 semantic 모델을 오염시킨다.
|
||||
- history/velocity를 빈 구조로 추가하지 마라. 이유: Phase 1에서 사용하지 않는다.
|
||||
- recovery를 analysis 코드에 복제하지 마라. 이유: element kernel 계약을 재사용해야 한다.
|
||||
@@ -0,0 +1,47 @@
|
||||
# Step 2: Self-contained HDF5
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PRD.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/HDF5_SCHEMA.md`
|
||||
- `/include/fesa/results/result_database.hpp`
|
||||
- `/include/fesa/io/hdf5/`
|
||||
|
||||
## 작업
|
||||
|
||||
HDF5 schema와 reader/writer를 완성해 파일 하나로 모델·설정·전체 Phase 1 결과를
|
||||
재구성할 수 있게 한다.
|
||||
|
||||
- model: coordinates, connectivity, Part/Instance/local labels, sets, materials,
|
||||
sections, orientation, applied shear values와 input/default source
|
||||
- analysis: single step, BC, load, solver settings
|
||||
- results: nodal displacement/reaction, Beam local frame, 양 끝 section
|
||||
strain/force, centroid `Sxx`, recovery-point `Sxx`, diagnostics
|
||||
- `docs/HDF5_SCHEMA.md`의 dataset rank/type/component/coordinate attribute를 먼저
|
||||
갱신한다.
|
||||
- public reader만으로 모든 항목을 재구성하는 실패 통합 테스트를 작성한다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
cmake --build --preset windows-debug
|
||||
ctest --preset windows-debug -R SelfContainedHdf5 --output-on-failure
|
||||
h5ls -r .\out\build\windows-debug\Testing\Temporary\fesa-self-contained.h5
|
||||
ctest --preset windows-debug --output-on-failure
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. complete schema round-trip test 실패를 확인한다.
|
||||
2. schema version 호환성 규칙을 문서와 코드에 함께 반영한다.
|
||||
3. public reader와 h5ls로 구조를 독립 확인한다.
|
||||
4. 전체 테스트와 index를 갱신한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- 원본 `.inp` 경로만 저장하고 모델 데이터를 생략하지 마라. 이유: 자기완결 계약이다.
|
||||
- HDF5 object를 result model에 노출하지 마라. 이유: adapter 경계를 깨뜨린다.
|
||||
- schema를 무버전 변경하지 마라. 이유: reader 호환성을 잃는다.
|
||||
Reference in New Issue
Block a user