fix: resolve Abaqus set namespaces
This commit is contained in:
@@ -436,6 +436,69 @@ OnlySecond, 2, 5.
|
||||
ASSERT_TRUE(largeFinite.hasValue());
|
||||
}
|
||||
|
||||
TEST(InpDomainMapping, KeepsNodeAndElementSetNamesInSeparateNamespaces) {
|
||||
auto sharedName = mapText(
|
||||
"separate-part-set-namespaces",
|
||||
replaceOnce(
|
||||
shellDeck(),
|
||||
"*Elset, elset=ShellS4\n10",
|
||||
"*Nset, nset=ShellS4\n1, 2, 3, 4\n*Elset, elset=ShellS4\n10"));
|
||||
|
||||
ASSERT_TRUE(sharedName.hasValue());
|
||||
const auto& domain = sharedName.value();
|
||||
EXPECT_TRUE(std::any_of(
|
||||
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(),
|
||||
[](const fesa::ElementSet& set) { return set.name == "ShellS4"; }));
|
||||
|
||||
auto duplicateNodeSet = mapText(
|
||||
"duplicate-part-node-set",
|
||||
replaceOnce(
|
||||
shellDeck(),
|
||||
"*Elset, elset=ShellS4\n10",
|
||||
"*Nset, nset=Shared\n1\n*Nset, nset=Shared\n2\n"
|
||||
"*Elset, elset=ShellS4\n10"));
|
||||
ASSERT_FALSE(duplicateNodeSet.hasValue());
|
||||
EXPECT_NE(findDiagnostic(duplicateNodeSet.status(), "duplicate-entity"), nullptr);
|
||||
|
||||
auto duplicateElementSet = mapText(
|
||||
"duplicate-part-element-set",
|
||||
replaceOnce(
|
||||
shellDeck(),
|
||||
"*Elset, elset=ShellS4\n10",
|
||||
"*Elset, elset=Repeated\n10\n*Elset, elset=Repeated\n20\n"
|
||||
"*Elset, elset=ShellS4\n10"));
|
||||
ASSERT_FALSE(duplicateElementSet.hasValue());
|
||||
EXPECT_NE(findDiagnostic(duplicateElementSet.status(), "duplicate-entity"), nullptr);
|
||||
|
||||
auto assemblySharedName = mapText(
|
||||
"separate-assembly-set-namespaces",
|
||||
replaceOnce(
|
||||
replaceOnce(
|
||||
minimalDeck(),
|
||||
"*Elset, elset=BeamSet\n1",
|
||||
"*Nset, nset=Root\n1, 2\n*Elset, elset=BeamSet\n1"),
|
||||
"*Nset, nset=Root, instance=Beam-1\n1",
|
||||
"*Nset, nset=Root, instance=Beam-1\n1\n"
|
||||
"*Elset, elset=Root, instance=Beam-1\n1"));
|
||||
ASSERT_TRUE(assemblySharedName.hasValue());
|
||||
const auto& assemblyDomain = assemblySharedName.value();
|
||||
const auto rootNodeSetCount = std::count_if(
|
||||
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(),
|
||||
[](const fesa::NodeSet& set) { return set.name == "Root"; });
|
||||
ASSERT_NE(rootNodeSet, assemblyDomain.nodeSets().end());
|
||||
EXPECT_EQ(rootNodeSet->nodeIndices, (std::vector<fesa::EntityIndex>{0U}));
|
||||
EXPECT_EQ(std::count_if(
|
||||
assemblyDomain.elementSets().begin(), assemblyDomain.elementSets().end(),
|
||||
[](const fesa::ElementSet& set) { return set.name == "Root"; }), 1);
|
||||
}
|
||||
|
||||
TEST(InpDomainMapping, NoOpAllowlistWarnsWithoutSemanticEffect) {
|
||||
auto plain = mapText("without-no-ops", supportedInventoryDeck(false));
|
||||
auto withNoOps = mapText("with-no-ops", supportedInventoryDeck(true));
|
||||
|
||||
Reference in New Issue
Block a user