Vector<float> error_per_cell (this->triangulation.n_active_cells());
KellyErrorEstimator<dim>::estimate (this->dof_handler,
QGauss<dim-1>(2),
typename FunctionMap<dim>::type(),
this->accumulated_displacement, // incremental_displacement,
error_per_cell,
ComponentMask(),
0,
MultithreadInfo::n_threads(),
this->this_mpi_process);
const unsigned int n_local_cells = this->triangulation.n_locally_owned_active_cells ();
PETScWrappers::MPI::Vector
distributed_error_per_cell (this->mpi_communicator,
this->triangulation.n_active_cells(),
n_local_cells);
for (unsigned int i=0; i<error_per_cell.size(); ++i)
if (error_per_cell(i) != 0)
distributed_error_per_cell(i) = error_per_cell(i);
distributed_error_per_cell.compress (VectorOperation::insert);
error_per_cell = distributed_error_per_cell;
GridRefinement::refine_and_coarsen_fixed_number (this->triangulation,
error_per_cell,
0.35, 0.03);
this->triangulation.execute_coarsening_and_refinement ();