feat(linear-static-mitc4-shell): step 5 - mitc4-physical-recovery

This commit is contained in:
KOKO\Mimi
2026-08-12 20:02:04 +09:00
parent 3110365696
commit 52d595f319
3 changed files with 278 additions and 2 deletions
+18 -2
View File
@@ -2,6 +2,7 @@
#include "fesa/core/status.hpp"
#include "fesa/math/matrix.hpp"
#include "fesa/math/vector.hpp"
#include "fesa/model/model_types.hpp"
#include <array>
@@ -39,8 +40,21 @@ struct Mitc4Stiffness {
double drillingStiffness;
};
// Concrete small-rotation MITC4 kinematics, constitutive, and stiffness kernel.
// Global equation ownership, physical recovery, and assembly remain outside.
struct Mitc4PhysicalRecoveryPoint {
std::array<double, 2> naturalCoordinates;
Mitc4LocalFrame localFrame;
std::array<double, 8> generalizedStrain;
std::array<double, 8> sectionResultant;
std::array<std::array<double, 3>, 3> inPlaneStress;
};
struct Mitc4PhysicalRecovery {
std::array<Mitc4PhysicalRecoveryPoint, 4> points;
double strainEnergy;
};
// Concrete small-rotation MITC4 kinematics, constitutive, stiffness, and
// physical-only recovery kernel. Global equation/result ownership remains outside.
class Mitc4Shell {
public:
static Result<Mitc4Shell> create(
@@ -73,6 +87,8 @@ public:
[[nodiscard]] Matrix bendingSectionMatrix() const;
[[nodiscard]] Matrix transverseShearSectionMatrix() const;
[[nodiscard]] Result<Mitc4Stiffness> stiffness() const;
[[nodiscard]] Result<Mitc4PhysicalRecovery> recoverPhysical(
const Vector& globalElementDisplacement24) const;
private:
using Vector3 = std::array<double, 3>;