12 Triangulation<dim> &triangulation,
13 DoFHandler<dim> &dof_handler,
14 Vector<double> &solution,
15 SolutionTransfer<dim> &solution_trans,
17 const unsigned int min_grid_level,
18 const unsigned int max_grid_level,
19 const unsigned int max_cells,
20 const double refine_fraction,
21 const double coarsen_fraction)
23 Vector<float> estimated_error_per_cell(triangulation.n_active_cells());
24 KellyErrorEstimator<dim>::estimate(
26 QGauss<dim-1>(fe.degree+1),
27 typename FunctionMap<dim>::type(),
29 estimated_error_per_cell);
30 GridRefinement::refine_and_coarsen_fixed_fraction(
32 estimated_error_per_cell,
35 if (triangulation.n_levels() > max_grid_level)
37 for (
auto cell = triangulation.begin_active(max_grid_level);
38 cell != triangulation.end(); ++cell)
40 cell->clear_refine_flag ();
43 for (
auto cell = triangulation.begin_active(min_grid_level);
44 cell != triangulation.end_active(min_grid_level); ++cell)
46 cell->clear_coarsen_flag ();
48 if ((max_cells > 0) & (triangulation.n_active_cells() > max_cells))
50 for (
auto cell = triangulation.begin_active(); cell != triangulation.end(); ++cell)
52 cell->clear_refine_flag ();
55 triangulation.prepare_coarsening_and_refinement();
56 solution_trans.prepare_for_coarsening_and_refinement(solution);
57 triangulation.execute_coarsening_and_refinement();
67 Assert(
false, ExcNotImplemented());
72 Triangulation<dim> &triangulation,
73 const std::vector<unsigned int> boundary_ids,
74 const unsigned int refinement_cycles)
76 for (
unsigned int i = 0; i < refinement_cycles; i++)
78 for (
auto cell : triangulation.active_cell_iterators())
80 if (!(cell->at_boundary()))
84 for (
unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
86 if (!cell->face(f)->at_boundary())
91 for (
auto boundary_id : boundary_ids)
93 if (cell->face(f)->boundary_id() == boundary_id)
95 cell->set_refine_flag();
106 triangulation.execute_coarsening_and_refinement();
void refine_mesh_near_boundaries(Triangulation< dim > &triangulation, const std::vector< unsigned int > boundary_ids, const unsigned int refinement_cycles)
Definition: refinement.h:71
void adaptive_refine_mesh(Triangulation< dim > &triangulation, DoFHandler< dim > &dof_handler, Vector< double > &solution, SolutionTransfer< dim > &solution_trans, const FE_Q< dim > fe, const unsigned int min_grid_level, const unsigned int max_grid_level, const unsigned int max_cells, const double refine_fraction, const double coarsen_fraction)
Adaptive grid refinement method from deal.II's step-26 tutorial.
Definition: refinement.h:11