16#ifndef dealii_distributed_tria_h
17#define dealii_distributed_tria_h
31#include <boost/range/iterator_range.hpp>
40#ifdef DEAL_II_WITH_MPI
44#ifdef DEAL_II_WITH_P4EST
46# include <p4est_connectivity.h>
47# include <p4est_ghost.h>
49# include <p8est_connectivity.h>
50# include <p8est_ghost.h>
55#ifdef DEAL_II_WITH_P4EST
64 template <
int,
int,
class>
65 class ExtrapolateImplementation;
72 template <
typename CellIterator>
73 struct PeriodicFacePair;
81 class TemporarilyMatchRefineFlags;
247 template <
int dim,
int spacedim = dim>
270 typename ::Triangulation<dim, spacedim>::cell_iterator;
291 typename ::Triangulation<dim, spacedim>::active_cell_iterator;
294 typename ::Triangulation<dim, spacedim>::CellStatus;
371 const typename ::Triangulation<dim, spacedim>::MeshSmoothing
416 const typename ::internal::p4est::types<dim>::forest
418 const typename ::internal::p4est::types<dim>::gloidx
419 *previous_global_first_quadrant);
430 const ::Triangulation<dim, spacedim> &other_tria)
override;
454 &construction_data)
override;
483 std::vector<types::subdomain_id>
613 save(
const std::string &filename)
const override;
635 load(
const std::string &filename)
override;
642 DEAL_II_DEPRECATED_EARLY
644 load(
const std::string &filename,
const bool autopartition)
override;
652 load(
const typename ::internal::p4est::types<dim>::forest *forest);
660 const std::vector<types::global_dof_index> &
668 const std::vector<types::global_dof_index> &
678 const typename ::internal::p4est::types<dim>::forest *
773 std::vector<types::global_dof_index>
775 std::vector<types::global_dof_index>
782 typename ::internal::p4est::types<dim>::tree *
783 init_tree(
const int dealii_coarse_cell_index)
const;
821 std::vector<unsigned int>
842 const unsigned int coarse_cell_index)
const override;
844 template <
int,
int,
class>
845 friend class ::FETools::internal::ExtrapolateImplementation;
857 template <
int spacedim>
880 const typename ::Triangulation<1, spacedim>::MeshSmoothing
895 const std::vector<types::global_dof_index> &
903 load(
const std::string &filename)
override;
909 DEAL_II_DEPRECATED_EARLY
911 load(
const std::string &filename,
const bool autopartition)
override;
918 save(
const std::string &filename)
const 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>
971 const unsigned int coarse_cell_index)
const override;
984 namespace distributed
997 template <
int dim,
int spacedim = dim>
1020 const typename ::Triangulation<dim, spacedim>::MeshSmoothing
1050 save(
const std::string & )
const override
1058 load(
const std::string & )
override
1065 DEAL_II_DEPRECATED_EARLY
1067 load(
const std::string & ,
1068 const bool )
override
1088 namespace distributed
1107 template <
int dim,
int spacedim = dim>
std::vector< Point< spacedim > > vertices
MeshSmoothing smooth_grid
const MPI_Comm mpi_communicator
~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
virtual void execute_coarsening_and_refinement() override
void setup_coarse_cell_to_p4est_tree_permutation()
@ no_automatic_repartitioning
@ construct_multigrid_hierarchy
@ mesh_reconstruction_after_repartitioning
@ communicate_vertices_to_p4est
typename ::Triangulation< dim, spacedim >::CellStatus CellStatus
virtual void add_periodicity(const std::vector<::GridTools::PeriodicFacePair< cell_iterator > > &) override
bool are_vertices_communicated_to_p4est() const
bool triangulation_has_content
virtual void copy_triangulation(const ::Triangulation< dim, spacedim > &other_tria) override
const std::vector< types::global_dof_index > & get_p4est_tree_to_coarse_cell_permutation() const
std::vector< unsigned int > get_cell_weights() const
unsigned int get_checksum() const
virtual ~Triangulation() override
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 execute_transfer(const typename ::internal::p4est::types< dim >::forest *parallel_forest, const typename ::internal::p4est::types< dim >::gloidx *previous_global_first_quadrant)
typename::internal::p4est::types< dim >::tree * init_tree(const int dealii_coarse_cell_index) const
types::subdomain_id find_point_owner_rank(const Point< dim > &p)
virtual bool prepare_coarsening_and_refinement() override
std::vector< bool > mark_locally_active_vertices_on_level(const int level) const
const ::internal::p4est::types< dim >::forest * get_p4est() const
typename::internal::p4est::types< dim >::forest * parallel_forest
const std::vector< types::global_dof_index > & get_coarse_cell_to_p4est_tree_permutation() const
typename::internal::p4est::types< dim >::connectivity * connectivity
void write_mesh_vtk(const std::string &file_basename) const
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 >)
virtual void save(const std::string &filename) const override
virtual std::size_t memory_consumption_p4est() const
virtual void clear() override
bool is_multilevel_hierarchy_constructed() const override
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation
virtual void load(const std::string &filename) override
virtual void create_triangulation(const std::vector< Point< spacedim > > &vertices, const std::vector< CellData< dim > > &cells, const SubCellData &subcelldata) override
virtual std::size_t memory_consumption() const override
typename::internal::p4est::types< dim >::ghost * parallel_ghost
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
typename ::Triangulation< dim, spacedim >::cell_iterator cell_iterator
typename ::Triangulation< dim, spacedim >::active_cell_iterator active_cell_iterator
std::vector< types::coarse_cell_id > coarse_cell_index_to_coarse_cell_id
const ::Triangulation< dim, spacedim > & tria