15#ifndef dealii_distributed_tria_h
16#define dealii_distributed_tria_h
31#include <boost/range/iterator_range.hpp>
40#ifdef DEAL_II_WITH_P4EST
42# include <p4est_connectivity.h>
43# include <p4est_ghost.h>
45# include <p8est_connectivity.h>
46# include <p8est_ghost.h>
58 template <
int,
int,
class>
59 class ExtrapolateImplementation;
66 template <
typename CellIterator>
87 template <
int dim,
int spacedim>
90 ::parallel::distributed::Triangulation<dim, spacedim> &);
99#ifdef DEAL_II_WITH_P4EST
264 template <
int dim,
int spacedim = dim>
288 typename ::Triangulation<dim, spacedim>::cell_iterator;
309 typename ::Triangulation<dim, spacedim>::active_cell_iterator;
386 const typename ::Triangulation<dim, spacedim>::MeshSmoothing
388 const Settings settings = default_setting);
408 is_multilevel_hierarchy_constructed()
const override;
414 are_vertices_communicated_to_p4est()
const;
431 const typename ::internal::p4est::types<dim>::forest
433 const typename ::internal::p4est::types<dim>::gloidx
434 *previous_global_first_quadrant);
445 const ::Triangulation<dim, spacedim> &other_tria)
override;
467 create_triangulation(
469 &construction_data)
override;
498 std::vector<types::subdomain_id>
499 find_point_owner_rank(
const std::vector<
Point<dim>> &points);
534 execute_coarsening_and_refinement()
override;
549 prepare_coarsening_and_refinement()
override;
598 memory_consumption()
const override;
606 memory_consumption_p4est()
const;
621 write_mesh_vtk(
const std::string &file_basename)
const;
628 get_checksum()
const;
641 save(
const std::string &file_basename)
const override;
663 load(
const std::string &file_basename)
override;
672 load(
const std::string &filename,
const bool autopartition)
override;
680 load(
const typename ::internal::p4est::types<dim>::forest *forest);
688 const std::vector<types::global_dof_index> &
689 get_p4est_tree_to_coarse_cell_permutation()
const;
696 const std::vector<types::global_dof_index> &
697 get_coarse_cell_to_p4est_tree_permutation()
const;
706 const typename ::internal::p4est::types<dim>::forest *
801 std::vector<types::global_dof_index>
803 std::vector<types::global_dof_index>
810 typename ::internal::p4est::types<dim>::tree *
811 init_tree(
const int dealii_coarse_cell_index)
const;
849 std::vector<unsigned int>
870 const unsigned int coarse_cell_index)
const override;
872 template <
int,
int,
class>
873 friend class ::FETools::internal::ExtrapolateImplementation;
887 template <
int spacedim>
911 const typename ::Triangulation<1, spacedim>::MeshSmoothing
913 const Settings settings = default_setting);
926 const std::vector<types::global_dof_index> &
927 get_p4est_tree_to_coarse_cell_permutation()
const;
934 load(
const std::string &filename)
override;
942 load(
const std::string &filename,
const bool autopartition)
override;
949 save(
const std::string &filename)
const override;
956 is_multilevel_hierarchy_constructed()
const override;
963 are_vertices_communicated_to_p4est()
const;
970 update_cell_relations();
976 std::vector<types::global_dof_index>
978 std::vector<types::global_dof_index>
985 virtual std::map<unsigned int, std::set<::types::subdomain_id>>
987 const unsigned int level)
const;
993 virtual std::vector<bool>
1002 const unsigned int coarse_cell_index)
const override;
1015 namespace distributed
1030 template <
int dim,
int spacedim = dim>
1054 const typename ::Triangulation<dim, spacedim>::MeshSmoothing
1084 save(
const std::string & )
const override
1092 load(
const std::string & )
override
1101 load(
const std::string & ,
1102 const bool )
override
1142 template <
int dim,
int spacedim = dim>
DistributedTriangulationBase(const MPI_Comm mpi_communicator, const typename ::Triangulation< dim, spacedim >::MeshSmoothing smooth_grid=(::Triangulation< dim, spacedim >::none), const bool check_for_distorted_cells=false)
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
void setup_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
virtual types::coarse_cell_id coarse_cell_index_to_coarse_cell_id(const unsigned int coarse_cell_index) const override
friend class TemporarilyMatchRefineFlags
virtual void save(const std::string &file_basename) const override
Triangulation(const MPI_Comm mpi_communicator, const typename ::Triangulation< 1, spacedim >::MeshSmoothing smooth_grid=(::Triangulation< 1, spacedim >::none), const Settings settings=default_setting)
std::vector< unsigned int > get_cell_weights() const
std::vector< types::global_dof_index > p4est_tree_to_coarse_cell_permutation
void copy_new_triangulation_to_p4est(std::integral_constant< int, 3 >)
virtual void load(const std::string &file_basename) override
typename::internal::p4est::types< dim >::tree * init_tree(const int dealii_coarse_cell_index) const
std::vector< types::global_dof_index > p4est_tree_to_coarse_cell_permutation
void update_cell_relations()
virtual std::map< unsigned int, std::set<::types::subdomain_id > > compute_level_vertices_with_ghost_neighbors(const unsigned int level) const
virtual types::coarse_cell_id coarse_cell_index_to_coarse_cell_id(const unsigned int coarse_cell_index) const override
virtual unsigned int coarse_cell_id_to_coarse_cell_index(const types::coarse_cell_id coarse_cell_id) const override
std::vector< bool > mark_locally_active_vertices_on_level(const int level) const
typename::internal::p4est::types< dim >::forest * parallel_forest
typename::internal::p4est::types< dim >::connectivity * connectivity
void copy_local_forest_to_triangulation()
virtual unsigned int coarse_cell_id_to_coarse_cell_index(const types::coarse_cell_id coarse_cell_id) const override
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)
@ communicate_vertices_to_p4est
@ construct_multigrid_hierarchy
@ no_automatic_repartitioning
@ mesh_reconstruction_after_repartitioning
bool is_multilevel_hierarchy_constructed() const override
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation
typename::internal::p4est::types< dim >::ghost * parallel_ghost
virtual std::vector< bool > mark_locally_active_vertices_on_level(const unsigned int level) const
#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 exchange_refinement_flags(::parallel::distributed::Triangulation< dim, spacedim > &tria)
unsigned int subdomain_id
global_cell_index coarse_cell_id