From 47cfa4b545d2d36fb4503e5c46c11646fa0cc0f9 Mon Sep 17 00:00:00 2001 From: Marc Fehling Date: Thu, 6 May 2021 15:35:23 -0600 Subject: [PATCH] Move `TemporarilyMatchRefineFlags` out of `internal` namespace. --- include/deal.II/distributed/tria.h | 130 +++++++++++------------ source/distributed/tria.cc | 129 +++++++++++----------- source/distributed/tria.inst.in | 15 +-- tests/mpi/error_prediction_01.cc | 2 +- tests/mpi/error_prediction_02.cc | 2 +- tests/mpi/limit_p_level_difference_01.cc | 2 +- tests/mpi/limit_p_level_difference_02.cc | 2 +- tests/mpi/limit_p_level_difference_03.cc | 2 +- tests/mpi/limit_p_level_difference_04.cc | 2 +- 9 files changed, 132 insertions(+), 154 deletions(-) diff --git a/include/deal.II/distributed/tria.h b/include/deal.II/distributed/tria.h index 7b42ed3535..4ba19b13fc 100644 --- a/include/deal.II/distributed/tria.h +++ b/include/deal.II/distributed/tria.h @@ -74,17 +74,14 @@ namespace GridTools struct PeriodicFacePair; } -namespace internal +namespace parallel { - namespace parallel + namespace distributed { - namespace distributed - { - template - class TemporarilyMatchRefineFlags; - } - } // namespace parallel -} // namespace internal + template + class TemporarilyMatchRefineFlags; + } +} // namespace parallel # endif namespace parallel @@ -817,8 +814,7 @@ namespace parallel friend class dealii::FETools::internal::ExtrapolateImplementation; template - friend class dealii::internal::parallel::distributed:: - TemporarilyMatchRefineFlags; + friend class TemporarilyMatchRefineFlags; }; @@ -928,8 +924,7 @@ namespace parallel const unsigned int coarse_cell_index) const override; template - friend class dealii::internal::parallel::distributed:: - TemporarilyMatchRefineFlags; + friend class TemporarilyMatchRefineFlags; }; } // namespace distributed } // namespace parallel @@ -1021,73 +1016,70 @@ 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 + 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 - 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 &tria); + TemporarilyMatchRefineFlags(dealii::Triangulation &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> - distributed_tria; + private: + /** + * The modified parallel::distributed::Triangulation. + */ + const SmartPointer< + dealii::parallel::distributed::Triangulation> + distributed_tria; - /** - * A vector that temporarily stores the refine flags before they have - * been modified on the parallel::distributed::Triangulation. - */ - std::vector saved_refine_flags; + /** + * A vector that temporarily stores the refine flags before they have + * been modified on the parallel::distributed::Triangulation. + */ + std::vector saved_refine_flags; - /** - * A vector that temporarily stores the coarsen flags before they have - * been modified on the parallel::distributed::Triangulation. - */ - std::vector 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 saved_coarsen_flags; + }; + } // namespace distributed +} // namespace parallel DEAL_II_NAMESPACE_CLOSE diff --git a/source/distributed/tria.cc b/source/distributed/tria.cc index e5a70ac970..bd5130cc60 100644 --- a/source/distributed/tria.cc +++ b/source/distributed/tria.cc @@ -3563,89 +3563,86 @@ namespace parallel -namespace internal +namespace parallel { - namespace parallel + namespace distributed { - namespace distributed + template + TemporarilyMatchRefineFlags::TemporarilyMatchRefineFlags( + dealii::Triangulation &tria) + : distributed_tria( + dynamic_cast< + dealii::parallel::distributed::Triangulation *>( + &tria)) { - template - TemporarilyMatchRefineFlags::TemporarilyMatchRefineFlags( - Triangulation &tria) - : distributed_tria( - dynamic_cast< - dealii::parallel::distributed::Triangulation *>( - &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::CELL_PERSIST: - // cell remains unchanged - cell->clear_refine_flag(); - cell->clear_coarsen_flag(); - break; + switch (status) + { + case dealii::Triangulation::CELL_PERSIST: + // cell remains unchanged + cell->clear_refine_flag(); + cell->clear_coarsen_flag(); + break; - case dealii::Triangulation::CELL_REFINE: - // cell will be refined - cell->clear_coarsen_flag(); - cell->set_refine_flag(); - break; + case dealii::Triangulation::CELL_REFINE: + // cell will be refined + cell->clear_coarsen_flag(); + cell->set_refine_flag(); + break; - case dealii::Triangulation::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::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::CELL_INVALID: - // do nothing as cell does not exist yet - break; + case dealii::Triangulation::CELL_INVALID: + // do nothing as cell does not exist yet + break; - default: - Assert(false, ExcInternalError()); - break; - } - } - } + default: + Assert(false, ExcInternalError()); + break; + } + } + } #endif - } + } - template - TemporarilyMatchRefineFlags::~TemporarilyMatchRefineFlags() - { + template + TemporarilyMatchRefineFlags::~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 diff --git a/source/distributed/tria.inst.in b/source/distributed/tria.inst.in index c0e4321358..cab8c501a9 100644 --- a/source/distributed/tria.inst.in +++ b/source/distributed/tria.inst.in @@ -24,21 +24,10 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) #if deal_II_dimension <= deal_II_space_dimension template class Triangulation; -#endif - \} - \} - namespace internal - \{ - namespace parallel - \{ - namespace distributed - \{ -#if deal_II_dimension <= deal_II_space_dimension - template class TemporarilyMatchRefineFlags; + template class TemporarilyMatchRefineFlags; #endif - \} \} \} } diff --git a/tests/mpi/error_prediction_01.cc b/tests/mpi/error_prediction_01.cc index 4b692b25cc..3548fcc78c 100644 --- a/tests/mpi/error_prediction_01.cc +++ b/tests/mpi/error_prediction_01.cc @@ -87,7 +87,7 @@ test() // ----- connect error predictor ----- Vector predicted_errors; tria.signals.post_p4est_refinement.connect([&]() { - const internal::parallel::distributed::TemporarilyMatchRefineFlags + const parallel::distributed::TemporarilyMatchRefineFlags refine_modifier(tria); predicted_errors.reinit(tria.n_active_cells()); hp::Refinement::predict_error(dh, diff --git a/tests/mpi/error_prediction_02.cc b/tests/mpi/error_prediction_02.cc index e999db84ce..d0b4c48f8f 100644 --- a/tests/mpi/error_prediction_02.cc +++ b/tests/mpi/error_prediction_02.cc @@ -113,7 +113,7 @@ test() // ----- connect error predictor ----- Vector predicted_errors; tria.signals.post_p4est_refinement.connect([&]() { - const internal::parallel::distributed::TemporarilyMatchRefineFlags + const parallel::distributed::TemporarilyMatchRefineFlags refine_modifier(tria); predicted_errors.reinit(tria.n_active_cells()); hp::Refinement::predict_error(dh, diff --git a/tests/mpi/limit_p_level_difference_01.cc b/tests/mpi/limit_p_level_difference_01.cc index 75e563125a..1b6504203b 100644 --- a/tests/mpi/limit_p_level_difference_01.cc +++ b/tests/mpi/limit_p_level_difference_01.cc @@ -78,7 +78,7 @@ test(const unsigned int fes_size, const unsigned int max_difference) bool fe_indices_changed = false; tria.signals.post_p4est_refinement.connect( [&]() { - const internal::parallel::distributed::TemporarilyMatchRefineFlags + const parallel::distributed::TemporarilyMatchRefineFlags refine_modifier(tria); fe_indices_changed = hp::Refinement::limit_p_level_difference(dofh, diff --git a/tests/mpi/limit_p_level_difference_02.cc b/tests/mpi/limit_p_level_difference_02.cc index 81ce6a4097..929b7d7632 100644 --- a/tests/mpi/limit_p_level_difference_02.cc +++ b/tests/mpi/limit_p_level_difference_02.cc @@ -73,7 +73,7 @@ test(const unsigned int fes_size, const unsigned int max_difference) bool fe_indices_changed; tria.signals.post_p4est_refinement.connect( [&]() { - const internal::parallel::distributed::TemporarilyMatchRefineFlags + const parallel::distributed::TemporarilyMatchRefineFlags refine_modifier(tria); fe_indices_changed = hp::Refinement::limit_p_level_difference(dofh, diff --git a/tests/mpi/limit_p_level_difference_03.cc b/tests/mpi/limit_p_level_difference_03.cc index 39ef65dc4b..97424e75e6 100644 --- a/tests/mpi/limit_p_level_difference_03.cc +++ b/tests/mpi/limit_p_level_difference_03.cc @@ -93,7 +93,7 @@ test(const unsigned int fes_size, const unsigned int max_difference) bool fe_indices_changed = false; tria.signals.post_p4est_refinement.connect( [&]() { - const internal::parallel::distributed::TemporarilyMatchRefineFlags + const parallel::distributed::TemporarilyMatchRefineFlags refine_modifier(tria); fe_indices_changed = hp::Refinement::limit_p_level_difference(dofh, diff --git a/tests/mpi/limit_p_level_difference_04.cc b/tests/mpi/limit_p_level_difference_04.cc index 8fcf54bfb9..4904a9f638 100644 --- a/tests/mpi/limit_p_level_difference_04.cc +++ b/tests/mpi/limit_p_level_difference_04.cc @@ -85,7 +85,7 @@ test(const unsigned int max_difference) bool fe_indices_changed = false; tria.signals.post_p4est_refinement.connect( [&]() { - const internal::parallel::distributed::TemporarilyMatchRefineFlags + const parallel::distributed::TemporarilyMatchRefineFlags refine_modifier(tria); fe_indices_changed = hp::Refinement::limit_p_level_difference(dofh, -- 2.39.5