16 #ifndef dealii_distributed_tria_h
17 #define dealii_distributed_tria_h
32 #include <boost/range/iterator_range.hpp>
37 #include <type_traits>
41 #ifdef DEAL_II_WITH_P4EST
43 # include <p4est_connectivity.h>
44 # include <p4est_ghost.h>
46 # include <p8est_connectivity.h>
47 # include <p8est_ghost.h>
52 #ifdef DEAL_II_WITH_P4EST
61 template <
int,
int,
class>
62 class ExtrapolateImplementation;
69 template <
typename CellIterator>
70 struct PeriodicFacePair;
78 class TemporarilyMatchRefineFlags;
246 template <
int dim,
int spacedim = dim>
270 typename ::Triangulation<dim, spacedim>::cell_iterator;
291 typename ::Triangulation<dim, spacedim>::active_cell_iterator;
311 mesh_reconstruction_after_repartitioning = 0x1,
323 no_automatic_repartitioning = 0x4,
330 communicate_vertices_to_p4est = 0x8
367 const MPI_Comm mpi_communicator,
368 const typename ::Triangulation<dim, spacedim>::MeshSmoothing
390 is_multilevel_hierarchy_constructed()
const override;
396 are_vertices_communicated_to_p4est()
const;
413 const typename ::internal::p4est::types<dim>::forest
415 const typename ::internal::p4est::types<dim>::gloidx
416 *previous_global_first_quadrant);
427 const ::Triangulation<dim, spacedim> &other_tria)
override;
451 &construction_data)
override;
480 std::vector<types::subdomain_id>
481 find_point_owner_rank(
const std::vector<
Point<dim>> &points);
513 execute_coarsening_and_refinement()
override;
522 prepare_coarsening_and_refinement()
override;
579 memory_consumption_p4est()
const;
592 write_mesh_vtk(
const std::string &file_basename)
const;
599 get_checksum()
const;
610 save(
const std::string &filename)
const override;
632 load(
const std::string &filename)
override;
641 load(
const std::string &filename,
const bool autopartition)
override;
649 load(
const typename ::internal::p4est::types<dim>::forest *forest);
657 const std::vector<types::global_dof_index> &
658 get_p4est_tree_to_coarse_cell_permutation()
const;
665 const std::vector<types::global_dof_index> &
666 get_coarse_cell_to_p4est_tree_permutation()
const;
675 const typename ::internal::p4est::types<dim>::forest *
755 update_cell_relations()
override;
770 std::vector<types::global_dof_index>
772 std::vector<types::global_dof_index>
779 typename ::internal::p4est::types<dim>::tree *
780 init_tree(
const int dealii_coarse_cell_index)
const;
787 setup_coarse_cell_to_p4est_tree_permutation();
803 copy_local_forest_to_triangulation();
818 std::vector<unsigned int>
819 get_cell_weights()
const;
831 mark_locally_active_vertices_on_level(
const int level)
const;
834 coarse_cell_id_to_coarse_cell_index(
839 const unsigned int coarse_cell_index)
const override;
841 template <
int,
int,
class>
842 friend class ::FETools::internal::ExtrapolateImplementation;
856 template <
int spacedim>
868 mesh_reconstruction_after_repartitioning = 0x1,
870 no_automatic_repartitioning = 0x4,
871 communicate_vertices_to_p4est = 0x8
879 const MPI_Comm mpi_communicator,
880 const typename ::Triangulation<1, spacedim>::MeshSmoothing
895 const std::vector<types::global_dof_index> &
896 get_p4est_tree_to_coarse_cell_permutation()
const;
903 load(
const std::string &filename)
override;
911 load(
const std::string &filename,
const bool autopartition)
override;
918 save(
const std::string &filename)
const override;
925 is_multilevel_hierarchy_constructed()
const override;
932 are_vertices_communicated_to_p4est()
const;
939 update_cell_relations()
override;
945 std::vector<types::global_dof_index>
947 std::vector<types::global_dof_index>
954 virtual std::map<unsigned int, std::set<::types::subdomain_id>>
955 compute_level_vertices_with_ghost_neighbors(
956 const unsigned int level)
const;
962 virtual std::vector<bool>
963 mark_locally_active_vertices_on_level(
const unsigned int level)
const;
966 coarse_cell_id_to_coarse_cell_index(
971 const unsigned int coarse_cell_index)
const override;
984 namespace distributed
999 template <
int dim,
int spacedim = dim>
1023 const typename ::Triangulation<dim, spacedim>::MeshSmoothing
1053 save(
const std::string & )
const override
1061 load(
const std::string & )
override
1070 load(
const std::string & ,
1071 const bool )
override
1091 namespace distributed
1110 template <
int dim,
int spacedim = dim>
TemporarilyMatchRefineFlags(::Triangulation< dim, spacedim > &tria)
~TemporarilyMatchRefineFlags()
const SmartPointer< ::parallel::distributed::Triangulation< dim, spacedim > > distributed_tria
std::vector< bool > saved_refine_flags
std::vector< bool > saved_coarsen_flags
std::vector< types::global_dof_index > p4est_tree_to_coarse_cell_permutation
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation
@ no_automatic_repartitioning
@ construct_multigrid_hierarchy
@ mesh_reconstruction_after_repartitioning
@ communicate_vertices_to_p4est
bool are_vertices_communicated_to_p4est() const
bool triangulation_has_content
typename ::internal::p4est::types< dim >::ghost * parallel_ghost
std::vector< types::global_dof_index > p4est_tree_to_coarse_cell_permutation
virtual void update_cell_relations() override
void copy_new_triangulation_to_p4est(std::integral_constant< int, 3 >)
void copy_new_triangulation_to_p4est(std::integral_constant< int, 2 >)
Triangulation(const MPI_Comm mpi_communicator, const typename ::Triangulation< dim, spacedim >::MeshSmoothing smooth_grid=(::Triangulation< dim, spacedim >::none), const Settings settings=default_setting)
virtual void save(const std::string &filename) const override
bool is_multilevel_hierarchy_constructed() const override
typename ::internal::p4est::types< dim >::connectivity * connectivity
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation
virtual void load(const std::string &filename) override
typename ::internal::p4est::types< dim >::forest * parallel_forest
#define DEAL_II_DEPRECATED
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
typename ::Triangulation< dim, spacedim >::cell_iterator cell_iterator
typename ::Triangulation< dim, spacedim >::active_cell_iterator active_cell_iterator
void create_triangulation(Triangulation< dim, dim > &tria, const AdditionalData &additional_data=AdditionalData())
std::enable_if_t< std::is_fundamental_v< T >, std::size_t > memory_consumption(const T &t)
@ construct_multigrid_hierarchy
global_cell_index coarse_cell_id
unsigned int subdomain_id
const TriangulationDescription::Settings settings
std::vector< types::coarse_cell_id > coarse_cell_index_to_coarse_cell_id
const ::Triangulation< dim, spacedim > & tria