TetMoveGuard

The guard of a node move in a Tet4 volume, shared by smoothTetInterior() and tetProjectBoundary() (construct-mesh-to-tet §TSQ-4 step 5, §TSI-3 matrix TSW-10).

template <typename T> class mesh::process::TetMoveGuard

In the namespace mesh::process. Declared in src/libs/libmesh/mesh/process/TetMoveGuard.hpp.

Detailed description

It holds the Tet4 elements at each node, as one flat list. Before a node moves, record() stores the sign of the volume and the smallest dihedral angle of each tetrahedron at the node. After the move, keeps() tells if the move is allowed: every tetrahedron at the node keeps the sign of its volume, and its smallest dihedral angle is at least the lower of floorDeg and its value before.

smoothTetInterior() passes the smallest angle of all the tetrahedra at the node as the floor, so no tetrahedron there gets under the worst one before: the worst at the node does not get worse. tetProjectBoundary() passes the floor of the quality option.

Elements that are not a Tet4 with four nodes take no part. The guard reads the mesh's positions when it is called, so it stays valid while nodes move, and not when elements change.

In this section