2.0 KiB
2.0 KiB
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를 구현한다.
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
cmake --build --preset windows-debug
ctest --preset windows-debug -R "Beam3D2|Timoshenko|RigidBody" --output-on-failure
ctest --preset windows-debug --output-on-failure
검증 절차
- 정식화 문서를 production code보다 먼저 확정한다.
- 실패 테스트를 실행해 가짜 matrix로 통과하지 않음을 확인한다.
- 최소 kernel을 구현하고 focused/full test를 실행한다.
- 식과 코드의 DOF/component 순서를 대조하고 index를 갱신한다.
금지사항
- 닫힌형 가짜 stiffness를 임시로 넣지 마라. 이유: 파이프라인 수치 신뢰성을 훼손한다.
- shear term을 2점 적분하지 마라. 이유: 승인된 selective integration과 다르다.
- 비선형, 워핑, offset 또는 (I_{yz})를 추가하지 마라. 이유: Phase 1 밖이다.