16 #ifndef dealii__distributed_tria_h 17 #define dealii__distributed_tria_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/subscriptor.h> 22 #include <deal.II/base/smartpointer.h> 23 #include <deal.II/base/template_constraints.h> 24 #include <deal.II/grid/tria.h> 26 #include <deal.II/base/std_cxx11/function.h> 27 #include <deal.II/base/std_cxx11/tuple.h> 29 #include <deal.II/distributed/tria_base.h> 30 #include <deal.II/distributed/p4est_wrappers.h> 37 #ifdef DEAL_II_WITH_MPI 41 #ifdef DEAL_II_WITH_P4EST 42 #include <p4est_connectivity.h> 44 #include <p4est_ghost.h> 46 #include <p8est_connectivity.h> 48 #include <p8est_ghost.h> 52 DEAL_II_NAMESPACE_OPEN
54 #ifdef DEAL_II_WITH_P4EST 71 template <
int,
int,
class>
class ExtrapolateImplementation;
244 template <
int dim,
int spacedim = dim>
265 typedef typename ::Triangulation<dim,spacedim>::cell_iterator
cell_iterator;
287 typedef typename ::Triangulation<dim,spacedim>::CellStatus
CellStatus;
298 default_setting = 0x0,
307 mesh_reconstruction_after_repartitioning = 0x1,
314 construct_multigrid_hierarchy = 0x2,
320 no_automatic_repartitioning = 0x4
357 const typename ::Triangulation<dim,spacedim>::MeshSmoothing
359 const Settings settings = default_setting);
372 virtual void clear ();
383 virtual void copy_triangulation (const ::Triangulation<dim, spacedim> &other_tria);
394 virtual void create_triangulation (
const std::vector<
Point<spacedim> > &vertices,
427 virtual void execute_coarsening_and_refinement ();
435 virtual bool prepare_coarsening_and_refinement ();
532 communicate_locally_moved_vertices (
const std::vector<bool> &vertex_locally_moved);
551 bool has_hanging_nodes()
const;
556 virtual std::size_t memory_consumption ()
const;
563 virtual std::size_t memory_consumption_p4est ()
const;
572 void write_mesh_vtk (
const char *file_basename)
const;
578 unsigned int get_checksum ()
const;
587 void save(
const char *filename)
const;
607 void load(
const char *filename,
608 const bool autopartition =
true);
646 register_data_attach (
const std::size_t size,
647 const std_cxx11::function<
void (
const cell_iterator &,
649 void *)> &pack_callback);
666 notify_ready_to_unpack (
const unsigned int offset,
667 const std_cxx11::function<
void (
const cell_iterator &,
669 const void *)> &unpack_callback);
677 const std::vector<types::global_dof_index> &
678 get_p4est_tree_to_coarse_cell_permutation()
const;
685 const std::vector<types::global_dof_index> &
686 get_coarse_cell_to_p4est_tree_permutation()
const;
718 virtual void update_number_cache ();
779 typedef std_cxx11::function<
783 typedef std::pair<unsigned int, pack_callback_t> callback_pair_t;
785 typedef std::list<callback_pair_t> callback_list_t;
808 std::vector<types::global_dof_index> p4est_tree_to_coarse_cell_permutation;
814 typename ::internal::p4est::types<dim>::tree *
815 init_tree(
const int dealii_coarse_cell_index)
const;
821 void setup_coarse_cell_to_p4est_tree_permutation ();
836 void copy_local_forest_to_triangulation ();
843 void attach_mesh_data();
858 std::vector<unsigned int>
867 fill_vertices_with_ghost_neighbors
868 (std::map<
unsigned int, std::set<::types::subdomain_id> >
869 &vertices_with_ghost_neighbors);
877 fill_level_vertices_with_ghost_neighbors
879 std::map<
unsigned int, std::set<::types::subdomain_id> >
880 &vertices_with_ghost_neighbors);
892 mark_locally_active_vertices_on_level(
const int level)
const;
894 template <
int,
int>
friend class ::internal::DoFHandler::Policy::ParallelDistributed;
896 template <
int,
int,
class>
friend class ::FETools::internal::ExtrapolateImplementation;
905 template <
int spacedim>
926 const std::vector<types::global_dof_index> &
927 get_p4est_tree_to_coarse_cell_permutation()
const;
963 communicate_locally_moved_vertices (
const std::vector<bool> &vertex_locally_moved);
970 std::vector<types::global_dof_index> p4est_tree_to_coarse_cell_permutation;
977 default_setting = 0x0,
978 mesh_reconstruction_after_repartitioning = 0x1,
979 construct_multigrid_hierarchy = 0x2
994 fill_vertices_with_ghost_neighbors
995 (std::map<
unsigned int, std::set<::types::subdomain_id> >
996 &vertices_with_ghost_neighbors);
1003 fill_level_vertices_with_ghost_neighbors
1004 (
const unsigned int level,
1005 std::map<
unsigned int, std::set<::types::subdomain_id> >
1006 &vertices_with_ghost_neighbors);
1013 mark_locally_active_vertices_on_level(
const unsigned int level)
const;
1020 #else // DEAL_II_WITH_P4EST 1024 namespace distributed
1036 template <
int dim,
int spacedim = dim>
1053 DEAL_II_NAMESPACE_CLOSE
typename::internal::p4est::types< dim >::connectivity * connectivity
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation
bool triangulation_has_content
unsigned int attached_data_size
callback_list_t attached_data_pack_callbacks
typename::internal::p4est::types< dim >::ghost * parallel_ghost
typename::internal::p4est::types< dim >::forest * parallel_forest
bool refinement_in_progress
::Triangulation< dim, spacedim >::active_cell_iterator active_cell_iterator
unsigned int n_attached_datas
::Triangulation< dim, spacedim >::cell_iterator cell_iterator
unsigned int n_attached_deserialize
std::vector< types::global_dof_index > coarse_cell_to_p4est_tree_permutation