* @note This function can only be called on direct parent cells, i.e.,
* non-active cells whose children are all active.
*
- * @note On parallel::shared::Triangulation objects where sibling cells
+ * @note On parallel Triangulation objects where sibling cells
* can be ghost cells, make sure that future FE indices have been properly
* communicated with communicate_future_fe_indices() first. Otherwise,
* results might differ on different processors. There is no check for
"You ask for information on children of this cell which is only "
"available for active cells. One of its children is not active."));
- // Ghost siblings might occur on parallel::shared::Triangulation
+ // Ghost siblings might occur on parallel Triangulation
// objects. The public interface does not allow to access future
// FE indices on ghost cells. However, we need this information
// here and thus call the internal function that does not check
}));
// refinement signals
- this->tria_listeners_for_transfer.push_back(
- this->tria->signals.pre_refinement.connect([this]() {
- internal::hp::DoFHandlerImplementation::Implementation::
- communicate_future_fe_indices(*this);
- }));
this->tria_listeners_for_transfer.push_back(
this->tria->signals.pre_refinement.connect(
[this]() { this->pre_transfer_action(); }));
this->active_fe_index_transfer = std::make_unique<ActiveFEIndexTransfer>();
+ internal::hp::DoFHandlerImplementation::Implementation::
+ communicate_future_fe_indices(*this);
+
dealii::internal::hp::DoFHandlerImplementation::Implementation::
collect_fe_indices_on_cells_to_be_refined(*this);
}
active_fe_index_transfer->active_fe_indices.resize(
get_triangulation().n_active_cells(), numbers::invalid_fe_index);
+ // Collect future FE indices on locally owned and ghost cells.
+ // The public interface does not allow to access future FE indices
+ // on ghost cells. However, we need this information here and thus
+ // call the internal function that does not check for cell ownership.
+ internal::hp::DoFHandlerImplementation::Implementation::
+ communicate_future_fe_indices(*this);
+
for (const auto &cell : active_cell_iterators())
- if (cell->is_locally_owned())
+ if (cell->is_artificial() == false)
active_fe_index_transfer->active_fe_indices[cell->active_cell_index()] =
- cell->future_fe_index();
+ dealii::internal::DoFCellAccessorImplementation::Implementation::
+ future_fe_index<dim, spacedim, false>(*cell);
// Create transfer object and attach to it.
const auto *distributed_tria =