add uncommitted files

This commit is contained in:
KOKO\Mimi
2026-07-29 23:32:26 +09:00
parent fb0f8f39a0
commit f5379472ce
80 changed files with 7461 additions and 1 deletions
@@ -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 호환성을 잃는다.