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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user