Reference documentation for deal.II version GIT d7aca55de5 2022-08-10 12:50:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
fully_distributed_tria.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2019 - 2022 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_fully_distributed_tria_h
17 #define dealii_fully_distributed_tria_h
18 
19 
20 #include <deal.II/base/config.h>
21 
24 
25 #include <vector>
26 
27 #ifdef DEAL_II_WITH_MPI
28 # include <mpi.h>
29 #endif
30 
32 
33 // Forward declarations
34 #ifndef DOXYGEN
35 // forward declaration of the data type for periodic face pairs
36 namespace GridTools
37 {
38  template <typename CellIterator>
39  struct PeriodicFacePair;
40 }
41 #endif
42 
43 namespace parallel
44 {
50  namespace fullydistributed
51  {
111  template <int dim, int spacedim = dim>
113  : public parallel::DistributedTriangulationBase<dim, spacedim>
114  {
115  public:
117  typename ::Triangulation<dim, spacedim>::cell_iterator;
118 
120  typename ::Triangulation<dim, spacedim>::active_cell_iterator;
121 
122  using CellStatus =
123  typename ::Triangulation<dim, spacedim>::CellStatus;
124 
131  explicit Triangulation(const MPI_Comm &mpi_communicator);
132 
136  virtual ~Triangulation() = default;
137 
145  void
148  &construction_data) override;
149 
156  virtual void
157  create_triangulation(const std::vector<Point<spacedim>> & vertices,
158  const std::vector<::CellData<dim>> &cells,
159  const SubCellData &subcelldata) override;
160 
171  void
173  const ::Triangulation<dim, spacedim> &other_tria) override;
174 
192  void
194  const std::function<void(::Triangulation<dim, spacedim> &,
195  const unsigned int)> &partitioner,
197 
202  void
206 
211  void
212  repartition();
213 
220  virtual void
222 
229  virtual bool
231 
235  virtual std::size_t
236  memory_consumption() const override;
237 
238  virtual bool
239  is_multilevel_hierarchy_constructed() const override;
240 
248  virtual void
249  save(const std::string &filename) const override;
250 
261  virtual void
262  load(const std::string &filename) override;
263 
270  virtual void
271  load(const std::string &filename, const bool autopartition) override;
272 
273  private:
274  virtual unsigned int
276  const types::coarse_cell_id coarse_cell_id) const override;
277 
278  virtual types::coarse_cell_id
280  const unsigned int coarse_cell_index) const override;
281 
293  virtual void
294  update_cell_relations() override;
295 
296  virtual void
297  update_number_cache() override;
298 
303 
307  std::function<void(::Triangulation<dim, spacedim> &,
308  const unsigned int)>
310 
316 
320  std::vector<std::pair<types::coarse_cell_id, unsigned int>>
322 
327  std::vector<types::coarse_cell_id>
329 
335 
340  bool
342  };
343 
344  } // namespace fullydistributed
345 } // namespace parallel
346 
347 
349 
350 #endif
std::vector< Point< spacedim > > vertices
Definition: tria.h:4167
typename ::Triangulation< dim, spacedim >::cell_iterator cell_iterator
typename ::Triangulation< dim, spacedim >::active_cell_iterator active_cell_iterator
typename ::Triangulation< dim, spacedim >::CellStatus CellStatus
TriangulationDescription::Settings settings
std::vector< types::coarse_cell_id > coarse_cell_index_to_coarse_cell_id_vector
virtual types::coarse_cell_id coarse_cell_index_to_coarse_cell_id(const unsigned int coarse_cell_index) const override
void copy_triangulation(const ::Triangulation< dim, spacedim > &other_tria) override
void set_partitioner(const std::function< void(::Triangulation< dim, spacedim > &, const unsigned int)> &partitioner, const TriangulationDescription::Settings &settings)
Triangulation(const MPI_Comm &mpi_communicator)
SmartPointer< const RepartitioningPolicyTools::Base< dim, spacedim > > partitioner_distributed
virtual unsigned int coarse_cell_id_to_coarse_cell_index(const types::coarse_cell_id coarse_cell_id) const override
std::vector< std::pair< types::coarse_cell_id, unsigned int > > coarse_cell_id_to_coarse_cell_index_vector
virtual void save(const std::string &filename) const override
std::function< void(::Triangulation< dim, spacedim > &, const unsigned int)> partitioner
virtual bool is_multilevel_hierarchy_constructed() const override
void create_triangulation(const TriangulationDescription::Description< dim, spacedim > &construction_data) override
virtual void load(const std::string &filename) override
virtual std::size_t memory_consumption() const override
#define DEAL_II_DEPRECATED
Definition: config.h:164
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:442
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:443
global_cell_index coarse_cell_id
Definition: types.h:114