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:
@@ -395,6 +395,8 @@ TEST(ElementFactory, SolidBindingPreservesThreeComponentsAndReferenceMass) {
|
||||
EXPECT_EQ(stiffness.Value().values.Rows(), 24U);
|
||||
auto mass = solid->ComputeMass();
|
||||
ASSERT_TRUE(mass.HasValue());
|
||||
ASSERT_EQ(mass.Value().values.Rows(), 24U);
|
||||
ASSERT_EQ(mass.Value().values.Columns(), 24U);
|
||||
double total_mass = 0.0;
|
||||
for (std::size_t a = 0U; a < 8U; ++a) {
|
||||
for (std::size_t b = 0U; b < 8U; ++b) {
|
||||
@@ -402,7 +404,14 @@ TEST(ElementFactory, SolidBindingPreservesThreeComponentsAndReferenceMass) {
|
||||
}
|
||||
}
|
||||
EXPECT_NEAR(total_mass, 2.0, 1.0e-13);
|
||||
EXPECT_NEAR(mass.Value().values(0U, 3U), 2.0 / 54.0, 1.0e-15);
|
||||
for (std::size_t row = 0U; row < 24U; ++row) {
|
||||
for (std::size_t column = 0U; column < 24U; ++column) {
|
||||
if (row == column)
|
||||
EXPECT_NEAR(mass.Value().values(row, column), 0.25, 1.0e-15);
|
||||
else
|
||||
EXPECT_DOUBLE_EQ(mass.Value().values(row, column), 0.0);
|
||||
}
|
||||
}
|
||||
auto response = solid->EvaluateLinear(fesa::Vector{24U});
|
||||
ASSERT_TRUE(response.HasValue());
|
||||
for (std::size_t point = 0U; point < 8U; ++point) {
|
||||
|
||||
Reference in New Issue
Block a user