Skip to content
Snippets Groups Projects
Commit bd3720c6 authored by Norihiro Watanabe's avatar Norihiro Watanabe
Browse files

fix the unmatched face issue in a generated tetra mesh. generate 6 tets from 1 hex

parent bdcba319
No related branches found
No related tags found
No related merge requests found
......@@ -513,7 +513,7 @@ Mesh* MeshGenerator::generateRegularTetMesh(
//elements
std::vector<Element*> elements;
elements.reserve(n_x_cells * n_y_cells * n_z_cells * 5);
elements.reserve(n_x_cells * n_y_cells * n_z_cells * 6);
for (std::size_t i = 0; i < n_z_cells; i++)
{
......@@ -530,31 +530,31 @@ Mesh* MeshGenerator::generateRegularTetMesh(
std::array<Node*, 4> element_nodes;
// bottom
element_nodes[0] = nodes[offset_z1 + offset_y1 + k];
element_nodes[1] = nodes[offset_z1 + offset_y1 + k + 1];
element_nodes[2] = nodes[offset_z1 + offset_y2 + k + 1];
element_nodes[1] = nodes[offset_z1 + offset_y2 + k + 1];
element_nodes[2] = nodes[offset_z1 + offset_y2 + k];
// top
element_nodes[3] = nodes[offset_z2 + offset_y1 + k + 1];
element_nodes[3] = nodes[offset_z2 + offset_y1 + k];
elements.push_back (new Tet(element_nodes));
}
// tet 2
{
std::array<Node*, 4> element_nodes;
// bottom
element_nodes[0] = nodes[offset_z1 + offset_y1 + k];
element_nodes[1] = nodes[offset_z1 + offset_y2 + k + 1];
element_nodes[2] = nodes[offset_z1 + offset_y2 + k];
element_nodes[0] = nodes[offset_z1 + offset_y2 + k + 1];
element_nodes[1] = nodes[offset_z1 + offset_y2 + k];
// top
element_nodes[3] = nodes[offset_z2 + offset_y2 + k];
element_nodes[2] = nodes[offset_z2 + offset_y1 + k];
element_nodes[3] = nodes[offset_z2 + offset_y2 + k + 1];
elements.push_back (new Tet(element_nodes));
}
// tet 3
{
std::array<Node*, 4> element_nodes;
// bottom
element_nodes[0] = nodes[offset_z1 + offset_y1 + k];
element_nodes[0] = nodes[offset_z1 + offset_y2 + k];
// top
element_nodes[1] = nodes[offset_z2 + offset_y1 + k];
element_nodes[2] = nodes[offset_z2 + offset_y1 + k + 1];
element_nodes[2] = nodes[offset_z2 + offset_y2 + k + 1];
element_nodes[3] = nodes[offset_z2 + offset_y2 + k];
elements.push_back (new Tet(element_nodes));
}
......@@ -562,11 +562,11 @@ Mesh* MeshGenerator::generateRegularTetMesh(
{
std::array<Node*, 4> element_nodes;
// bottom
element_nodes[0] = nodes[offset_z1 + offset_y2 + k + 1];
element_nodes[0] = nodes[offset_z1 + offset_y1 + k];
element_nodes[1] = nodes[offset_z1 + offset_y1 + k + 1];
element_nodes[2] = nodes[offset_z1 + offset_y2 + k + 1];
// top
element_nodes[1] = nodes[offset_z2 + offset_y1 + k + 1];
element_nodes[2] = nodes[offset_z2 + offset_y2 + k + 1];
element_nodes[3] = nodes[offset_z2 + offset_y2 + k];
element_nodes[3] = nodes[offset_z2 + offset_y1 + k + 1];
elements.push_back (new Tet(element_nodes));
}
// tet 5
......@@ -576,10 +576,21 @@ Mesh* MeshGenerator::generateRegularTetMesh(
element_nodes[0] = nodes[offset_z1 + offset_y1 + k];
element_nodes[1] = nodes[offset_z1 + offset_y2 + k + 1];
// top
element_nodes[2] = nodes[offset_z2 + offset_y2 + k];
element_nodes[2] = nodes[offset_z2 + offset_y1 + k];
element_nodes[3] = nodes[offset_z2 + offset_y1 + k + 1];
elements.push_back (new Tet(element_nodes));
}
// tet 6
{
std::array<Node*, 4> element_nodes;
// bottom
element_nodes[0] = nodes[offset_z1 + offset_y2 + k + 1];
// top
element_nodes[1] = nodes[offset_z2 + offset_y1 + k];
element_nodes[2] = nodes[offset_z2 + offset_y1 + k + 1];
element_nodes[3] = nodes[offset_z2 + offset_y2 + k + 1];
elements.push_back (new Tet(element_nodes));
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment