feat(cpp-object-oriented-modular-refactoring): step 18 - load-hierarchy

This commit is contained in:
KOKO\Mimi
2026-08-16 10:56:57 +09:00
parent 08d352ae46
commit 9ad72e6d21
18 changed files with 705 additions and 137 deletions
+40 -32
View File
@@ -285,23 +285,23 @@ TEST(InpDomainMapping, MapsEverySupportedKeywordAndLegacyDeck) {
EXPECT_EQ(domain.BeamElements()[0U].material_index, 0U);
EXPECT_EQ(domain.BeamElements()[0U].section_index, 0U);
ASSERT_EQ(domain.Steps().size(), 1U);
ASSERT_EQ(domain.Steps().Size(), 1U);
const auto& step = domain.Steps()[0];
EXPECT_EQ(step.name, "Step-1");
EXPECT_DOUBLE_EQ(step.initial_increment, 0.25);
EXPECT_DOUBLE_EQ(step.time_period, 1.5);
EXPECT_DOUBLE_EQ(step.minimum_increment, 0.01);
EXPECT_DOUBLE_EQ(step.maximum_increment, 1.5);
ASSERT_EQ(step.boundaries.size(), 2U);
EXPECT_EQ(step.boundaries[0].target, "rootassembly");
EXPECT_EQ(step.boundaries[0].first_dof, 1);
EXPECT_DOUBLE_EQ(step.boundaries[0].value, 0.125);
EXPECT_EQ(step.boundaries[1].last_dof, 2);
EXPECT_DOUBLE_EQ(step.boundaries[1].value, 0.0);
ASSERT_EQ(step.loads.size(), 1U);
EXPECT_EQ(step.loads[0].target, "RootAssembly");
EXPECT_EQ(step.loads[0].dof, 6);
EXPECT_DOUBLE_EQ(step.loads[0].magnitude, -12.5);
EXPECT_EQ(step.Name(), "Step-1");
EXPECT_DOUBLE_EQ(step.InitialIncrement(), 0.25);
EXPECT_DOUBLE_EQ(step.TimePeriod(), 1.5);
EXPECT_DOUBLE_EQ(step.MinimumIncrement(), 0.01);
EXPECT_DOUBLE_EQ(step.MaximumIncrement(), 1.5);
ASSERT_EQ(step.Boundaries().size(), 2U);
EXPECT_EQ(step.Boundaries()[0].target, "rootassembly");
EXPECT_EQ(step.Boundaries()[0].first_dof, 1);
EXPECT_DOUBLE_EQ(step.Boundaries()[0].value, 0.125);
EXPECT_EQ(step.Boundaries()[1].last_dof, 2);
EXPECT_DOUBLE_EQ(step.Boundaries()[1].value, 0.0);
ASSERT_EQ(step.ConcentratedLoads().Size(), 1U);
EXPECT_EQ(step.ConcentratedLoads()[0U].Target().target_name_or_label,
"RootAssembly");
EXPECT_DOUBLE_EQ(step.ConcentratedLoads()[0U].GlobalComponents()[5U], -12.5);
EXPECT_EQ(domain.Warnings().size(), 8U);
const auto legacy_path = RepositoryRoot() / "reference" / "cantilever beam" /
@@ -316,7 +316,7 @@ TEST(InpDomainMapping, MapsEverySupportedKeywordAndLegacyDeck) {
EXPECT_EQ(legacy.Value().Elements().Size(), 10U);
EXPECT_EQ(legacy.Value().Materials().Size(), 1U);
EXPECT_EQ(legacy.Value().Sections().Size(), 1U);
EXPECT_EQ(legacy.Value().Steps().size(), 1U);
EXPECT_EQ(legacy.Value().Steps().Size(), 1U);
EXPECT_EQ(legacy.Value().Warnings().size(), 7U);
EXPECT_EQ(ReadExactBytes(legacy_path), bytes_before);
EXPECT_EQ(std::filesystem::last_write_time(legacy_path), timestamp_before);
@@ -410,17 +410,24 @@ OnlySecond, 2, 5.
EXPECT_EQ(domain.ElementSets()[2].element_indices,
(std::vector<fesa::EntityIndex>{1U}));
ASSERT_EQ(domain.Steps().size(), 1U);
EXPECT_EQ(domain.Steps()[0].boundaries[0].target, "OnlySecond");
EXPECT_EQ(domain.Steps()[0].loads[0].target, "OnlySecond");
ASSERT_EQ(domain.Steps().Size(), 1U);
EXPECT_EQ(domain.Steps()[0].Boundaries()[0].target, "OnlySecond");
EXPECT_EQ(
domain.Steps()[0].ConcentratedLoads()[0U].Target().target_name_or_label,
"OnlySecond");
auto direct =
MapText("direct-node-labels",
ReplaceOnce(ReplaceOnce(MinimalDeck(), "Root, 1, 6", "1, 1, 6"),
"Tip, 2, -1.", "2, 2, -1."));
ASSERT_TRUE(direct.HasValue());
EXPECT_EQ(direct.Value().Steps()[0].boundaries[0].target, "1");
EXPECT_EQ(direct.Value().Steps()[0].loads[0].target, "2");
EXPECT_EQ(direct.Value().Steps()[0].Boundaries()[0].target, "1");
EXPECT_EQ(direct.Value()
.Steps()[0]
.ConcentratedLoads()[0U]
.Target()
.target_name_or_label,
"2");
auto above_thresholds = MapText(
"above-geometry-thresholds",
@@ -543,11 +550,11 @@ TEST(InpDomainMapping, NoOpAllowlistWarnsWithoutSemanticEffect) {
plain.Value().NodeSets().size());
EXPECT_EQ(with_no_ops.Value().ElementSets().size(),
plain.Value().ElementSets().size());
EXPECT_EQ(with_no_ops.Value().Steps().size(), plain.Value().Steps().size());
EXPECT_EQ(with_no_ops.Value().Steps()[0].boundaries.size(),
plain.Value().Steps()[0].boundaries.size());
EXPECT_EQ(with_no_ops.Value().Steps()[0].loads.size(),
plain.Value().Steps()[0].loads.size());
EXPECT_EQ(with_no_ops.Value().Steps().Size(), plain.Value().Steps().Size());
EXPECT_EQ(with_no_ops.Value().Steps()[0].Boundaries().size(),
plain.Value().Steps()[0].Boundaries().size());
EXPECT_EQ(with_no_ops.Value().Steps()[0].Loads().size(),
plain.Value().Steps()[0].Loads().size());
}
// MITC4-MAP-001
@@ -605,11 +612,12 @@ TEST(InpDomainMapping, MapsS4AndS4rThroughOneMitc4Identity) {
EXPECT_EQ(domain.ShellNodeInitialFrames()[0].tangent_b,
(std::array<double, 3>{0.0, 1.0, 0.0}));
ASSERT_EQ(domain.Steps().size(), 1U);
ASSERT_EQ(domain.Steps()[0].boundaries.size(), 1U);
EXPECT_EQ(domain.Steps()[0].boundaries[0].last_dof, 6);
ASSERT_EQ(domain.Steps()[0].loads.size(), 1U);
EXPECT_EQ(domain.Steps()[0].loads[0].dof, 6);
ASSERT_EQ(domain.Steps().Size(), 1U);
ASSERT_EQ(domain.Steps()[0].Boundaries().size(), 1U);
EXPECT_EQ(domain.Steps()[0].Boundaries()[0].last_dof, 6);
ASSERT_EQ(domain.Steps()[0].ConcentratedLoads().Size(), 1U);
EXPECT_DOUBLE_EQ(
domain.Steps()[0].ConcentratedLoads()[0U].GlobalComponents()[5U], 1.0);
}
// MITC4-MAP-002