Skip to content

Commit

Permalink
Merge pull request #30 from andrsd/fix-side-set-conv
Browse files Browse the repository at this point in the history
Fixing side-set conversion for GMSH v2
  • Loading branch information
andrsd authored Oct 24, 2024
2 parents 0a94c28 + 84b469c commit 650a9a4
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 30 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ mark_as_advanced(FORCE
FetchContent_Declare(
gmshparsercpp
GIT_REPOSITORY https://github.com/andrsd/gmshparsercpp.git
GIT_TAG 8e946a98fb05e6e1b23a21454d014c86c4e6d694
GIT_TAG 1ffa75169df6febd1c4db9949f54c91d862f5ce0
)
mark_as_advanced(FORCE
FETCHCONTENT_SOURCE_DIR_GMSHPARSERCPP
Expand Down
61 changes: 32 additions & 29 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,6 @@ build_side_sets(const std::vector<const gmshparsercpp::MshFile::ElementBlock *>
exodusIIcpp::SideSet ss;
// the sign on physical tag ID refers to orientation which we don't need
auto id = std::abs(tag);
ss.set_id(id);
auto it = phys_ent_by_tag.find(id);
if (it != phys_ent_by_tag.end())
ss.set_name(it->second->name);
Expand All @@ -470,36 +469,40 @@ build_side_sets(const std::vector<const gmshparsercpp::MshFile::ElementBlock *>
}

for (const auto & eb : el_blks) {
const auto & ent = ents_by_id[eb->tag];

for (const auto & tag : ent->physical_tags) {
// the sign on physical tag ID refers to orientation which we don't need
auto id = std::abs(tag);
auto & ss = side_sets[id];
int id;
if (ents_by_id.count(eb->tag) > 0) {
const auto * ent = ents_by_id[eb->tag];
if (ent->physical_tags.size() > 0)
id = std::abs(ent->physical_tags[0]);
else
id = eb->tag;
}
else
id = eb->tag;

for (const auto & elem : eb->elements) {
std::vector<int> side_key;
switch (eb->element_type) {
case gmshparsercpp::LINE2:
side_key = build_side_key_edge2(elem.node_tags[0], elem.node_tags[1]);
break;
case gmshparsercpp::TRI3:
side_key = build_side_key_tri3(elem.node_tags[0],
elem.node_tags[1],
elem.node_tags[2]);
break;
case gmshparsercpp::QUAD4:
side_key = build_side_key_quad4(elem.node_tags[0],
elem.node_tags[1],
elem.node_tags[2],
elem.node_tags[3]);
break;
default:
break;
}
const auto el_side_pair = elem_sides[side_key];
ss.add(el_side_pair.first, el_side_pair.second);
auto & ss = side_sets[id];
ss.set_id(id);
for (const auto & elem : eb->elements) {
std::vector<int> side_key;
switch (eb->element_type) {
case gmshparsercpp::LINE2:
side_key = build_side_key_edge2(elem.node_tags[0], elem.node_tags[1]);
break;
case gmshparsercpp::TRI3:
side_key =
build_side_key_tri3(elem.node_tags[0], elem.node_tags[1], elem.node_tags[2]);
break;
case gmshparsercpp::QUAD4:
side_key = build_side_key_quad4(elem.node_tags[0],
elem.node_tags[1],
elem.node_tags[2],
elem.node_tags[3]);
break;
default:
break;
}
const auto el_side_pair = elem_sides[side_key];
ss.add(el_side_pair.first, el_side_pair.second);
}
}
}
Expand Down

0 comments on commit 650a9a4

Please sign in to comment.