++next_free_line;
next_free_line->set(
- internal::TriangulationImplementation::TriaObject(
- {cells[cell].vertices[0], cells[cell].vertices[1]}));
+ {cells[cell].vertices[0], cells[cell].vertices[1]});
next_free_line->set_used_flag();
next_free_line->set_material_id(cells[cell].material_id);
next_free_line->set_manifold_id(cells[cell].manifold_id);
for (i = needed_lines.begin(); line != triangulation.end_line();
++line, ++i)
{
- line->set(internal::TriangulationImplementation::TriaObject(
- {i->first.first, i->first.second}));
+ line->set({i->first.first, i->first.second});
line->set_used_flag();
line->clear_user_flag();
line->clear_user_data();
cells[c].vertices[GeometryInfo<dim>::line_to_cell_vertices(
line, 1)])];
- cell->set(internal::TriangulationImplementation::TriaObject(
- {lines[0]->index(),
- lines[1]->index(),
- lines[2]->index(),
- lines[3]->index()}));
+ cell->set({lines[0]->index(),
+ lines[1]->index(),
+ lines[2]->index(),
+ lines[3]->index()});
cell->set_used_flag();
cell->set_material_id(cells[c].material_id);
/**
* Invent an object which compares two
- * internal::TriangulationImplementation::TriaObject against each
+ * std::initializer_list objects against each
* other. This comparison is needed in order to establish a map of
- * TriaObject to iterators in the
+ * vertex index tuples to iterators in the
* Triangulation<3,3>::create_triangulation function.
- *
- * Since this comparison is not canonical, we do not include it into the
- * general internal::TriangulationImplementation::TriaObject class.
*/
struct QuadComparator
{
inline bool
- operator()(
- const internal::TriangulationImplementation::TriaObject &q1,
- const internal::TriangulationImplementation::TriaObject &q2) const
+ operator()(const std::vector<int> &q1,
+ const std::vector<int> &q2) const
{
+ Assert(q1.size() == 4, ExcInternalError());
+ Assert(q2.size() == 4, ExcInternalError());
+
// here is room to
// optimize the repeated
// equality test of the
// compiler will probably
// take care of most of
// it anyway
- if ((q1.face(0) < q2.face(0)) ||
- ((q1.face(0) == q2.face(0)) && (q1.face(1) < q2.face(1))) ||
- ((q1.face(0) == q2.face(0)) && (q1.face(1) == q2.face(1)) &&
- (q1.face(2) < q2.face(2))) ||
- ((q1.face(0) == q2.face(0)) && (q1.face(1) == q2.face(1)) &&
- (q1.face(2) == q2.face(2)) && (q1.face(3) < q2.face(3))))
+ if ((q1[0] < q2[0]) ||
+ ((q1[0] == q2[0]) && (q1[1] < q2[1])) ||
+ ((q1[0] == q2[0]) && (q1[1] == q2[1]) &&
+ (q1[2] < q2[2])) ||
+ ((q1[0] == q2[0]) && (q1[1] == q2[1]) &&
+ (q1[2] == q2[2]) && (q1[3] < q2[3])))
return true;
else
return false;
for (i = needed_lines.begin(); line != triangulation.end_line();
++line, ++i)
{
- line->set(internal::TriangulationImplementation::TriaObject(
- {i->first.first, i->first.second}));
+ line->set({i->first.first, i->first.second});
line->set_used_flag();
line->clear_user_flag();
line->clear_user_data();
// note that QuadComparator is a
// class declared and defined in
// this file
- std::map<internal::TriangulationImplementation::TriaObject,
+ std::map<std::vector<int>,
std::pair<typename Triangulation<dim, spacedim>::quad_iterator,
std::array<bool, GeometryInfo<dim>::lines_per_face>>,
QuadComparator>
}
- internal::TriangulationImplementation::TriaObject quad(
+ const std::vector<int> quad(
{face_line_list[0],
face_line_list[1],
face_line_list[2],
// new one and instead
// later set the
// face_orientation flag
- const internal::TriangulationImplementation::TriaObject
- test_quad_1(
- {quad.face(2),
- quad.face(3),
- quad.face(0),
- quad.face(1)}), // face_orientation=false, face_flip=false,
- // face_rotation=false
+ const std::initializer_list<int> test_quad_1(
+ {quad[2],
+ quad[3],
+ quad[0],
+ quad[1]}), // face_orientation=false, face_flip=false,
+ // face_rotation=false
test_quad_2(
- {quad.face(0),
- quad.face(1),
- quad.face(3),
- quad.face(2)}), // face_orientation=false, face_flip=false,
+ {quad[0],
+ quad[1],
+ quad[3],
+ quad[2]}), // face_orientation=false, face_flip=false,
// face_rotation=true
test_quad_3(
- {quad.face(3),
- quad.face(2),
- quad.face(1),
- quad.face(0)}), // face_orientation=false, face_flip=true,
+ {quad[3],
+ quad[2],
+ quad[1],
+ quad[0]}), // face_orientation=false, face_flip=true,
// face_rotation=false
test_quad_4(
- {quad.face(1),
- quad.face(0),
- quad.face(2),
- quad.face(3)}), // face_orientation=false, face_flip=true,
+ {quad[1],
+ quad[0],
+ quad[2],
+ quad[3]}), // face_orientation=false, face_flip=true,
// face_rotation=true
test_quad_5(
- {quad.face(2),
- quad.face(3),
- quad.face(1),
- quad.face(0)}), // face_orientation=true, face_flip=false,
+ {quad[2],
+ quad[3],
+ quad[1],
+ quad[0]}), // face_orientation=true, face_flip=false,
// face_rotation=true
test_quad_6(
- {quad.face(1),
- quad.face(0),
- quad.face(3),
- quad.face(2)}), // face_orientation=true, face_flip=true,
+ {quad[1],
+ quad[0],
+ quad[3],
+ quad[2]}), // face_orientation=true, face_flip=true,
// face_rotation=false
test_quad_7(
- {quad.face(3),
- quad.face(2),
- quad.face(0),
- quad.face(1)}); // face_orientation=true, face_flip=true,
+ {quad[3],
+ quad[2],
+ quad[0],
+ quad[1]}); // face_orientation=true, face_flip=true,
// face_rotation=true
if (needed_quads.find(test_quad_1) == needed_quads.end() &&
needed_quads.find(test_quad_2) == needed_quads.end() &&
typename Triangulation<dim, spacedim>::raw_quad_iterator quad =
triangulation.begin_raw_quad();
typename std::map<
- internal::TriangulationImplementation::TriaObject,
+ std::vector<int>,
std::pair<typename Triangulation<dim, spacedim>::quad_iterator,
std::array<bool, GeometryInfo<dim>::lines_per_face>>,
QuadComparator>::iterator q;
dim>::face_to_cell_lines(face, l)]]
->index();
- internal::TriangulationImplementation::TriaObject quad(
+ const std::vector<int> quad(
{face_line_list[0],
face_line_list[1],
face_line_list[2],
// then. construct all
// possibilities and check
// them one after the other
- const internal::TriangulationImplementation::TriaObject
- test_quad_1(
- {quad.face(2),
- quad.face(3),
- quad.face(0),
- quad.face(
- 1)}), // face_orientation=false,
- // face_flip=false, face_rotation=false
+ const std::initializer_list<int> test_quad_1(
+ {quad[2],
+ quad[3],
+ quad[0],
+ quad[1]}), // face_orientation=false,
+ // face_flip=false, face_rotation=false
test_quad_2(
- {quad.face(0),
- quad.face(1),
- quad.face(3),
- quad.face(
- 2)}), // face_orientation=false,
+ {quad[0],
+ quad[1],
+ quad[3],
+ quad[2]}), // face_orientation=false,
// face_flip=false, face_rotation=true
test_quad_3(
- {quad.face(3),
- quad.face(2),
- quad.face(1),
- quad.face(
- 0)}), // face_orientation=false,
+ {quad[3],
+ quad[2],
+ quad[1],
+ quad[0]}), // face_orientation=false,
// face_flip=true, face_rotation=false
test_quad_4(
- {quad.face(1),
- quad.face(0),
- quad.face(2),
- quad.face(3)}), // face_orientation=false,
+ {quad[1],
+ quad[0],
+ quad[2],
+ quad[3]}), // face_orientation=false,
// face_flip=true, face_rotation=true
test_quad_5(
- {quad.face(2),
- quad.face(3),
- quad.face(1),
- quad.face(
- 0)}), // face_orientation=true,
+ {quad[2],
+ quad[3],
+ quad[1],
+ quad[0]}), // face_orientation=true,
// face_flip=false, face_rotation=true
test_quad_6(
- {quad.face(1),
- quad.face(0),
- quad.face(3),
- quad.face(
- 2)}), // face_orientation=true,
+ {quad[1],
+ quad[0],
+ quad[3],
+ quad[2]}), // face_orientation=true,
// face_flip=true, face_rotation=false
test_quad_7(
- {quad.face(3),
- quad.face(2),
- quad.face(0),
- quad.face(1)}); // face_orientation=true,
+ {quad[3],
+ quad[2],
+ quad[0],
+ quad[1]}); // face_orientation=true,
// face_flip=true, face_rotation=true
if (needed_quads.find(test_quad_1) != needed_quads.end())
{
// make the cell out of
// these iterators
- cell->set(internal::TriangulationImplementation::TriaObject(
- {face_iterator[0]->index(),
- face_iterator[1]->index(),
- face_iterator[2]->index(),
- face_iterator[3]->index(),
- face_iterator[4]->index(),
- face_iterator[5]->index()}));
+ cell->set({face_iterator[0]->index(),
+ face_iterator[1]->index(),
+ face_iterator[2]->index(),
+ face_iterator[3]->index(),
+ face_iterator[4]->index(),
+ face_iterator[5]->index()});
cell->set_used_flag();
cell->set_material_id(cells[c].material_id);
// and because boundary quad
// orientation does not carry
// any information.
- internal::TriangulationImplementation::TriaObject quad_compare_1(
+ std::vector<int> quad_compare_1(
{line[0]->index(),
line[1]->index(),
line[2]->index(),
line[3]->index()});
- internal::TriangulationImplementation::TriaObject quad_compare_2(
+ std::vector<int> quad_compare_2(
{line[2]->index(),
line[3]->index(),
line[0]->index(),
// lexicographic ordering)
for (unsigned int i = 0; i < 4; ++i)
{
- quad_compare_1.set_face(
- i, line_counterclock[lex2cclock[i]]->index());
- quad_compare_2.set_face(
- (i + 2) % 4, line_counterclock[lex2cclock[i]]->index());
+ quad_compare_1[i] = line_counterclock[lex2cclock[i]]->index();
+ quad_compare_2[(i + 2) % 4] = line_counterclock[lex2cclock[i]]->index();
}
++n_rotations;
const bool switch_1_user_flag =
switch_1->user_flag_set();
- switch_1->set(
- internal::TriangulationImplementation::
- TriaObject({switch_2->line_index(0),
- switch_2->line_index(1),
- switch_2->line_index(2),
- switch_2->line_index(3)}));
+ switch_1->set({switch_2->line_index(0),
+ switch_2->line_index(1),
+ switch_2->line_index(2),
+ switch_2->line_index(3)});
switch_1->set_line_orientation(
0, switch_2->line_orientation(0));
switch_1->set_line_orientation(
else
switch_1->clear_user_flag();
- switch_2->set(
- internal::TriangulationImplementation::
- TriaObject({switch_1_lines[0],
- switch_1_lines[1],
- switch_1_lines[2],
- switch_1_lines[3]}));
+ switch_2->set({switch_1_lines[0],
+ switch_1_lines[1],
+ switch_1_lines[2],
+ switch_1_lines[3]});
switch_2->set_line_orientation(
0, switch_1_line_orientations[0]);
switch_2->set_line_orientation(
new_lines[l] = cell->line(face_no)->child(c);
Assert(l == 8, ExcInternalError());
- new_lines[8]->set(internal::TriangulationImplementation::TriaObject(
- {new_vertices[6], new_vertices[8]}));
- new_lines[9]->set(internal::TriangulationImplementation::TriaObject(
- {new_vertices[8], new_vertices[7]}));
- new_lines[10]->set(
- internal::TriangulationImplementation::TriaObject(
- {new_vertices[4], new_vertices[8]}));
- new_lines[11]->set(
- internal::TriangulationImplementation::TriaObject(
- {new_vertices[8], new_vertices[5]}));
+ new_lines[8]->set({new_vertices[6], new_vertices[8]});
+ new_lines[9]->set({new_vertices[8], new_vertices[7]});
+ new_lines[10]->set({new_vertices[4], new_vertices[8]});
+ new_lines[11]->set({new_vertices[8], new_vertices[5]});
}
else if (ref_case == RefinementCase<dim>::cut_x)
{
new_lines[3] = cell->line(2)->child(1);
new_lines[4] = cell->line(3)->child(0);
new_lines[5] = cell->line(3)->child(1);
- new_lines[6]->set(internal::TriangulationImplementation::TriaObject(
- {new_vertices[6], new_vertices[7]}));
+ new_lines[6]->set({new_vertices[6], new_vertices[7]});
}
else
{
new_lines[3] = cell->line(1)->child(1);
new_lines[4] = cell->line(2);
new_lines[5] = cell->line(3);
- new_lines[6]->set(internal::TriangulationImplementation::TriaObject(
- {new_vertices[4], new_vertices[5]}));
+ new_lines[6]->set({new_vertices[4], new_vertices[5]});
}
for (unsigned int l = lmin; l < lmax; ++l)
// .-10.11-.
// 0 8 2
// .-4-.-5-.
- subcells[0]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[0]->index(),
- new_lines[8]->index(),
- new_lines[4]->index(),
- new_lines[10]->index()}));
- subcells[1]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[8]->index(),
- new_lines[2]->index(),
- new_lines[5]->index(),
- new_lines[11]->index()}));
- subcells[2]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[1]->index(),
- new_lines[9]->index(),
- new_lines[10]->index(),
- new_lines[6]->index()}));
- subcells[3]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[9]->index(),
- new_lines[3]->index(),
- new_lines[11]->index(),
- new_lines[7]->index()}));
+ subcells[0]->set({new_lines[0]->index(),
+ new_lines[8]->index(),
+ new_lines[4]->index(),
+ new_lines[10]->index()});
+ subcells[1]->set({new_lines[8]->index(),
+ new_lines[2]->index(),
+ new_lines[5]->index(),
+ new_lines[11]->index()});
+ subcells[2]->set({new_lines[1]->index(),
+ new_lines[9]->index(),
+ new_lines[10]->index(),
+ new_lines[6]->index()});
+ subcells[3]->set({new_lines[9]->index(),
+ new_lines[3]->index(),
+ new_lines[11]->index(),
+ new_lines[7]->index()});
}
else if (ref_case == RefinementCase<dim>::cut_x)
{
// 0 6 1
// | | |
// .-2-.-3-.
- subcells[0]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[0]->index(),
- new_lines[6]->index(),
- new_lines[2]->index(),
- new_lines[4]->index()}));
- subcells[1]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[6]->index(),
- new_lines[1]->index(),
- new_lines[3]->index(),
- new_lines[5]->index()}));
+ subcells[0]->set({new_lines[0]->index(),
+ new_lines[6]->index(),
+ new_lines[2]->index(),
+ new_lines[4]->index()});
+ subcells[1]->set({new_lines[6]->index(),
+ new_lines[1]->index(),
+ new_lines[3]->index(),
+ new_lines[5]->index()});
}
else
{
// .---6---.
// 0 2
// .---4---.
- subcells[0]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[0]->index(),
- new_lines[2]->index(),
- new_lines[4]->index(),
- new_lines[6]->index()}));
- subcells[1]->set(internal::TriangulationImplementation::TriaObject(
- {new_lines[1]->index(),
- new_lines[3]->index(),
- new_lines[6]->index(),
- new_lines[5]->index()}));
+ subcells[0]->set({new_lines[0]->index(),
+ new_lines[2]->index(),
+ new_lines[4]->index(),
+ new_lines[6]->index()});
+ subcells[1]->set({new_lines[1]->index(),
+ new_lines[3]->index(),
+ new_lines[6]->index(),
+ new_lines[5]->index()});
}
types::subdomain_id subdomainid = cell->subdomain_id();
// insert first child
cell->set_children(0, first_child->index());
first_child->clear_children();
- first_child->set(
- internal::TriangulationImplementation::TriaObject(
- {cell->vertex_index(0), next_unused_vertex}));
+ first_child->set({cell->vertex_index(0), next_unused_vertex});
first_child->set_material_id(cell->material_id());
first_child->set_manifold_id(cell->manifold_id());
first_child->set_subdomain_id(subdomainid);
// insert second child
second_child->clear_children();
second_child->set(
- internal::TriangulationImplementation::TriaObject(
- {next_unused_vertex, cell->vertex_index(1)}));
+ {next_unused_vertex, cell->vertex_index(1)});
second_child->set_neighbor(0, first_child);
second_child->set_material_id(cell->material_id());
second_child->set_manifold_id(cell->manifold_id());
ExcMessage(
"Internal error: We want to use a cell during refinement that should be unused, but turns out not to be."));
- children[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line->vertex_index(0), next_unused_vertex}));
- children[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {next_unused_vertex, line->vertex_index(1)}));
+ children[0]->set({line->vertex_index(0), next_unused_vertex});
+ children[1]->set({next_unused_vertex, line->vertex_index(1)});
children[0]->set_used_flag();
children[1]->set_used_flag();
ExcMessage(
"Internal error: We want to use a cell during refinement that should be unused, but turns out not to be."));
- children[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line->vertex_index(0), next_unused_vertex}));
- children[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {next_unused_vertex, line->vertex_index(1)}));
+ children[0]->set({line->vertex_index(0), next_unused_vertex});
+ children[1]->set({next_unused_vertex, line->vertex_index(1)});
children[0]->set_used_flag();
children[1]->set_used_flag();
quad->line(1)->child(0)->vertex_index(1);
}
- new_line->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[0], vertex_indices[1]}));
+ new_line->set({vertex_indices[0], vertex_indices[1]});
new_line->set_used_flag();
new_line->clear_user_flag();
new_line->clear_user_data();
if (aniso_quad_ref_case == RefinementCase<dim - 1>::cut_x)
{
new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {static_cast<int>(quad->line_index(0)),
- new_line->index(),
- quad->line(2)
- ->child(index[0][quad->line_orientation(2)])
- ->index(),
- quad->line(3)
- ->child(index[0][quad->line_orientation(3)])
- ->index()}));
+ {static_cast<int>(quad->line_index(0)),
+ new_line->index(),
+ quad->line(2)
+ ->child(index[0][quad->line_orientation(2)])
+ ->index(),
+ quad->line(3)
+ ->child(index[0][quad->line_orientation(3)])
+ ->index()});
new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {new_line->index(),
- static_cast<int>(quad->line_index(1)),
- quad->line(2)
- ->child(index[1][quad->line_orientation(2)])
- ->index(),
- quad->line(3)
- ->child(index[1][quad->line_orientation(3)])
- ->index()}));
+ {new_line->index(),
+ static_cast<int>(quad->line_index(1)),
+ quad->line(2)
+ ->child(index[1][quad->line_orientation(2)])
+ ->index(),
+ quad->line(3)
+ ->child(index[1][quad->line_orientation(3)])
+ ->index()});
}
else
{
new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad->line(0)
- ->child(index[0][quad->line_orientation(0)])
- ->index(),
- quad->line(1)
- ->child(index[0][quad->line_orientation(1)])
- ->index(),
- static_cast<int>(quad->line_index(2)),
- new_line->index()}));
+ {quad->line(0)
+ ->child(index[0][quad->line_orientation(0)])
+ ->index(),
+ quad->line(1)
+ ->child(index[0][quad->line_orientation(1)])
+ ->index(),
+ static_cast<int>(quad->line_index(2)),
+ new_line->index()});
new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad->line(0)
- ->child(index[1][quad->line_orientation(0)])
- ->index(),
- quad->line(1)
- ->child(index[1][quad->line_orientation(1)])
- ->index(),
- new_line->index(),
- static_cast<int>(quad->line_index(3))}));
+ {quad->line(0)
+ ->child(index[1][quad->line_orientation(0)])
+ ->index(),
+ quad->line(1)
+ ->child(index[1][quad->line_orientation(1)])
+ ->index(),
+ new_line->index(),
+ static_cast<int>(quad->line_index(3))});
}
for (const auto &new_quad : new_quads)
ExcInternalError());
new_child[i]->set(
- internal::TriangulationImplementation::
- TriaObject(
- {old_child[i]->vertex_index(0),
- old_child[i]->vertex_index(1)}));
+ {old_child[i]->vertex_index(0),
+ old_child[i]->vertex_index(1)});
new_child[i]->set_boundary_id_internal(
old_child[i]->boundary_id());
new_child[i]->set_manifold_id(
switch_1->child_index(2) :
-1);
- switch_1->set(
- internal::TriangulationImplementation::TriaObject(
- {switch_2->line_index(0),
- switch_2->line_index(1),
- switch_2->line_index(2),
- switch_2->line_index(3)}));
+ switch_1->set({switch_2->line_index(0),
+ switch_2->line_index(1),
+ switch_2->line_index(2),
+ switch_2->line_index(3)});
switch_1->set_line_orientation(
0, switch_2->line_orientation(0));
switch_1->set_line_orientation(
switch_1->set_children(2,
switch_2->child_index(2));
- switch_2->set(
- internal::TriangulationImplementation::TriaObject(
- {switch_1_lines[0],
- switch_1_lines[1],
- switch_1_lines[2],
- switch_1_lines[3]}));
+ switch_2->set({switch_1_lines[0],
+ switch_1_lines[1],
+ switch_1_lines[2],
+ switch_1_lines[3]});
switch_2->set_line_orientation(
0, switch_1_line_orientations[0]);
switch_2->set_line_orientation(
ExcMessage(
"Internal error: We want to use a cell during refinement that should be unused, but turns out not to be."));
- children[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {middle_line->vertex_index(0),
- next_unused_vertex}));
- children[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {next_unused_vertex,
- middle_line->vertex_index(1)}));
+ children[0]->set({middle_line->vertex_index(0),
+ next_unused_vertex});
+ children[1]->set({next_unused_vertex,
+ middle_line->vertex_index(1)});
children[0]->set_used_flag();
children[1]->set_used_flag();
quad->line(3)->child(0)->vertex_index(1),
next_unused_vertex};
- new_lines[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[2], vertex_indices[4]}));
- new_lines[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[4], vertex_indices[3]}));
- new_lines[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[0], vertex_indices[4]}));
- new_lines[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[4], vertex_indices[1]}));
+ new_lines[0]->set({vertex_indices[2], vertex_indices[4]});
+ new_lines[1]->set({vertex_indices[4], vertex_indices[3]});
+ new_lines[2]->set({vertex_indices[0], vertex_indices[4]});
+ new_lines[3]->set({vertex_indices[4], vertex_indices[1]});
for (const auto &new_line : new_lines)
{
// note these quads as children to the present one
quad->set_children(0, new_quads[0]->index());
quad->set_children(2, new_quads[2]->index());
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[0],
- line_indices[8],
- line_indices[4],
- line_indices[10]}));
+ new_quads[0]->set({line_indices[0],
+ line_indices[8],
+ line_indices[4],
+ line_indices[10]});
quad->set_refinement_case(RefinementCase<2>::cut_xy);
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[0],
- line_indices[8],
- line_indices[4],
- line_indices[10]}));
- new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[8],
- line_indices[2],
- line_indices[5],
- line_indices[11]}));
- new_quads[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[1],
- line_indices[9],
- line_indices[10],
- line_indices[6]}));
- new_quads[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[9],
- line_indices[3],
- line_indices[11],
- line_indices[7]}));
+ new_quads[0]->set({line_indices[0],
+ line_indices[8],
+ line_indices[4],
+ line_indices[10]});
+ new_quads[1]->set({line_indices[8],
+ line_indices[2],
+ line_indices[5],
+ line_indices[11]});
+ new_quads[2]->set({line_indices[1],
+ line_indices[9],
+ line_indices[10],
+ line_indices[6]});
+ new_quads[3]->set({line_indices[9],
+ line_indices[3],
+ line_indices[11],
+ line_indices[7]});
for (const auto &new_quad : new_quads)
{
new_quad->set_used_flag();
// set up the new quad, line numbering is as
// indicated above
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[0],
- line_indices[1],
- line_indices[2],
- line_indices[3]}));
+ new_quads[0]->set({line_indices[0],
+ line_indices[1],
+ line_indices[2],
+ line_indices[3]});
new_quads[0]->set_line_orientation(
0, line_orientation[0]);
};
- new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[1],
- quad_indices[0],
- quad_indices[3],
- quad_indices[5],
- quad_indices[7],
- quad_indices[9]}));
- new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[0],
- quad_indices[2],
- quad_indices[4],
- quad_indices[6],
- quad_indices[8],
- quad_indices[10]}));
+ new_hexes[0]->set({quad_indices[1],
+ quad_indices[0],
+ quad_indices[3],
+ quad_indices[5],
+ quad_indices[7],
+ quad_indices[9]});
+ new_hexes[1]->set({quad_indices[0],
+ quad_indices[2],
+ quad_indices[4],
+ quad_indices[6],
+ quad_indices[8],
+ quad_indices[10]});
break;
}
// set up the new quad, line numbering is as
// indicated above
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[2],
- line_indices[3],
- line_indices[0],
- line_indices[1]}));
+ new_quads[0]->set({line_indices[2],
+ line_indices[3],
+ line_indices[0],
+ line_indices[1]});
new_quads[0]->set_line_orientation(
0, line_orientation[2]);
};
- new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[1],
- quad_indices[3],
- quad_indices[5],
- quad_indices[0],
- quad_indices[7],
- quad_indices[9]}));
- new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[2],
- quad_indices[4],
- quad_indices[0],
- quad_indices[6],
- quad_indices[8],
- quad_indices[10]}));
+ new_hexes[0]->set({quad_indices[1],
+ quad_indices[3],
+ quad_indices[5],
+ quad_indices[0],
+ quad_indices[7],
+ quad_indices[9]});
+ new_hexes[1]->set({quad_indices[2],
+ quad_indices[4],
+ quad_indices[0],
+ quad_indices[6],
+ quad_indices[8],
+ quad_indices[10]});
break;
}
// set up the new quad, line numbering is as
// indicated above
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[0],
- line_indices[1],
- line_indices[2],
- line_indices[3]}));
+ new_quads[0]->set({line_indices[0],
+ line_indices[1],
+ line_indices[2],
+ line_indices[3]});
new_quads[0]->set_line_orientation(
0, line_orientation[0]);
hex->face(5)->index() // 10
};
- new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[1],
- quad_indices[3],
- quad_indices[5],
- quad_indices[7],
- quad_indices[9],
- quad_indices[0]}));
- new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[2],
- quad_indices[4],
- quad_indices[6],
- quad_indices[8],
- quad_indices[0],
- quad_indices[10]}));
+ new_hexes[0]->set({quad_indices[1],
+ quad_indices[3],
+ quad_indices[5],
+ quad_indices[7],
+ quad_indices[9],
+ quad_indices[0]});
+ new_hexes[1]->set({quad_indices[2],
+ quad_indices[4],
+ quad_indices[6],
+ quad_indices[8],
+ quad_indices[0],
+ quad_indices[10]});
break;
}
// first, create the new internal line
new_lines[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {middle_vertex_index<dim, spacedim>(hex->face(4)),
- middle_vertex_index<dim, spacedim>(
- hex->face(5))}));
+ {middle_vertex_index<dim, spacedim>(hex->face(4)),
+ middle_vertex_index<dim, spacedim>(hex->face(5))});
// again, first collect some data about the
// indices of the lines, with the following
// | | | | | |
// *---*---*y *-6-*-7-*
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[2],
- line_indices[12],
- line_indices[4],
- line_indices[8]}));
- new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[12],
- line_indices[3],
- line_indices[5],
- line_indices[9]}));
- new_quads[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[6],
- line_indices[10],
- line_indices[0],
- line_indices[12]}));
- new_quads[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[7],
- line_indices[11],
- line_indices[12],
- line_indices[1]}));
+ new_quads[0]->set({line_indices[2],
+ line_indices[12],
+ line_indices[4],
+ line_indices[8]});
+ new_quads[1]->set({line_indices[12],
+ line_indices[3],
+ line_indices[5],
+ line_indices[9]});
+ new_quads[2]->set({line_indices[6],
+ line_indices[10],
+ line_indices[0],
+ line_indices[12]});
+ new_quads[3]->set({line_indices[7],
+ line_indices[11],
+ line_indices[12],
+ line_indices[1]});
new_quads[0]->set_line_orientation(
0, line_orientation[2]);
GeometryInfo<dim>::standard_to_real_face_vertex(
3, f_or[5], f_fl[5], f_ro[5]))};
- new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[4],
- quad_indices[0],
- quad_indices[8],
- quad_indices[2],
- quad_indices[12],
- quad_indices[16]}));
- new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[0],
- quad_indices[6],
- quad_indices[9],
- quad_indices[3],
- quad_indices[13],
- quad_indices[17]}));
- new_hexes[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[5],
- quad_indices[1],
- quad_indices[2],
- quad_indices[10],
- quad_indices[14],
- quad_indices[18]}));
- new_hexes[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[1],
- quad_indices[7],
- quad_indices[3],
- quad_indices[11],
- quad_indices[15],
- quad_indices[19]}));
+ new_hexes[0]->set({quad_indices[4],
+ quad_indices[0],
+ quad_indices[8],
+ quad_indices[2],
+ quad_indices[12],
+ quad_indices[16]});
+ new_hexes[1]->set({quad_indices[0],
+ quad_indices[6],
+ quad_indices[9],
+ quad_indices[3],
+ quad_indices[13],
+ quad_indices[17]});
+ new_hexes[2]->set({quad_indices[5],
+ quad_indices[1],
+ quad_indices[2],
+ quad_indices[10],
+ quad_indices[14],
+ quad_indices[18]});
+ new_hexes[3]->set({quad_indices[1],
+ quad_indices[7],
+ quad_indices[3],
+ quad_indices[11],
+ quad_indices[15],
+ quad_indices[19]});
break;
}
// first, create the new internal line
new_lines[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {middle_vertex_index<dim, spacedim>(hex->face(2)),
- middle_vertex_index<dim, spacedim>(
- hex->face(3))}));
+ {middle_vertex_index<dim, spacedim>(hex->face(2)),
+ middle_vertex_index<dim, spacedim>(hex->face(3))});
// again, first collect some data about the
// indices of the lines, with the following
// / / / / / /
// *----*----*x *--6-*--7-*
- new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[0],
- line_indices[12],
- line_indices[6],
- line_indices[10]}));
- new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[12],
- line_indices[1],
- line_indices[7],
- line_indices[11]}));
- new_quads[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[4],
- line_indices[8],
- line_indices[2],
- line_indices[12]}));
- new_quads[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[5],
- line_indices[9],
- line_indices[12],
- line_indices[3]}));
+ new_quads[0]->set({line_indices[0],
+ line_indices[12],
+ line_indices[6],
+ line_indices[10]});
+ new_quads[1]->set({line_indices[12],
+ line_indices[1],
+ line_indices[7],
+ line_indices[11]});
+ new_quads[2]->set({line_indices[4],
+ line_indices[8],
+ line_indices[2],
+ line_indices[12]});
+ new_quads[3]->set({line_indices[5],
+ line_indices[9],
+ line_indices[12],
+ line_indices[3]});
new_quads[0]->set_line_orientation(
0, line_orientation[0]);
// *---*---*
// | 0 | 2 |
// *---*---*
- new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[4],
- quad_indices[2],
- quad_indices[8],
- quad_indices[12],
- quad_indices[16],
- quad_indices[0]}));
- new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[5],
- quad_indices[3],
- quad_indices[9],
- quad_indices[13],
- quad_indices[0],
- quad_indices[18]}));
- new_hexes[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[2],
- quad_indices[6],
- quad_indices[10],
- quad_indices[14],
- quad_indices[17],
- quad_indices[1]}));
- new_hexes[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[3],
- quad_indices[7],
- quad_indices[11],
- quad_indices[15],
- quad_indices[1],
- quad_indices[19]}));
+ new_hexes[0]->set({quad_indices[4],
+ quad_indices[2],
+ quad_indices[8],
+ quad_indices[12],
+ quad_indices[16],
+ quad_indices[0]});
+ new_hexes[1]->set({quad_indices[5],
+ quad_indices[3],
+ quad_indices[9],
+ quad_indices[13],
+ quad_indices[0],
+ quad_indices[18]});
+ new_hexes[2]->set({quad_indices[2],
+ quad_indices[6],
+ quad_indices[10],
+ quad_indices[14],
+ quad_indices[17],
+ quad_indices[1]});
+ new_hexes[3]->set({quad_indices[3],
+ quad_indices[7],
+ quad_indices[11],
+ quad_indices[15],
+ quad_indices[1],
+ quad_indices[19]});
break;
}
// first, create the new
// internal line
new_lines[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {middle_vertex_index<dim, spacedim>(hex->face(0)),
- middle_vertex_index<dim, spacedim>(
- hex->face(1))}));
+
+ {middle_vertex_index<dim, spacedim>(hex->face(0)),
+ middle_vertex_index<dim, spacedim>(hex->face(1))});
// again, first collect some data about the
// indices of the lines, with the following
// *---------*x *----0----*
new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[6],
- line_indices[10],
- line_indices[0],
- line_indices[12]}));
+
+ {line_indices[6],
+ line_indices[10],
+ line_indices[0],
+ line_indices[12]});
new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[7],
- line_indices[11],
- line_indices[12],
- line_indices[1]}));
+
+ {line_indices[7],
+ line_indices[11],
+ line_indices[12],
+ line_indices[1]});
new_quads[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[2],
- line_indices[12],
- line_indices[4],
- line_indices[8]}));
+
+ {line_indices[2],
+ line_indices[12],
+ line_indices[4],
+ line_indices[8]});
new_quads[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[12],
- line_indices[3],
- line_indices[5],
- line_indices[9]}));
+
+ {line_indices[12],
+ line_indices[3],
+ line_indices[5],
+ line_indices[9]});
new_quads[0]->set_line_orientation(
0, line_orientation[6]);
1][f_fl[5]][f_ro[5]])};
new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[4],
- quad_indices[8],
- quad_indices[12],
- quad_indices[2],
- quad_indices[16],
- quad_indices[0]}));
+
+ {quad_indices[4],
+ quad_indices[8],
+ quad_indices[12],
+ quad_indices[2],
+ quad_indices[16],
+ quad_indices[0]});
new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[5],
- quad_indices[9],
- quad_indices[2],
- quad_indices[14],
- quad_indices[17],
- quad_indices[1]}));
+
+ {quad_indices[5],
+ quad_indices[9],
+ quad_indices[2],
+ quad_indices[14],
+ quad_indices[17],
+ quad_indices[1]});
new_hexes[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[6],
- quad_indices[10],
- quad_indices[13],
- quad_indices[3],
- quad_indices[0],
- quad_indices[18]}));
+
+ {quad_indices[6],
+ quad_indices[10],
+ quad_indices[13],
+ quad_indices[3],
+ quad_indices[0],
+ quad_indices[18]});
new_hexes[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[7],
- quad_indices[11],
- quad_indices[3],
- quad_indices[15],
- quad_indices[1],
- quad_indices[19]}));
+
+ {quad_indices[7],
+ quad_indices[11],
+ quad_indices[3],
+ quad_indices[15],
+ quad_indices[1],
+ quad_indices[19]});
break;
}
next_unused_vertex};
new_lines[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[2], vertex_indices[6]}));
+
+ {vertex_indices[2], vertex_indices[6]});
new_lines[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[6], vertex_indices[3]}));
+
+ {vertex_indices[6], vertex_indices[3]});
new_lines[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[0], vertex_indices[6]}));
+
+ {vertex_indices[0], vertex_indices[6]});
new_lines[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[6], vertex_indices[1]}));
+
+ {vertex_indices[6], vertex_indices[1]});
new_lines[4]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[4], vertex_indices[6]}));
+
+ {vertex_indices[4], vertex_indices[6]});
new_lines[5]->set(
- internal::TriangulationImplementation::TriaObject(
- {vertex_indices[6], vertex_indices[5]}));
+
+ {vertex_indices[6], vertex_indices[5]});
// again, first collect some data about the
// indices of the lines, with the following
// *----*----*x *--8-*--9-*
new_quads[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[10],
- line_indices[28],
- line_indices[16],
- line_indices[24]}));
+
+ {line_indices[10],
+ line_indices[28],
+ line_indices[16],
+ line_indices[24]});
new_quads[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[28],
- line_indices[14],
- line_indices[17],
- line_indices[25]}));
+
+ {line_indices[28],
+ line_indices[14],
+ line_indices[17],
+ line_indices[25]});
new_quads[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[11],
- line_indices[29],
- line_indices[24],
- line_indices[20]}));
+
+ {line_indices[11],
+ line_indices[29],
+ line_indices[24],
+ line_indices[20]});
new_quads[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[29],
- line_indices[15],
- line_indices[25],
- line_indices[21]}));
+
+ {line_indices[29],
+ line_indices[15],
+ line_indices[25],
+ line_indices[21]});
new_quads[4]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[18],
- line_indices[26],
- line_indices[0],
- line_indices[28]}));
+
+ {line_indices[18],
+ line_indices[26],
+ line_indices[0],
+ line_indices[28]});
new_quads[5]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[26],
- line_indices[22],
- line_indices[1],
- line_indices[29]}));
+
+ {line_indices[26],
+ line_indices[22],
+ line_indices[1],
+ line_indices[29]});
new_quads[6]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[19],
- line_indices[27],
- line_indices[28],
- line_indices[4]}));
+
+ {line_indices[19],
+ line_indices[27],
+ line_indices[28],
+ line_indices[4]});
new_quads[7]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[27],
- line_indices[23],
- line_indices[29],
- line_indices[5]}));
+
+ {line_indices[27],
+ line_indices[23],
+ line_indices[29],
+ line_indices[5]});
new_quads[8]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[2],
- line_indices[24],
- line_indices[8],
- line_indices[26]}));
+
+ {line_indices[2],
+ line_indices[24],
+ line_indices[8],
+ line_indices[26]});
new_quads[9]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[24],
- line_indices[6],
- line_indices[9],
- line_indices[27]}));
+
+ {line_indices[24],
+ line_indices[6],
+ line_indices[9],
+ line_indices[27]});
new_quads[10]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[3],
- line_indices[25],
- line_indices[26],
- line_indices[12]}));
+
+ {line_indices[3],
+ line_indices[25],
+ line_indices[26],
+ line_indices[12]});
new_quads[11]->set(
- internal::TriangulationImplementation::TriaObject(
- {line_indices[25],
- line_indices[7],
- line_indices[27],
- line_indices[13]}));
+
+ {line_indices[25],
+ line_indices[7],
+ line_indices[27],
+ line_indices[13]});
// now reset the line_orientation flags of outer
// lines as they cannot be set in a loop (at
// bottom children
new_hexes[0]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[12],
- quad_indices[0],
- quad_indices[20],
- quad_indices[4],
- quad_indices[28],
- quad_indices[8]}));
+
+ {quad_indices[12],
+ quad_indices[0],
+ quad_indices[20],
+ quad_indices[4],
+ quad_indices[28],
+ quad_indices[8]});
new_hexes[1]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[0],
- quad_indices[16],
- quad_indices[22],
- quad_indices[6],
- quad_indices[29],
- quad_indices[9]}));
+
+ {quad_indices[0],
+ quad_indices[16],
+ quad_indices[22],
+ quad_indices[6],
+ quad_indices[29],
+ quad_indices[9]});
new_hexes[2]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[13],
- quad_indices[1],
- quad_indices[4],
- quad_indices[24],
- quad_indices[30],
- quad_indices[10]}));
+
+ {quad_indices[13],
+ quad_indices[1],
+ quad_indices[4],
+ quad_indices[24],
+ quad_indices[30],
+ quad_indices[10]});
new_hexes[3]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[1],
- quad_indices[17],
- quad_indices[6],
- quad_indices[26],
- quad_indices[31],
- quad_indices[11]}));
+
+ {quad_indices[1],
+ quad_indices[17],
+ quad_indices[6],
+ quad_indices[26],
+ quad_indices[31],
+ quad_indices[11]});
// top children
new_hexes[4]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[14],
- quad_indices[2],
- quad_indices[21],
- quad_indices[5],
- quad_indices[8],
- quad_indices[32]}));
+
+ {quad_indices[14],
+ quad_indices[2],
+ quad_indices[21],
+ quad_indices[5],
+ quad_indices[8],
+ quad_indices[32]});
new_hexes[5]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[2],
- quad_indices[18],
- quad_indices[23],
- quad_indices[7],
- quad_indices[9],
- quad_indices[33]}));
+
+ {quad_indices[2],
+ quad_indices[18],
+ quad_indices[23],
+ quad_indices[7],
+ quad_indices[9],
+ quad_indices[33]});
new_hexes[6]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[15],
- quad_indices[3],
- quad_indices[5],
- quad_indices[25],
- quad_indices[10],
- quad_indices[34]}));
+
+ {quad_indices[15],
+ quad_indices[3],
+ quad_indices[5],
+ quad_indices[25],
+ quad_indices[10],
+ quad_indices[34]});
new_hexes[7]->set(
- internal::TriangulationImplementation::TriaObject(
- {quad_indices[3],
- quad_indices[19],
- quad_indices[7],
- quad_indices[27],
- quad_indices[11],
- quad_indices[35]}));
+
+ {quad_indices[3],
+ quad_indices[19],
+ quad_indices[7],
+ quad_indices[27],
+ quad_indices[11],
+ quad_indices[35]});
break;
}
default: