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