feat(cpp-object-oriented-modular-refactoring): step 4 - model-element-google-style
This commit is contained in:
@@ -249,55 +249,55 @@ TEST(InpDomainMapping, MapsEverySupportedKeywordAndLegacyDeck) {
|
||||
ASSERT_TRUE(result.HasValue());
|
||||
const fesa::Domain& domain = result.Value();
|
||||
|
||||
ASSERT_EQ(domain.nodes().size(), 2U);
|
||||
EXPECT_EQ(domain.nodes()[0].sourceId.instance_name, "Beam-1");
|
||||
EXPECT_EQ(domain.nodes()[0].sourceId.source_label, 1);
|
||||
EXPECT_EQ(domain.nodes()[0].sourceId.source_label_text, "0001");
|
||||
EXPECT_EQ(domain.nodes()[1].sourceId.source_label_text, "0002");
|
||||
EXPECT_DOUBLE_EQ(domain.nodes()[1].coordinates[0], 2.0);
|
||||
ASSERT_EQ(domain.Nodes().size(), 2U);
|
||||
EXPECT_EQ(domain.Nodes()[0].source_id.instance_name, "Beam-1");
|
||||
EXPECT_EQ(domain.Nodes()[0].source_id.source_label, 1);
|
||||
EXPECT_EQ(domain.Nodes()[0].source_id.source_label_text, "0001");
|
||||
EXPECT_EQ(domain.Nodes()[1].source_id.source_label_text, "0002");
|
||||
EXPECT_DOUBLE_EQ(domain.Nodes()[1].coordinates[0], 2.0);
|
||||
|
||||
ASSERT_EQ(domain.elements().size(), 1U);
|
||||
EXPECT_EQ(domain.elements()[0].sourceId.source_label_text, "0007");
|
||||
EXPECT_EQ(domain.elements()[0].nodeIndices[0], 0U);
|
||||
EXPECT_EQ(domain.elements()[0].nodeIndices[1], 1U);
|
||||
ASSERT_EQ(domain.Elements().size(), 1U);
|
||||
EXPECT_EQ(domain.Elements()[0].source_id.source_label_text, "0007");
|
||||
EXPECT_EQ(domain.Elements()[0].node_indices[0], 0U);
|
||||
EXPECT_EQ(domain.Elements()[0].node_indices[1], 1U);
|
||||
|
||||
ASSERT_EQ(domain.materials().size(), 1U);
|
||||
EXPECT_EQ(domain.materials()[0].name, "Steel");
|
||||
EXPECT_DOUBLE_EQ(domain.materials()[0].youngsModulus, 210000.0);
|
||||
EXPECT_DOUBLE_EQ(domain.materials()[0].poissonRatio, 0.75);
|
||||
ASSERT_EQ(domain.Materials().size(), 1U);
|
||||
EXPECT_EQ(domain.Materials()[0].name, "Steel");
|
||||
EXPECT_DOUBLE_EQ(domain.Materials()[0].youngs_modulus, 210000.0);
|
||||
EXPECT_DOUBLE_EQ(domain.Materials()[0].poisson_ratio, 0.75);
|
||||
|
||||
ASSERT_EQ(domain.sections().size(), 1U);
|
||||
const auto& section = domain.sections()[0];
|
||||
ASSERT_EQ(domain.Sections().size(), 1U);
|
||||
const auto& section = domain.Sections()[0];
|
||||
EXPECT_DOUBLE_EQ(section.area, 2.0);
|
||||
EXPECT_DOUBLE_EQ(section.i11, 3.0);
|
||||
EXPECT_DOUBLE_EQ(section.i12, 0.0);
|
||||
EXPECT_DOUBLE_EQ(section.i22, 4.0);
|
||||
EXPECT_DOUBLE_EQ(section.torsionalConstant, 5.0);
|
||||
EXPECT_EQ(section.firstAxis, (std::array<double, 3>{0.0, 1.0, 0.0}));
|
||||
EXPECT_DOUBLE_EQ(section.torsional_constant, 5.0);
|
||||
EXPECT_EQ(section.first_axis, (std::array<double, 3>{0.0, 1.0, 0.0}));
|
||||
EXPECT_EQ(
|
||||
section.sectionPoints,
|
||||
section.section_points,
|
||||
(std::vector<std::array<double, 2>>{{-0.5, 0.25}, {0.5, -0.25}}));
|
||||
EXPECT_EQ(domain.elements()[0].materialIndex, 0U);
|
||||
EXPECT_EQ(domain.elements()[0].sectionIndex, 0U);
|
||||
EXPECT_EQ(domain.Elements()[0].material_index, 0U);
|
||||
EXPECT_EQ(domain.Elements()[0].section_index, 0U);
|
||||
|
||||
ASSERT_EQ(domain.steps().size(), 1U);
|
||||
const auto& step = domain.steps()[0];
|
||||
ASSERT_EQ(domain.Steps().size(), 1U);
|
||||
const auto& step = domain.Steps()[0];
|
||||
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);
|
||||
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].firstDof, 1);
|
||||
EXPECT_EQ(step.boundaries[0].first_dof, 1);
|
||||
EXPECT_DOUBLE_EQ(step.boundaries[0].value, 0.125);
|
||||
EXPECT_EQ(step.boundaries[1].lastDof, 2);
|
||||
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(domain.warnings().size(), 8U);
|
||||
EXPECT_EQ(domain.Warnings().size(), 8U);
|
||||
|
||||
const auto legacyPath = repositoryRoot() / "reference" /
|
||||
"cantilever beam" / "cantilever beam.inp";
|
||||
@@ -307,12 +307,12 @@ TEST(InpDomainMapping, MapsEverySupportedKeywordAndLegacyDeck) {
|
||||
ASSERT_TRUE(parsedLegacy.HasValue());
|
||||
auto legacy = fesa::AbaqusDomainMapper{}.map(parsedLegacy.Value());
|
||||
ASSERT_TRUE(legacy.HasValue());
|
||||
EXPECT_EQ(legacy.Value().nodes().size(), 11U);
|
||||
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().warnings().size(), 7U);
|
||||
EXPECT_EQ(legacy.Value().Nodes().size(), 11U);
|
||||
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().Warnings().size(), 7U);
|
||||
EXPECT_EQ(readExactBytes(legacyPath), bytesBefore);
|
||||
EXPECT_EQ(std::filesystem::last_write_time(legacyPath), timestampBefore);
|
||||
}
|
||||
@@ -359,52 +359,52 @@ OnlySecond, 2, 5.
|
||||
ASSERT_TRUE(result.HasValue());
|
||||
const fesa::Domain& domain = result.Value();
|
||||
|
||||
ASSERT_EQ(domain.nodes().size(), 4U);
|
||||
EXPECT_EQ(domain.nodes()[0].sourceId.instance_name, "First");
|
||||
EXPECT_EQ(domain.nodes()[0].sourceId.source_label, 10);
|
||||
EXPECT_EQ(domain.nodes()[1].sourceId.instance_name, "First");
|
||||
EXPECT_EQ(domain.nodes()[1].sourceId.source_label, 20);
|
||||
EXPECT_EQ(domain.nodes()[2].sourceId.instance_name, "Second");
|
||||
EXPECT_EQ(domain.nodes()[2].sourceId.source_label, 10);
|
||||
EXPECT_EQ(domain.nodes()[3].sourceId.instance_name, "Second");
|
||||
EXPECT_EQ(domain.nodes()[3].sourceId.source_label, 20);
|
||||
ASSERT_EQ(domain.Nodes().size(), 4U);
|
||||
EXPECT_EQ(domain.Nodes()[0].source_id.instance_name, "First");
|
||||
EXPECT_EQ(domain.Nodes()[0].source_id.source_label, 10);
|
||||
EXPECT_EQ(domain.Nodes()[1].source_id.instance_name, "First");
|
||||
EXPECT_EQ(domain.Nodes()[1].source_id.source_label, 20);
|
||||
EXPECT_EQ(domain.Nodes()[2].source_id.instance_name, "Second");
|
||||
EXPECT_EQ(domain.Nodes()[2].source_id.source_label, 10);
|
||||
EXPECT_EQ(domain.Nodes()[3].source_id.instance_name, "Second");
|
||||
EXPECT_EQ(domain.Nodes()[3].source_id.source_label, 20);
|
||||
|
||||
ASSERT_EQ(domain.elements().size(), 2U);
|
||||
EXPECT_EQ(domain.elements()[0].sourceId.instance_name, "First");
|
||||
EXPECT_EQ(domain.elements()[0].nodeIndices,
|
||||
ASSERT_EQ(domain.Elements().size(), 2U);
|
||||
EXPECT_EQ(domain.Elements()[0].source_id.instance_name, "First");
|
||||
EXPECT_EQ(domain.Elements()[0].node_indices,
|
||||
(std::array<fesa::EntityIndex, 2>{0U, 1U}));
|
||||
EXPECT_EQ(domain.elements()[1].sourceId.instance_name, "Second");
|
||||
EXPECT_EQ(domain.elements()[1].nodeIndices,
|
||||
EXPECT_EQ(domain.Elements()[1].source_id.instance_name, "Second");
|
||||
EXPECT_EQ(domain.Elements()[1].node_indices,
|
||||
(std::array<fesa::EntityIndex, 2>{2U, 3U}));
|
||||
|
||||
ASSERT_EQ(domain.nodeSets().size(), 3U);
|
||||
EXPECT_EQ(domain.nodeSets()[0].name, "Ends");
|
||||
EXPECT_EQ(domain.nodeSets()[0].instanceName, std::optional<std::string>{"First"});
|
||||
EXPECT_EQ(domain.nodeSets()[0].nodeIndices,
|
||||
ASSERT_EQ(domain.NodeSets().size(), 3U);
|
||||
EXPECT_EQ(domain.NodeSets()[0].name, "Ends");
|
||||
EXPECT_EQ(domain.NodeSets()[0].instance_name, std::optional<std::string>{"First"});
|
||||
EXPECT_EQ(domain.NodeSets()[0].node_indices,
|
||||
(std::vector<fesa::EntityIndex>{0U, 1U}));
|
||||
EXPECT_EQ(domain.nodeSets()[1].instanceName, std::optional<std::string>{"Second"});
|
||||
EXPECT_EQ(domain.nodeSets()[1].nodeIndices,
|
||||
EXPECT_EQ(domain.NodeSets()[1].instance_name, std::optional<std::string>{"Second"});
|
||||
EXPECT_EQ(domain.NodeSets()[1].node_indices,
|
||||
(std::vector<fesa::EntityIndex>{2U, 3U}));
|
||||
EXPECT_EQ(domain.nodeSets()[2].name, "OnlySecond");
|
||||
EXPECT_EQ(domain.nodeSets()[2].nodeIndices,
|
||||
EXPECT_EQ(domain.NodeSets()[2].name, "OnlySecond");
|
||||
EXPECT_EQ(domain.NodeSets()[2].node_indices,
|
||||
(std::vector<fesa::EntityIndex>{3U}));
|
||||
|
||||
ASSERT_EQ(domain.elementSets().size(), 3U);
|
||||
EXPECT_EQ(domain.elementSets()[0].instanceName,
|
||||
ASSERT_EQ(domain.ElementSets().size(), 3U);
|
||||
EXPECT_EQ(domain.ElementSets()[0].instance_name,
|
||||
std::optional<std::string>{"First"});
|
||||
EXPECT_EQ(domain.elementSets()[0].elementIndices,
|
||||
EXPECT_EQ(domain.ElementSets()[0].element_indices,
|
||||
(std::vector<fesa::EntityIndex>{0U}));
|
||||
EXPECT_EQ(domain.elementSets()[1].instanceName,
|
||||
EXPECT_EQ(domain.ElementSets()[1].instance_name,
|
||||
std::optional<std::string>{"Second"});
|
||||
EXPECT_EQ(domain.elementSets()[1].elementIndices,
|
||||
EXPECT_EQ(domain.ElementSets()[1].element_indices,
|
||||
(std::vector<fesa::EntityIndex>{1U}));
|
||||
EXPECT_EQ(domain.elementSets()[2].name, "OnlySecondBeam");
|
||||
EXPECT_EQ(domain.elementSets()[2].elementIndices,
|
||||
EXPECT_EQ(domain.ElementSets()[2].name, "OnlySecondBeam");
|
||||
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].loads[0].target, "OnlySecond");
|
||||
|
||||
auto direct = mapText(
|
||||
"direct-node-labels",
|
||||
@@ -413,8 +413,8 @@ OnlySecond, 2, 5.
|
||||
"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].loads[0].target, "2");
|
||||
|
||||
auto aboveThresholds = mapText(
|
||||
"above-geometry-thresholds",
|
||||
@@ -447,10 +447,10 @@ TEST(InpDomainMapping, KeepsNodeAndElementSetNamesInSeparateNamespaces) {
|
||||
ASSERT_TRUE(sharedName.HasValue());
|
||||
const auto& domain = sharedName.Value();
|
||||
EXPECT_TRUE(std::any_of(
|
||||
domain.nodeSets().begin(), domain.nodeSets().end(),
|
||||
domain.NodeSets().begin(), domain.NodeSets().end(),
|
||||
[](const fesa::NodeSet& set) { return set.name == "ShellS4"; }));
|
||||
EXPECT_TRUE(std::any_of(
|
||||
domain.elementSets().begin(), domain.elementSets().end(),
|
||||
domain.ElementSets().begin(), domain.ElementSets().end(),
|
||||
[](const fesa::ElementSet& set) { return set.name == "ShellS4"; }));
|
||||
|
||||
auto duplicateNodeSet = mapText(
|
||||
@@ -486,16 +486,16 @@ TEST(InpDomainMapping, KeepsNodeAndElementSetNamesInSeparateNamespaces) {
|
||||
ASSERT_TRUE(assemblySharedName.HasValue());
|
||||
const auto& assemblyDomain = assemblySharedName.Value();
|
||||
const auto rootNodeSetCount = std::count_if(
|
||||
assemblyDomain.nodeSets().begin(), assemblyDomain.nodeSets().end(),
|
||||
assemblyDomain.NodeSets().begin(), assemblyDomain.NodeSets().end(),
|
||||
[](const fesa::NodeSet& set) { return set.name == "Root"; });
|
||||
EXPECT_EQ(rootNodeSetCount, 1);
|
||||
const auto rootNodeSet = std::find_if(
|
||||
assemblyDomain.nodeSets().begin(), assemblyDomain.nodeSets().end(),
|
||||
assemblyDomain.NodeSets().begin(), assemblyDomain.NodeSets().end(),
|
||||
[](const fesa::NodeSet& set) { return set.name == "Root"; });
|
||||
ASSERT_NE(rootNodeSet, assemblyDomain.nodeSets().end());
|
||||
EXPECT_EQ(rootNodeSet->nodeIndices, (std::vector<fesa::EntityIndex>{0U}));
|
||||
ASSERT_NE(rootNodeSet, assemblyDomain.NodeSets().end());
|
||||
EXPECT_EQ(rootNodeSet->node_indices, (std::vector<fesa::EntityIndex>{0U}));
|
||||
EXPECT_EQ(std::count_if(
|
||||
assemblyDomain.elementSets().begin(), assemblyDomain.elementSets().end(),
|
||||
assemblyDomain.ElementSets().begin(), assemblyDomain.ElementSets().end(),
|
||||
[](const fesa::ElementSet& set) { return set.name == "Root"; }), 1);
|
||||
}
|
||||
|
||||
@@ -505,33 +505,33 @@ TEST(InpDomainMapping, NoOpAllowlistWarnsWithoutSemanticEffect) {
|
||||
ASSERT_TRUE(plain.HasValue());
|
||||
ASSERT_TRUE(withNoOps.HasValue());
|
||||
|
||||
EXPECT_TRUE(plain.Value().warnings().empty());
|
||||
ASSERT_EQ(withNoOps.Value().warnings().size(), 8U);
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[0].code, "ignored-input-keyword");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[0].keyword, "PREPRINT");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[1].keyword,
|
||||
EXPECT_TRUE(plain.Value().Warnings().empty());
|
||||
ASSERT_EQ(withNoOps.Value().Warnings().size(), 8U);
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[0].code, "ignored-input-keyword");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[0].keyword, "PREPRINT");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[1].keyword,
|
||||
"TRANSVERSE SHEAR STIFFNESS");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[2].keyword, "RESTART");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[3].keyword, "OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[4].keyword, "NODE OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[5].keyword, "ELEMENT OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[6].keyword, "CONTACT OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().warnings()[7].keyword, "OUTPUT");
|
||||
for (const auto& warning : withNoOps.Value().warnings()) {
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[2].keyword, "RESTART");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[3].keyword, "OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[4].keyword, "NODE OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[5].keyword, "ELEMENT OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[6].keyword, "CONTACT OUTPUT");
|
||||
EXPECT_EQ(withNoOps.Value().Warnings()[7].keyword, "OUTPUT");
|
||||
for (const auto& warning : withNoOps.Value().Warnings()) {
|
||||
EXPECT_EQ(warning.severity, fesa::Severity::kWarning);
|
||||
}
|
||||
|
||||
EXPECT_EQ(withNoOps.Value().nodes().size(), plain.Value().nodes().size());
|
||||
EXPECT_EQ(withNoOps.Value().elements().size(), plain.Value().elements().size());
|
||||
EXPECT_EQ(withNoOps.Value().materials().size(), plain.Value().materials().size());
|
||||
EXPECT_EQ(withNoOps.Value().sections().size(), plain.Value().sections().size());
|
||||
EXPECT_EQ(withNoOps.Value().nodeSets().size(), plain.Value().nodeSets().size());
|
||||
EXPECT_EQ(withNoOps.Value().elementSets().size(), plain.Value().elementSets().size());
|
||||
EXPECT_EQ(withNoOps.Value().steps().size(), plain.Value().steps().size());
|
||||
EXPECT_EQ(withNoOps.Value().steps()[0].boundaries.size(),
|
||||
plain.Value().steps()[0].boundaries.size());
|
||||
EXPECT_EQ(withNoOps.Value().steps()[0].loads.size(),
|
||||
plain.Value().steps()[0].loads.size());
|
||||
EXPECT_EQ(withNoOps.Value().Nodes().size(), plain.Value().Nodes().size());
|
||||
EXPECT_EQ(withNoOps.Value().Elements().size(), plain.Value().Elements().size());
|
||||
EXPECT_EQ(withNoOps.Value().Materials().size(), plain.Value().Materials().size());
|
||||
EXPECT_EQ(withNoOps.Value().Sections().size(), plain.Value().Sections().size());
|
||||
EXPECT_EQ(withNoOps.Value().NodeSets().size(), plain.Value().NodeSets().size());
|
||||
EXPECT_EQ(withNoOps.Value().ElementSets().size(), plain.Value().ElementSets().size());
|
||||
EXPECT_EQ(withNoOps.Value().Steps().size(), plain.Value().Steps().size());
|
||||
EXPECT_EQ(withNoOps.Value().Steps()[0].boundaries.size(),
|
||||
plain.Value().Steps()[0].boundaries.size());
|
||||
EXPECT_EQ(withNoOps.Value().Steps()[0].loads.size(),
|
||||
plain.Value().Steps()[0].loads.size());
|
||||
}
|
||||
|
||||
// MITC4-MAP-001
|
||||
@@ -540,63 +540,63 @@ TEST(InpDomainMapping, MapsS4AndS4rThroughOneMitc4Identity) {
|
||||
|
||||
ASSERT_TRUE(result.HasValue());
|
||||
const fesa::Domain& domain = result.Value();
|
||||
EXPECT_TRUE(domain.elements().empty());
|
||||
ASSERT_EQ(domain.shellElements().size(), 4U);
|
||||
EXPECT_EQ(domain.shellElements()[0].sourceId.instance_name, "First");
|
||||
EXPECT_EQ(domain.shellElements()[0].sourceId.source_label_text, "0010");
|
||||
EXPECT_TRUE(domain.Elements().empty());
|
||||
ASSERT_EQ(domain.ShellElements().size(), 4U);
|
||||
EXPECT_EQ(domain.ShellElements()[0].source_id.instance_name, "First");
|
||||
EXPECT_EQ(domain.ShellElements()[0].source_id.source_label_text, "0010");
|
||||
EXPECT_EQ(
|
||||
domain.shellElements()[0].sourceType,
|
||||
fesa::ShellSourceElementType::s4);
|
||||
domain.ShellElements()[0].source_type,
|
||||
fesa::ShellSourceElementType::kS4);
|
||||
EXPECT_EQ(
|
||||
domain.shellElements()[0].nodeIndices,
|
||||
domain.ShellElements()[0].node_indices,
|
||||
(std::array<fesa::EntityIndex, 4>{0U, 1U, 2U, 3U}));
|
||||
EXPECT_EQ(domain.shellElements()[0].sectionIndex, 0U);
|
||||
EXPECT_EQ(domain.shellElements()[0].materialIndex, 0U);
|
||||
EXPECT_EQ(domain.ShellElements()[0].section_index, 0U);
|
||||
EXPECT_EQ(domain.ShellElements()[0].material_index, 0U);
|
||||
|
||||
EXPECT_EQ(domain.shellElements()[1].sourceId.instance_name, "First");
|
||||
EXPECT_EQ(domain.ShellElements()[1].source_id.instance_name, "First");
|
||||
EXPECT_EQ(
|
||||
domain.shellElements()[1].sourceType,
|
||||
fesa::ShellSourceElementType::s4r);
|
||||
domain.ShellElements()[1].source_type,
|
||||
fesa::ShellSourceElementType::kS4r);
|
||||
EXPECT_EQ(
|
||||
domain.shellElements()[1].nodeIndices,
|
||||
domain.ShellElements()[1].node_indices,
|
||||
(std::array<fesa::EntityIndex, 4>{1U, 4U, 5U, 2U}));
|
||||
EXPECT_EQ(domain.shellElements()[1].sectionIndex, 1U);
|
||||
EXPECT_EQ(domain.shellElements()[1].materialIndex, 1U);
|
||||
EXPECT_EQ(domain.ShellElements()[1].section_index, 1U);
|
||||
EXPECT_EQ(domain.ShellElements()[1].material_index, 1U);
|
||||
|
||||
EXPECT_EQ(domain.shellElements()[2].sourceId.instance_name, "Second");
|
||||
EXPECT_EQ(domain.ShellElements()[2].source_id.instance_name, "Second");
|
||||
EXPECT_EQ(
|
||||
domain.shellElements()[2].nodeIndices,
|
||||
domain.ShellElements()[2].node_indices,
|
||||
(std::array<fesa::EntityIndex, 4>{6U, 7U, 8U, 9U}));
|
||||
EXPECT_EQ(domain.shellElements()[3].sourceId.instance_name, "Second");
|
||||
EXPECT_EQ(domain.ShellElements()[3].source_id.instance_name, "Second");
|
||||
EXPECT_EQ(
|
||||
fesa::kMitc4InternalFormulation,
|
||||
std::string_view{"FESA-MITC4"});
|
||||
|
||||
ASSERT_EQ(domain.shellSections().size(), 2U);
|
||||
EXPECT_EQ(domain.shellSections()[0].name, "ShellS4");
|
||||
EXPECT_DOUBLE_EQ(domain.shellSections()[0].thickness, 0.1);
|
||||
EXPECT_EQ(domain.shellSections()[0].materialIndex, 0U);
|
||||
EXPECT_EQ(domain.shellSections()[1].name, "ShellS4R");
|
||||
EXPECT_DOUBLE_EQ(domain.shellSections()[1].thickness, 0.2);
|
||||
EXPECT_EQ(domain.shellSections()[1].materialIndex, 1U);
|
||||
ASSERT_EQ(domain.ShellSections().size(), 2U);
|
||||
EXPECT_EQ(domain.ShellSections()[0].name, "ShellS4");
|
||||
EXPECT_DOUBLE_EQ(domain.ShellSections()[0].thickness, 0.1);
|
||||
EXPECT_EQ(domain.ShellSections()[0].material_index, 0U);
|
||||
EXPECT_EQ(domain.ShellSections()[1].name, "ShellS4R");
|
||||
EXPECT_DOUBLE_EQ(domain.ShellSections()[1].thickness, 0.2);
|
||||
EXPECT_EQ(domain.ShellSections()[1].material_index, 1U);
|
||||
|
||||
ASSERT_EQ(domain.shellNodeInitialFrames().size(), domain.nodes().size());
|
||||
EXPECT_EQ(domain.shellNodeInitialFrames()[0].nodeIndex, 0U);
|
||||
ASSERT_EQ(domain.ShellNodeInitialFrames().size(), domain.Nodes().size());
|
||||
EXPECT_EQ(domain.ShellNodeInitialFrames()[0].node_index, 0U);
|
||||
EXPECT_EQ(
|
||||
domain.shellNodeInitialFrames()[0].director,
|
||||
domain.ShellNodeInitialFrames()[0].director,
|
||||
(std::array<double, 3>{0.0, 0.0, 1.0}));
|
||||
EXPECT_EQ(
|
||||
domain.shellNodeInitialFrames()[0].tangentA,
|
||||
domain.ShellNodeInitialFrames()[0].tangent_a,
|
||||
(std::array<double, 3>{1.0, 0.0, 0.0}));
|
||||
EXPECT_EQ(
|
||||
domain.shellNodeInitialFrames()[0].tangentB,
|
||||
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].lastDof, 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].loads.size(), 1U);
|
||||
EXPECT_EQ(domain.Steps()[0].loads[0].dof, 6);
|
||||
}
|
||||
|
||||
// MITC4-MAP-002
|
||||
@@ -690,10 +690,10 @@ TEST(InpDomainMapping, PreservesProcedureLoadAndOutputRequestBoundariesForShells
|
||||
"*Output, field\n*Node Output\nU, RF\n*Element Output\nS\n*End Step\n");
|
||||
auto valid = mapText("mitc4-map-004-no-ops", withNoOps);
|
||||
ASSERT_TRUE(valid.HasValue());
|
||||
ASSERT_EQ(valid.Value().warnings().size(), 3U);
|
||||
EXPECT_EQ(valid.Value().warnings()[0].keyword, "OUTPUT");
|
||||
EXPECT_EQ(valid.Value().warnings()[1].keyword, "NODE OUTPUT");
|
||||
EXPECT_EQ(valid.Value().warnings()[2].keyword, "ELEMENT OUTPUT");
|
||||
ASSERT_EQ(valid.Value().Warnings().size(), 3U);
|
||||
EXPECT_EQ(valid.Value().Warnings()[0].keyword, "OUTPUT");
|
||||
EXPECT_EQ(valid.Value().Warnings()[1].keyword, "NODE OUTPUT");
|
||||
EXPECT_EQ(valid.Value().Warnings()[2].keyword, "ELEMENT OUTPUT");
|
||||
|
||||
struct InvalidCase {
|
||||
std::string name;
|
||||
|
||||
Reference in New Issue
Block a user