#pragma once #include namespace fesa::elements { using Vector12 = std::array; using Matrix12 = std::array; struct EulerBeam3DSection { double young_modulus; double shear_modulus; double area; double torsion_constant; double second_moment_y; double second_moment_z; }; Matrix12 euler_beam_3d_local_stiffness(double length, const EulerBeam3DSection& section); Vector12 euler_beam_3d_local_end_forces(double length, const EulerBeam3DSection& section, const Vector12& local_displacements); } // namespace fesa::elements