Files
2026-07-29 23:32:26 +09:00

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

검증 절차

  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 밖이다.