Classes | |
struct | BCTupleKeyComp |
Functions | |
void | hexElemSplitter (ReplicatedMesh &mesh, const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, std::vector< dof_id_type > &converted_elems_ids) |
Split a HEX8 element into six TET4 elements. More... | |
void | pyramidElemSplitter (ReplicatedMesh &mesh, const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, std::vector< dof_id_type > &converted_elems_ids) |
Split a PYRAMID5 element into two TET4 elements. More... | |
void | prismElemSplitter (ReplicatedMesh &mesh, const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, std::vector< dof_id_type > &converted_elems_ids) |
Split a PRISM6 element into three TET4 elements. More... | |
void | nodeRotationHEX8 (const unsigned int min_id_index, const unsigned int sec_min_pos, std::vector< unsigned int > &face_rotation, std::vector< unsigned int > &node_rotation) |
Rotate a HEX8 element's nodes to ensure that the node with the minimum id is the first node; and the node among its three neighboring nodes with the minimum id is the second node. More... | |
std::vector< unsigned int > | neighborNodeIndicesHEX8 (unsigned int min_id_index) |
Calculate the indices (within the element nodes) of the three neighboring nodes of a node in a HEX8 element. More... | |
void | hexNodesToTetNodesDeterminer (std::vector< const Node *> &hex_nodes, std::vector< std::vector< unsigned int >> &rotated_tet_face_indices, std::vector< std::vector< const Node *>> &tet_nodes_list) |
For a vector of rotated nodes that can form a HEX8 element, create a vector of four-node sets that can form TET4 elements to replace the original HEX8 element. More... | |
std::vector< bool > | quadFaceDiagonalDirectionsHex (const std::vector< const Node *> &hex_nodes) |
For a HEX8 element, determine the direction of the diagonal line of each face that involves the node with the minimum id of that face. More... | |
bool | quadFaceDiagonalDirection (const std::vector< const Node *> &quad_nodes) |
For a QUAD4 element, determine the direction of the diagonal line that involves the node with the minimum id of that element. More... | |
std::vector< std::vector< unsigned int > > | tetNodesForHex (const std::vector< bool > diagonal_directions, std::vector< std::vector< unsigned int >> &tet_face_indices) |
Creates sets of four nodes indices that can form TET4 elements to replace the original HEX8 element. More... | |
void | nodeRotationPRISM6 (unsigned int min_id_index, std::vector< unsigned int > &face_rotation, std::vector< unsigned int > &node_rotation) |
Rotate a PRISM6 element nodes to ensure that the node with the minimum id is the first node. More... | |
void | prismNodesToTetNodesDeterminer (std::vector< const Node *> &prism_nodes, std::vector< std::vector< unsigned int >> &rotated_tet_face_indices, std::vector< std::vector< const Node *>> &tet_nodes_list) |
For a rotated nodes that can form a PRISM6 element, create a series of four-node set that can form TET4 elements to replace the original PRISM6 element. More... | |
std::vector< std::vector< unsigned int > > | tetNodesForPrism (const bool diagonal_direction, std::vector< std::vector< unsigned int >> &tet_face_indices) |
Creates sets of four nodes indices that can form TET4 elements to replace the original PRISM6 element. More... | |
void | nodeRotationPYRAMID5 (unsigned int min_id_index, std::vector< unsigned int > &face_rotation, std::vector< unsigned int > &node_rotation) |
Rotate a PYRAMID5 element nodes to ensure that the node with the minimum id is the first node for the bottom face. More... | |
void | pyramidNodesToTetNodesDeterminer (std::vector< const Node *> &pyramid_nodes, std::vector< std::vector< unsigned int >> &rotated_tet_face_indices, std::vector< std::vector< const Node *>> &tet_nodes_list) |
For a rotated nodes that can form a PYRAMID5 element, create a series of four-node set that can form TET4 elements to replace the original PYRAMID5 element. More... | |
void | convert3DMeshToAllTet4 (ReplicatedMesh &mesh, const std::vector< std::pair< dof_id_type, bool >> &elems_to_process, std::vector< dof_id_type > &converted_elems_ids_to_track, const subdomain_id_type block_id_to_remove, const bool delete_block_to_remove) |
Convert all the elements in a 3D mesh, consisting of only linear elements, into TET4 elements. More... | |
void | convert3DMeshToAllTet4 (ReplicatedMesh &mesh) |
Convert all the elements in a 3D mesh consisting of only linear elements into TET4 elements. More... | |
void | elementBoundaryInfoCollector (const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, const unsigned short n_elem_sides, std::vector< std::vector< boundary_id_type >> &elem_side_list) |
Collect the boundary information of the given element in a mesh. More... | |
void | hexElemSplitter (ReplicatedMesh &mesh, const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, std::vector< dof_id_type > &converted_elems_ids) |
void | prismElemSplitter (ReplicatedMesh &mesh, const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, std::vector< dof_id_type > &converted_elems_ids) |
void | pyramidElemSplitter (ReplicatedMesh &mesh, const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, std::vector< dof_id_type > &converted_elems_ids) |
void | hexNodesToTetNodesDeterminer (std::vector< const Node *> &hex_nodes, std::vector< std::vector< unsigned int >> &rotated_tet_face_indices, std::vector< std::vector< const Node *>> &tet_nodes_list) |
std::vector< bool > | quadFaceDiagonalDirectionsHex (const std::vector< const Node *> &hex_nodes) |
bool | quadFaceDiagonalDirection (const std::vector< const Node *> &quad_nodes) |
void | prismNodesToTetNodesDeterminer (std::vector< const Node *> &prism_nodes, std::vector< std::vector< unsigned int >> &rotated_tet_face_indices, std::vector< std::vector< const Node *>> &tet_nodes_list) |
void | pyramidNodesToTetNodesDeterminer (std::vector< const Node *> &pyramid_nodes, std::vector< std::vector< unsigned int >> &rotated_tet_face_indices, std::vector< std::vector< const Node *>> &tet_nodes_list) |
void | convert3DMeshToAllTet4 (ReplicatedMesh &mesh, const std::vector< std::pair< dof_id_type, bool >> &elems_to_process, std::vector< dof_id_type > &converted_elems_ids_to_track, const subdomain_id_type block_id_to_remove, const bool delete_block_to_remove) |
void | convert3DMeshToAllTet4 (ReplicatedMesh &mesh) |
void | elementBoundaryInfoCollector (const std::vector< libMesh::BoundaryInfo::BCTuple > &bdry_side_list, const dof_id_type elem_id, const unsigned short n_elem_sides, std::vector< std::vector< boundary_id_type >> &elem_side_list) |
Collect the boundary information of the given element in a mesh. More... | |
void MooseMeshElementConversionUtils::convert3DMeshToAllTet4 | ( | ReplicatedMesh & | mesh, |
const std::vector< std::pair< dof_id_type, bool >> & | elems_to_process, | ||
std::vector< dof_id_type > & | converted_elems_ids_to_track, | ||
const subdomain_id_type | block_id_to_remove, | ||
const bool | delete_block_to_remove | ||
) |
Convert all the elements in a 3D mesh, consisting of only linear elements, into TET4 elements.
mesh | The mesh to be converted |
elems_to_process | A vector of pairs of element ids and a bool indicating whether the element needs to be fully retained or will be further processed in the following procedures |
converted_elems_ids_to_track | A vector of element ids that need to be tracked for beig further processed in the following procedures |
block_id_to_remove | The id of a new subdomain in the mesh containing all the elements to be removed |
delete_block_to_remove | A bool indicating whether the block to be removed will be deleted in this method |
Referenced by ElementsToTetrahedronsConverter::generate(), and CutMeshByLevelSetGeneratorBase::generate().
void MooseMeshElementConversionUtils::convert3DMeshToAllTet4 | ( | ReplicatedMesh & | mesh | ) |
Convert all the elements in a 3D mesh consisting of only linear elements into TET4 elements.
mesh | The mesh to be converted |
void MooseMeshElementConversionUtils::convert3DMeshToAllTet4 | ( | ReplicatedMesh & | mesh, |
const std::vector< std::pair< dof_id_type, bool >> & | elems_to_process, | ||
std::vector< dof_id_type > & | converted_elems_ids_to_track, | ||
const subdomain_id_type | block_id_to_remove, | ||
const bool | delete_block_to_remove | ||
) |
Definition at line 582 of file MooseMeshElementConversionUtils.C.
void MooseMeshElementConversionUtils::convert3DMeshToAllTet4 | ( | ReplicatedMesh & | mesh | ) |
Definition at line 644 of file MooseMeshElementConversionUtils.C.
void MooseMeshElementConversionUtils::elementBoundaryInfoCollector | ( | const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, |
const dof_id_type | elem_id, | ||
const unsigned short | n_elem_sides, | ||
std::vector< std::vector< boundary_id_type >> & | elem_side_list | ||
) |
Collect the boundary information of the given element in a mesh.
bdry_side_list | A list that contains the boundary information of the mesh |
elem_id | The id of the element to be processed |
n_elem_sides | The number of sides of the element |
elem_side_list | a vector of vectors to record the boundary information of the element |
Definition at line 668 of file MooseMeshElementConversionUtils.C.
Referenced by hexElemSplitter(), prismElemSplitter(), pyramidElemSplitter(), and CutMeshByLevelSetGeneratorBase::tet4ElemCutter().
void MooseMeshElementConversionUtils::elementBoundaryInfoCollector | ( | const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, |
const dof_id_type | elem_id, | ||
const unsigned short | n_elem_sides, | ||
std::vector< std::vector< boundary_id_type >> & | elem_side_list | ||
) |
Collect the boundary information of the given element in a mesh.
bdry_side_list | A list that contains the boundary information of the mesh |
elem_id | The id of the element to be processed |
n_elem_sides | The number of sides of the element |
elem_side_list | a vector of vectors to record the boundary information of the element |
Definition at line 668 of file MooseMeshElementConversionUtils.C.
Referenced by hexElemSplitter(), prismElemSplitter(), pyramidElemSplitter(), and CutMeshByLevelSetGeneratorBase::tet4ElemCutter().
void MooseMeshElementConversionUtils::hexElemSplitter | ( | ReplicatedMesh & | mesh, |
const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, | ||
const dof_id_type | elem_id, | ||
std::vector< dof_id_type > & | converted_elems_ids | ||
) |
Definition at line 29 of file MooseMeshElementConversionUtils.C.
Referenced by convert3DMeshToAllTet4().
void MooseMeshElementConversionUtils::hexElemSplitter | ( | ReplicatedMesh & | mesh, |
const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, | ||
const dof_id_type | elem_id, | ||
std::vector< dof_id_type > & | converted_elems_ids | ||
) |
Split a HEX8 element into six TET4 elements.
mesh | The mesh to be modified |
bdry_side_list | A list that contains the boundary information of the original mesh |
elem_id | The id of the element to be split |
converted_elems_ids | a vector to record the ids of the newly created TET4 elements |
void MooseMeshElementConversionUtils::hexNodesToTetNodesDeterminer | ( | std::vector< const Node *> & | hex_nodes, |
std::vector< std::vector< unsigned int >> & | rotated_tet_face_indices, | ||
std::vector< std::vector< const Node *>> & | tet_nodes_list | ||
) |
For a vector of rotated nodes that can form a HEX8 element, create a vector of four-node sets that can form TET4 elements to replace the original HEX8 element.
All the QUAD4 faces of the HEX8 element will be split by the diagonal line that involves the node with the minimum id of that face.
hex_nodes | A vector of pointers to the nodes that can form a HEX8 element |
rotated_tet_face_indices | A vector of vectors of the original face indices of the HEX8 element corresponding to the faces of the newly created TET4 elements |
tet_nodes_list | a vector of vectors of pointers to the nodes that can form TET4 elements |
void MooseMeshElementConversionUtils::hexNodesToTetNodesDeterminer | ( | std::vector< const Node *> & | hex_nodes, |
std::vector< std::vector< unsigned int >> & | rotated_tet_face_indices, | ||
std::vector< std::vector< const Node *>> & | tet_nodes_list | ||
) |
Definition at line 228 of file MooseMeshElementConversionUtils.C.
Referenced by hexElemSplitter().
std::vector< unsigned int > MooseMeshElementConversionUtils::neighborNodeIndicesHEX8 | ( | unsigned int | min_id_index | ) |
Calculate the indices (within the element nodes) of the three neighboring nodes of a node in a HEX8 element.
min_id_index | The index of the node with the minimum id |
Definition at line 217 of file MooseMeshElementConversionUtils.C.
Referenced by hexNodesToTetNodesDeterminer().
void MooseMeshElementConversionUtils::nodeRotationHEX8 | ( | const unsigned int | min_id_index, |
const unsigned int | sec_min_pos, | ||
std::vector< unsigned int > & | face_rotation, | ||
std::vector< unsigned int > & | node_rotation | ||
) |
Rotate a HEX8 element's nodes to ensure that the node with the minimum id is the first node; and the node among its three neighboring nodes with the minimum id is the second node.
min_id_index | The index of the node with the minimum id |
sec_min_pos | The index of the node among its three neighboring nodes with the minimum id (see comments in the function for more details about how the index is defined) |
face_rotation | A vector to record the rotation of the faces of the HEX8 element |
node_rotation | a vector of node indices that can form a HEX8 element |
Definition at line 371 of file MooseMeshElementConversionUtils.C.
Referenced by hexNodesToTetNodesDeterminer().
void MooseMeshElementConversionUtils::nodeRotationPRISM6 | ( | unsigned int | min_id_index, |
std::vector< unsigned int > & | face_rotation, | ||
std::vector< unsigned int > & | node_rotation | ||
) |
Rotate a PRISM6 element nodes to ensure that the node with the minimum id is the first node.
min_id_index | The index of the node, within the prism nodes, with the minimum id |
face_rotation | A vector to record the rotation of the faces of the PRISM6 element |
node_rotation | a vector of node indices that can form a PRISM6 element |
Definition at line 411 of file MooseMeshElementConversionUtils.C.
Referenced by prismNodesToTetNodesDeterminer().
void MooseMeshElementConversionUtils::nodeRotationPYRAMID5 | ( | unsigned int | min_id_index, |
std::vector< unsigned int > & | face_rotation, | ||
std::vector< unsigned int > & | node_rotation | ||
) |
Rotate a PYRAMID5 element nodes to ensure that the node with the minimum id is the first node for the bottom face.
min_id_index | The index of the node, within the pyramid nodes, with the minimum id for the bottom face |
face_rotation | A vector to record the rotation of the faces of the PYRAMID5 element |
node_rotation | a vector of node indices that can form a PYRAMID5 element |
Definition at line 512 of file MooseMeshElementConversionUtils.C.
Referenced by pyramidNodesToTetNodesDeterminer().
void MooseMeshElementConversionUtils::prismElemSplitter | ( | ReplicatedMesh & | mesh, |
const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, | ||
const dof_id_type | elem_id, | ||
std::vector< dof_id_type > & | converted_elems_ids | ||
) |
Split a PRISM6 element into three TET4 elements.
mesh | The mesh to be modified |
bdry_side_list | A list that contains the boundary information of the original mesh |
elem_id | The id of the element to be split |
converted_elems_ids | a vector to record the ids of the newly created TET4 elements |
void MooseMeshElementConversionUtils::prismElemSplitter | ( | ReplicatedMesh & | mesh, |
const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, | ||
const dof_id_type | elem_id, | ||
std::vector< dof_id_type > & | converted_elems_ids | ||
) |
Definition at line 95 of file MooseMeshElementConversionUtils.C.
Referenced by convert3DMeshToAllTet4().
void MooseMeshElementConversionUtils::prismNodesToTetNodesDeterminer | ( | std::vector< const Node *> & | prism_nodes, |
std::vector< std::vector< unsigned int >> & | rotated_tet_face_indices, | ||
std::vector< std::vector< const Node *>> & | tet_nodes_list | ||
) |
For a rotated nodes that can form a PRISM6 element, create a series of four-node set that can form TET4 elements to replace the original PRISM6 element.
All the QUAD4 face of the PRISM6 element will be split by the diagonal line that involves the node with the minimum id of that face.
prism_nodes | A vector of pointers to the nodes that can form a PRISM6 element |
rotated_tet_face_indices | A vector of vectors of the original face indices of the PRISM6 element corresponding to the faces of the newly created TET4 elements |
tet_nodes_list | a vector of vectors of pointers to the nodes that can form TET4 elements |
Referenced by CutMeshByLevelSetGeneratorBase::tet4ElemCutter().
void MooseMeshElementConversionUtils::prismNodesToTetNodesDeterminer | ( | std::vector< const Node *> & | prism_nodes, |
std::vector< std::vector< unsigned int >> & | rotated_tet_face_indices, | ||
std::vector< std::vector< const Node *>> & | tet_nodes_list | ||
) |
Definition at line 440 of file MooseMeshElementConversionUtils.C.
Referenced by prismElemSplitter().
void MooseMeshElementConversionUtils::pyramidElemSplitter | ( | ReplicatedMesh & | mesh, |
const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, | ||
const dof_id_type | elem_id, | ||
std::vector< dof_id_type > & | converted_elems_ids | ||
) |
Split a PYRAMID5 element into two TET4 elements.
mesh | The mesh to be modified |
bdry_side_list | A list that contains the boundary information of the original mesh |
elem_id | The id of the element to be split |
converted_elems_ids | a vector to record the ids of the newly created TET4 elements |
void MooseMeshElementConversionUtils::pyramidElemSplitter | ( | ReplicatedMesh & | mesh, |
const std::vector< libMesh::BoundaryInfo::BCTuple > & | bdry_side_list, | ||
const dof_id_type | elem_id, | ||
std::vector< dof_id_type > & | converted_elems_ids | ||
) |
Definition at line 157 of file MooseMeshElementConversionUtils.C.
Referenced by convert3DMeshToAllTet4().
void MooseMeshElementConversionUtils::pyramidNodesToTetNodesDeterminer | ( | std::vector< const Node *> & | pyramid_nodes, |
std::vector< std::vector< unsigned int >> & | rotated_tet_face_indices, | ||
std::vector< std::vector< const Node *>> & | tet_nodes_list | ||
) |
For a rotated nodes that can form a PYRAMID5 element, create a series of four-node set that can form TET4 elements to replace the original PYRAMID5 element.
The QUAD4 face of the PYRAMID5 element will be split by the diagonal line that involves the node with the minimum id of that face.
pyramid_nodes | A vector of pointers to the nodes that can form a PYRAMID5 element |
rotated_tet_face_indices | A vector of vectors of the original face indices of the PYRAMID5 element corresponding to the faces of the newly created TET4 elements |
tet_nodes_list | a vector of vectors of pointers to the nodes that can form TET4 elements |
Referenced by CutMeshByLevelSetGeneratorBase::tet4ElemCutter().
void MooseMeshElementConversionUtils::pyramidNodesToTetNodesDeterminer | ( | std::vector< const Node *> & | pyramid_nodes, |
std::vector< std::vector< unsigned int >> & | rotated_tet_face_indices, | ||
std::vector< std::vector< const Node *>> & | tet_nodes_list | ||
) |
Definition at line 533 of file MooseMeshElementConversionUtils.C.
Referenced by pyramidElemSplitter().
bool MooseMeshElementConversionUtils::quadFaceDiagonalDirection | ( | const std::vector< const Node *> & | quad_nodes | ) |
For a QUAD4 element, determine the direction of the diagonal line that involves the node with the minimum id of that element.
quad_nodes | A vector of pointers to the nodes that can form a QUAD4 element |
bool MooseMeshElementConversionUtils::quadFaceDiagonalDirection | ( | const std::vector< const Node *> & | quad_nodes | ) |
Definition at line 308 of file MooseMeshElementConversionUtils.C.
Referenced by prismNodesToTetNodesDeterminer(), and quadFaceDiagonalDirectionsHex().
std::vector<bool> MooseMeshElementConversionUtils::quadFaceDiagonalDirectionsHex | ( | const std::vector< const Node *> & | hex_nodes | ) |
For a HEX8 element, determine the direction of the diagonal line of each face that involves the node with the minimum id of that face.
hex_nodes | A vector of pointers to the nodes that can form a HEX8 element |
std::vector<bool> MooseMeshElementConversionUtils::quadFaceDiagonalDirectionsHex | ( | const std::vector< const Node *> & | hex_nodes | ) |
Definition at line 290 of file MooseMeshElementConversionUtils.C.
Referenced by hexNodesToTetNodesDeterminer().
std::vector< std::vector< unsigned int > > MooseMeshElementConversionUtils::tetNodesForHex | ( | const std::vector< bool > | diagonal_directions, |
std::vector< std::vector< unsigned int >> & | tet_face_indices | ||
) |
Creates sets of four nodes indices that can form TET4 elements to replace the original HEX8 element.
diagonal_directions | A vector of boolean values indicating the direction of the diagonal line of each face; true means the diagonal line is connecting node 0 and node 2, false means the diagonal line is connecting node 1 and node 3 of that quad face |
tet_face_indices | A vector of vectors of the original face indices of the HEX8 element corresponding to the faces of the newly created TET4 elements |
Definition at line 321 of file MooseMeshElementConversionUtils.C.
Referenced by hexNodesToTetNodesDeterminer().
std::vector< std::vector< unsigned int > > MooseMeshElementConversionUtils::tetNodesForPrism | ( | const bool | diagonal_direction, |
std::vector< std::vector< unsigned int >> & | tet_face_indices | ||
) |
Creates sets of four nodes indices that can form TET4 elements to replace the original PRISM6 element.
diagonal_direction | A boolean value indicating the direction of the diagonal line of Face 2 |
tet_face_indices | A vector of vectors of the original face indices of the PRISM6 element corresponding to the faces of the newly created TET4 elements |
Definition at line 495 of file MooseMeshElementConversionUtils.C.
Referenced by prismNodesToTetNodesDeterminer().