feat(linear-static-mitc4-shell): step 4 - mitc4-stiffness-drilling

This commit is contained in:
KOKO\Mimi
2026-08-12 19:54:27 +09:00
parent 33d039bb73
commit 1a6a9bfc71
3 changed files with 620 additions and 6 deletions
+17 -3
View File
@@ -5,6 +5,7 @@
#include "fesa/model/model_types.hpp"
#include <array>
#include <string>
namespace fesa {
@@ -30,8 +31,16 @@ struct Mitc4QuadraturePoint {
double weight;
};
// Concrete small-rotation MITC4 kinematics and material value kernel. Global
// equation ownership, drilling stiffness, recovery, and assembly remain outside.
struct Mitc4Stiffness {
Matrix physicalLocal20;
Matrix physicalGlobal24;
Matrix drillingGlobal24;
Matrix stabilizedGlobal24;
double drillingStiffness;
};
// Concrete small-rotation MITC4 kinematics, constitutive, and stiffness kernel.
// Global equation ownership, physical recovery, and assembly remain outside.
class Mitc4Shell {
public:
static Result<Mitc4Shell> create(
@@ -63,6 +72,7 @@ public:
[[nodiscard]] Matrix membraneSectionMatrix() const;
[[nodiscard]] Matrix bendingSectionMatrix() const;
[[nodiscard]] Matrix transverseShearSectionMatrix() const;
[[nodiscard]] Result<Mitc4Stiffness> stiffness() const;
private:
using Vector3 = std::array<double, 3>;
@@ -82,7 +92,9 @@ private:
Vector3 normalCandidate,
double thickness,
double youngsModulus,
double poissonRatio);
double poissonRatio,
SourceLocation sourceLocation,
std::string identity);
bool evaluateGeometry(
double xi,
@@ -107,6 +119,8 @@ private:
double thickness_;
double youngsModulus_;
double poissonRatio_;
SourceLocation sourceLocation_;
std::string identity_;
};
} // namespace fesa