void Step::make_grid ()
{
Point<2> center (0,0);
GridGenerator::hyper_cube_with_cylindrical_hole ( tria_1, 0.25, 0.5);
GridGenerator::hyper_ball (tria_2, center, 0.25);
GridGenerator::merge_triangulations (tria_1, tria_2, triangulation);
const SphericalManifold<2> boundary_description(center);
triangulation.set_manifold (1, boundary_description);
std::ofstream out ("grid-1.eps"); GridOut grid_out; grid_out.write_eps (triangulation, out);
}
if I add the following codes,
Triangulation<2>::active_cell_iterator cell = triangulation.begin_active(), endc = triangulation.end();
for (; cell!=endc; ++cell)
cell->set_all_manifold_ids (1);
I will get
void Step::make_grid () // Without Using GMESH to do it with inclusion.
{
// Tria_1
std::vector< unsigned int > repetitions(2);
repetitions[0] = 3; repetitions[1] = 3;
GridGenerator::subdivided_hyper_rectangle (tria_1, repetitions, Point<2>(-1.,-1.),Point<2>(1.,1.));
// Tria_2
std::set< typename Triangulation<2>::active_cell_iterator > cells_to_remove;
Triangulation<2>::active_cell_iterator cell = tria_1.begin_active(), endc = tria_1.end();
for (; cell!=endc; ++cell)
{
if (cell->at_boundary ())
{}
else
cells_to_remove.insert(cell);
}
GridGenerator::create_triangulation_with_removed_cells (tria_1, cells_to_remove, tria_2);
// Tria_3
Point<2> center (0,0);
GridGenerator::hyper_ball (tria_3, center, 1./3.*sqrt(2.0));
// Merge
GridGenerator::merge_triangulations (tria_2, tria_3, triangulation);
// Set manifold
cell = triangulation.begin_active(), endc = triangulation.end();
for (; cell!=endc; ++cell)
if (cell->at_boundary ())
cell->set_all_manifold_ids (10);
const SphericalManifold<2> boundary_description(center);
triangulation.set_manifold (10, boundary_description);
// Refine
triangulation.refine_global (3);
// Output
std::ofstream out ("grid-1.eps");
GridOut grid_out;
grid_out.write_eps (triangulation, out);
}
Best,
Chenchen