Skip to content

Commit 3f652d6

Browse files
committed
Don't resort nodes by geometry for the final tet
- would trigger some asserts as down to 2 neighnor nodes
1 parent cf47802 commit 3f652d6

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

src/geom/cell_c0polyhedron.C

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -872,6 +872,26 @@ void C0Polyhedron::retriangulate()
872872
surface.delete_elem(oldtri2);
873873
surface.delete_elem(oldtri3);
874874

875+
// We've used up our center node, so it's not something we can
876+
// eliminate again.
877+
nodes_by_geometry.erase(geometry_it);
878+
879+
// Recompute the valence and angles of the nodes we used
880+
// The idea is that if one node is being isolated on one side,
881+
// we need to treat it asap
882+
if (nodes_by_geometry.size() > 4)
883+
{
884+
Node * & node_j2 = surrounding_nodes[j2];
885+
nodes_by_geometry.erase(node_index[node_j2]);
886+
node_index[node_j2] = nodes_by_geometry.emplace(geometry_at(*node_j2), node_j2);
887+
Node * & node_j1 = surrounding_nodes[j1];
888+
nodes_by_geometry.erase(node_index[node_j1]);
889+
node_index[node_j1] = nodes_by_geometry.emplace(geometry_at(*node_j1), node_j1);
890+
Node * & node_j3 = surrounding_nodes[j3];
891+
nodes_by_geometry.erase(node_index[node_j3]);
892+
node_index[node_j3] = nodes_by_geometry.emplace(geometry_at(*node_j3), node_j3);
893+
}
894+
875895
// We should have used up all our surrounding nodes now, and we
876896
// shouldn't have messed up our surface in the process, and our
877897
// center node should no longer be part of the surface.
@@ -891,10 +911,6 @@ void C0Polyhedron::retriangulate()
891911
libmesh_assert_not_equal_to
892912
(elem->node_ptr(p), node);
893913
#endif
894-
895-
// We've used up our center node, so it's not something we can
896-
// eliminate again.
897-
nodes_by_geometry.erase(geometry_it);
898914
}
899915

900916
// At this point our surface should just have two triangles left.

0 commit comments

Comments
 (0)