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
@@ -140,6 +140,23 @@ fesa::DynamicAcceptedFrameState MakeFrame(const fesa::Domain& domain,
return frame;
}
TEST(DynamicAnalysisState, RejectsUnknownOrChangingIntegrationFormulation) {
auto fixture = MakeFixture();
auto initial = MakeFrame(*fixture.domain, 0U);
initial.time_integration_formulation =
static_cast<fesa::DynamicTimeIntegrationFormulation>(99);
EXPECT_FALSE(fixture.state.CommitAcceptedFrame(initial).IsOk());
EXPECT_TRUE(fixture.state.AcceptedFrames().empty());
initial.time_integration_formulation =
fesa::DynamicTimeIntegrationFormulation::kReducedCoordinateHht;
ASSERT_TRUE(fixture.state.CommitAcceptedFrame(initial).IsOk());
auto next = MakeFrame(*fixture.domain, 1U);
EXPECT_FALSE(fixture.state.CommitAcceptedFrame(next).IsOk());
EXPECT_EQ(fixture.state.AcceptedFrames().size(), 1U);
next.time_integration_formulation = initial.time_integration_formulation;
EXPECT_TRUE(fixture.state.CommitAcceptedFrame(next).IsOk());
}
TEST(DynamicAnalysisState, DefaultStateRejectsTrialAndCommit) {
fesa::DynamicAnalysisState state;
EXPECT_FALSE(state.IsInitialized());