add uncommitted files
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Step 3: Timoshenko Stiffness Kernel
|
||||
|
||||
## 읽어야 할 파일
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PRD.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/superpowers/plans/2026-07-29-fesa-phase-1.md`
|
||||
- `/include/fesa/fem/`
|
||||
- `/include/fesa/model/material.hpp`
|
||||
- `/include/fesa/model/beam_section.hpp`
|
||||
- `/docs/formulation/timoshenko-beam-3d.md`가 있으면 전체
|
||||
|
||||
## 작업
|
||||
|
||||
먼저 `docs/formulation/timoshenko-beam-3d.md`에 자유도 순서, 변형률, 부호,
|
||||
constitutive matrix, Jacobian과 선택적 감차적분 식을 작성한다. 그 식으로 실제
|
||||
2절점 3D isoparametric Timoshenko Beam stiffness를 구현한다.
|
||||
|
||||
```cpp
|
||||
struct Beam3D2Input final {
|
||||
std::array<Vec3, 2> coordinates;
|
||||
IsotropicElastic material;
|
||||
BeamSection section;
|
||||
};
|
||||
struct Beam3D2Contribution final {
|
||||
Matrix12 local_stiffness;
|
||||
Matrix12 global_stiffness;
|
||||
BeamFrame frame;
|
||||
};
|
||||
[[nodiscard]] BeamKernelResult compute_beam3d2(const Beam3D2Input&);
|
||||
```
|
||||
|
||||
- 축·굽힘·비틀림은 2점, 전단은 1점 Gauss 적분한다.
|
||||
- \(G=E/[2(1+\nu)]\)를 사용한다.
|
||||
- 먼저 대칭성, 강체운동 zero energy, 축/비틀림/굽힘 해석해, shear-dominant,
|
||||
세장비 sweep과 좌표회전 invariant 테스트를 실패시킨다.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
cmake --build --preset windows-debug
|
||||
ctest --preset windows-debug -R "Beam3D2|Timoshenko|RigidBody" --output-on-failure
|
||||
ctest --preset windows-debug --output-on-failure
|
||||
```
|
||||
|
||||
## 검증 절차
|
||||
|
||||
1. 정식화 문서를 production code보다 먼저 확정한다.
|
||||
2. 실패 테스트를 실행해 가짜 matrix로 통과하지 않음을 확인한다.
|
||||
3. 최소 kernel을 구현하고 focused/full test를 실행한다.
|
||||
4. 식과 코드의 DOF/component 순서를 대조하고 index를 갱신한다.
|
||||
|
||||
## 금지사항
|
||||
|
||||
- 닫힌형 가짜 stiffness를 임시로 넣지 마라. 이유: 파이프라인 수치 신뢰성을 훼손한다.
|
||||
- shear term을 2점 적분하지 마라. 이유: 승인된 selective integration과 다르다.
|
||||
- 비선형, 워핑, offset 또는 \(I_{yz}\)를 추가하지 마라. 이유: Phase 1 밖이다.
|
||||
Reference in New Issue
Block a user