feat: adopt lumped mass and reduced-coordinate shell HHT

Integrate Hex8 mass verification and fixed-null-basis shell dynamics with numerical and physics handoff evidence. Preserve interrupted reference and full-validation status; full integration validation is deferred until after performance optimization.
This commit is contained in:
KOKO\Mimi
2026-10-13 16:57:19 +09:00
parent ede137c6b4
commit eaa5cbeb21
110 changed files with 15274 additions and 971 deletions
@@ -2,6 +2,7 @@
#define FESA_ELEMENTS_NONLINEAR_MITC4_SHELL_H_
#include <array>
#include <cstddef>
#include <string>
#include "fesa/core/status.h"
@@ -53,6 +54,22 @@ struct NonlinearMitc4InternalEquilibrium {
Matrix drilling_constraint_gradient{0U, 0U};
std::array<Matrix, 4> drilling_constraint_hessian{
Matrix{0U, 0U}, Matrix{0U, 0U}, Matrix{0U, 0U}, Matrix{0U, 0U}};
std::array<Vector, 4> drilling_constraint_third_directional_gradient{
Vector{0U}, Vector{0U}, Vector{0U}, Vector{0U}};
};
/// @brief Stores one nodal external drilling-null scalar and its variations.
/// @note The scalar is `-n(phi)^T F`, where `n` is the normalized physical
/// drill-null direction. Directional fields use `W=(phi_dot, 1)` and include
/// the supplied force time derivatives.
struct NonlinearMitc4ExternalDrillingConstraint {
double value = 0.0;
Vector gradient{0U};
Matrix hessian{0U, 0U};
double directional_first = 0.0;
double directional_second = 0.0;
Vector gradient_directional_first{0U};
Vector gradient_directional_second{0U};
};
class NonlinearMitc4Shell;
@@ -95,6 +112,22 @@ class NonlinearMitc4Shell {
[[nodiscard]] Result<NonlinearMitc4Recovery> RecoverState(
const NonlinearMitc4TrialDofs& trial) const;
/// @brief Evaluates the external nodal drill-null scalar through W.
/// @param node Source-local node index in `[0, 4)`.
/// @param phi Fixed-global principal-chart rotation in radians.
/// @param phi_dot Fixed-global chart rate in radians per time.
/// @param force Nodal external generalized moment.
/// @param force_rate First time derivative of force.
/// @param force_acceleration Second time derivative of force.
/// @return The scalar `-n(phi)^T force` and exact coordinate/time
/// derivatives, or a fail-closed diagnostic.
[[nodiscard]] Result<NonlinearMitc4ExternalDrillingConstraint>
EvaluateExternalDrillingConstraint(std::size_t node, const Vector3& phi,
const Vector3& phi_dot,
const Vector3& force,
const Vector3& force_rate,
const Vector3& force_acceleration) const;
private:
/// @brief Retains validated fixed-reference data without analysis ownership.
NonlinearMitc4Shell(std::array<Vector3, 4> coordinates,