struct PeriodicFacePair;
}
-namespace internal
+namespace parallel
{
- namespace parallel
+ namespace distributed
{
- namespace distributed
- {
- template <int, int>
- class TemporarilyMatchRefineFlags;
- }
- } // namespace parallel
-} // namespace internal
+ template <int, int>
+ class TemporarilyMatchRefineFlags;
+ }
+} // namespace parallel
# endif
namespace parallel
friend class dealii::FETools::internal::ExtrapolateImplementation;
template <int, int>
- friend class dealii::internal::parallel::distributed::
- TemporarilyMatchRefineFlags;
+ friend class TemporarilyMatchRefineFlags;
};
const unsigned int coarse_cell_index) const override;
template <int, int>
- friend class dealii::internal::parallel::distributed::
- TemporarilyMatchRefineFlags;
+ friend class TemporarilyMatchRefineFlags;
};
} // namespace distributed
} // namespace parallel
#endif
-namespace internal
+namespace parallel
{
- namespace parallel
+ namespace distributed
{
- namespace distributed
+ /**
+ * This class temporarily modifies the refine and coarsen flags of all
+ * active cells to match the p4est oracle.
+ *
+ * The modification only happens on parallel::distributed::Triangulation
+ * objects, and persists for the lifetime of an instantiation of this
+ * class.
+ *
+ * The TemporarilyMatchRefineFlags class should only be used in
+ * combination with the Triangulation::Signals::post_p4est_refinement
+ * signal. At this stage, the p4est orcale already has been refined, but
+ * the triangulation is still unchanged. After the modification, all
+ * refine and coarsen flags describe how the traingulation will acutally
+ * be refined.
+ */
+ template <int dim, int spacedim = dim>
+ class TemporarilyMatchRefineFlags : public Subscriptor
{
+ public:
/**
- * This class temporarily modifies the refine and coarsen flags of all
- * active cells to match the p4est oracle.
+ * Constructor.
*
- * The modification only happens on parallel::distributed::Triangulation
- * objects, and persists for the lifetime of an instantiation of this
- * class.
+ * Stores the refine and coarsen flags of all active cells if the
+ * provided Triangulation is of type
+ * parallel::distributed::Triangulation.
*
- * The TemporarilyMatchRefineFlags class should only be used in
- * combination with the Triangulation::Signals::post_p4est_refinement
- * signal. At this stage, the p4est orcale already has been refined, but
- * the triangulation is still unchanged. After the modification, all
- * refine and coarsen flags describe how the traingulation will acutally
- * be refined.
+ * Adjusts them to be consistent with the p4est oracle.
*/
- template <int dim, int spacedim = dim>
- class TemporarilyMatchRefineFlags : public Subscriptor
- {
- public:
- /**
- * Constructor.
- *
- * Stores the refine and coarsen flags of all active cells if the
- * provided Triangulation is of type
- * parallel::distributed::Triangulation.
- *
- * Adjusts them to be consistent with the p4est oracle.
- */
- TemporarilyMatchRefineFlags(Triangulation<dim, spacedim> &tria);
+ TemporarilyMatchRefineFlags(dealii::Triangulation<dim, spacedim> &tria);
- /**
- * Destructor.
- *
- * Returns the refine and coarsen flags of all active cells on the
- * parallel::distributed::Triangulation into their previous state.
- */
- ~TemporarilyMatchRefineFlags();
+ /**
+ * Destructor.
+ *
+ * Returns the refine and coarsen flags of all active cells on the
+ * parallel::distributed::Triangulation into their previous state.
+ */
+ ~TemporarilyMatchRefineFlags();
- private:
- /**
- * The modified parallel::distributed::Triangulation.
- */
- const SmartPointer<
- dealii::parallel::distributed::Triangulation<dim, spacedim>>
- distributed_tria;
+ private:
+ /**
+ * The modified parallel::distributed::Triangulation.
+ */
+ const SmartPointer<
+ dealii::parallel::distributed::Triangulation<dim, spacedim>>
+ distributed_tria;
- /**
- * A vector that temporarily stores the refine flags before they have
- * been modified on the parallel::distributed::Triangulation.
- */
- std::vector<bool> saved_refine_flags;
+ /**
+ * A vector that temporarily stores the refine flags before they have
+ * been modified on the parallel::distributed::Triangulation.
+ */
+ std::vector<bool> saved_refine_flags;
- /**
- * A vector that temporarily stores the coarsen flags before they have
- * been modified on the parallel::distributed::Triangulation.
- */
- std::vector<bool> saved_coarsen_flags;
- };
- } // namespace distributed
- } // namespace parallel
-} // namespace internal
+ /**
+ * A vector that temporarily stores the coarsen flags before they have
+ * been modified on the parallel::distributed::Triangulation.
+ */
+ std::vector<bool> saved_coarsen_flags;
+ };
+ } // namespace distributed
+} // namespace parallel
DEAL_II_NAMESPACE_CLOSE
-namespace internal
+namespace parallel
{
- namespace parallel
+ namespace distributed
{
- namespace distributed
+ template <int dim, int spacedim>
+ TemporarilyMatchRefineFlags<dim, spacedim>::TemporarilyMatchRefineFlags(
+ dealii::Triangulation<dim, spacedim> &tria)
+ : distributed_tria(
+ dynamic_cast<
+ dealii::parallel::distributed::Triangulation<dim, spacedim> *>(
+ &tria))
{
- template <int dim, int spacedim>
- TemporarilyMatchRefineFlags<dim, spacedim>::TemporarilyMatchRefineFlags(
- Triangulation<dim, spacedim> &tria)
- : distributed_tria(
- dynamic_cast<
- dealii::parallel::distributed::Triangulation<dim, spacedim> *>(
- &tria))
- {
#ifdef DEAL_II_WITH_P4EST
- if (distributed_tria != nullptr)
- {
- // Save the current set of refinement flags, and adjust the
- // refinement flags to be consistent with the p4est oracle.
- distributed_tria->save_coarsen_flags(saved_coarsen_flags);
- distributed_tria->save_refine_flags(saved_refine_flags);
+ if (distributed_tria != nullptr)
+ {
+ // Save the current set of refinement flags, and adjust the
+ // refinement flags to be consistent with the p4est oracle.
+ distributed_tria->save_coarsen_flags(saved_coarsen_flags);
+ distributed_tria->save_refine_flags(saved_refine_flags);
- for (const auto &pair : distributed_tria->local_cell_relations)
- {
- const auto &cell = pair.first;
- const auto &status = pair.second;
+ for (const auto &pair : distributed_tria->local_cell_relations)
+ {
+ const auto &cell = pair.first;
+ const auto &status = pair.second;
- switch (status)
- {
- case dealii::Triangulation<dim, spacedim>::CELL_PERSIST:
- // cell remains unchanged
- cell->clear_refine_flag();
- cell->clear_coarsen_flag();
- break;
+ switch (status)
+ {
+ case dealii::Triangulation<dim, spacedim>::CELL_PERSIST:
+ // cell remains unchanged
+ cell->clear_refine_flag();
+ cell->clear_coarsen_flag();
+ break;
- case dealii::Triangulation<dim, spacedim>::CELL_REFINE:
- // cell will be refined
- cell->clear_coarsen_flag();
- cell->set_refine_flag();
- break;
+ case dealii::Triangulation<dim, spacedim>::CELL_REFINE:
+ // cell will be refined
+ cell->clear_coarsen_flag();
+ cell->set_refine_flag();
+ break;
- case dealii::Triangulation<dim, spacedim>::CELL_COARSEN:
- // children of this cell will be coarsened
- for (const auto &child : cell->child_iterators())
- {
- child->clear_refine_flag();
- child->set_coarsen_flag();
- }
- break;
+ case dealii::Triangulation<dim, spacedim>::CELL_COARSEN:
+ // children of this cell will be coarsened
+ for (const auto &child : cell->child_iterators())
+ {
+ child->clear_refine_flag();
+ child->set_coarsen_flag();
+ }
+ break;
- case dealii::Triangulation<dim, spacedim>::CELL_INVALID:
- // do nothing as cell does not exist yet
- break;
+ case dealii::Triangulation<dim, spacedim>::CELL_INVALID:
+ // do nothing as cell does not exist yet
+ break;
- default:
- Assert(false, ExcInternalError());
- break;
- }
- }
- }
+ default:
+ Assert(false, ExcInternalError());
+ break;
+ }
+ }
+ }
#endif
- }
+ }
- template <int dim, int spacedim>
- TemporarilyMatchRefineFlags<dim, spacedim>::~TemporarilyMatchRefineFlags()
- {
+ template <int dim, int spacedim>
+ TemporarilyMatchRefineFlags<dim, spacedim>::~TemporarilyMatchRefineFlags()
+ {
#ifdef DEAL_II_WITH_P4EST
- if (distributed_tria)
- {
- // Undo the refinement flags modification.
- distributed_tria->load_coarsen_flags(saved_coarsen_flags);
- distributed_tria->load_refine_flags(saved_refine_flags);
- }
+ if (distributed_tria)
+ {
+ // Undo the refinement flags modification.
+ distributed_tria->load_coarsen_flags(saved_coarsen_flags);
+ distributed_tria->load_refine_flags(saved_refine_flags);
+ }
#else
- // pretend that this destructor does something to silence clang-tidy
- (void)distributed_tria;
+ // pretend that this destructor does something to silence clang-tidy
+ (void)distributed_tria;
#endif
- }
- } // namespace distributed
- } // namespace parallel
-} // namespace internal
+ }
+ } // namespace distributed
+} // namespace parallel
#if deal_II_dimension <= deal_II_space_dimension
template class Triangulation<deal_II_dimension,
deal_II_space_dimension>;
-#endif
- \}
- \}
- namespace internal
- \{
- namespace parallel
- \{
- namespace distributed
- \{
-#if deal_II_dimension <= deal_II_space_dimension
- template class TemporarilyMatchRefineFlags<deal_II_dimension,
- deal_II_space_dimension>;
+ template class TemporarilyMatchRefineFlags<deal_II_dimension,
+ deal_II_space_dimension>;
#endif
- \}
\}
\}
}
// ----- connect error predictor -----
Vector<float> predicted_errors;
tria.signals.post_p4est_refinement.connect([&]() {
- const internal::parallel::distributed::TemporarilyMatchRefineFlags<dim>
+ const parallel::distributed::TemporarilyMatchRefineFlags<dim>
refine_modifier(tria);
predicted_errors.reinit(tria.n_active_cells());
hp::Refinement::predict_error(dh,
// ----- connect error predictor -----
Vector<float> predicted_errors;
tria.signals.post_p4est_refinement.connect([&]() {
- const internal::parallel::distributed::TemporarilyMatchRefineFlags<dim>
+ const parallel::distributed::TemporarilyMatchRefineFlags<dim>
refine_modifier(tria);
predicted_errors.reinit(tria.n_active_cells());
hp::Refinement::predict_error(dh,
bool fe_indices_changed = false;
tria.signals.post_p4est_refinement.connect(
[&]() {
- const internal::parallel::distributed::TemporarilyMatchRefineFlags<dim>
+ const parallel::distributed::TemporarilyMatchRefineFlags<dim>
refine_modifier(tria);
fe_indices_changed =
hp::Refinement::limit_p_level_difference(dofh,
bool fe_indices_changed;
tria.signals.post_p4est_refinement.connect(
[&]() {
- const internal::parallel::distributed::TemporarilyMatchRefineFlags<dim>
+ const parallel::distributed::TemporarilyMatchRefineFlags<dim>
refine_modifier(tria);
fe_indices_changed =
hp::Refinement::limit_p_level_difference(dofh,
bool fe_indices_changed = false;
tria.signals.post_p4est_refinement.connect(
[&]() {
- const internal::parallel::distributed::TemporarilyMatchRefineFlags<dim>
+ const parallel::distributed::TemporarilyMatchRefineFlags<dim>
refine_modifier(tria);
fe_indices_changed =
hp::Refinement::limit_p_level_difference(dofh,
bool fe_indices_changed = false;
tria.signals.post_p4est_refinement.connect(
[&]() {
- const internal::parallel::distributed::TemporarilyMatchRefineFlags<dim>
+ const parallel::distributed::TemporarilyMatchRefineFlags<dim>
refine_modifier(tria);
fe_indices_changed =
hp::Refinement::limit_p_level_difference(dofh,