Reference documentation for deal.II version 9.1.1
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
dof_handler.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2005 - 2019 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_hp_dof_handler_h
17 #define dealii_hp_dof_handler_h
18 
19 
20 
21 #include <deal.II/base/config.h>
22 
23 #include <deal.II/base/exceptions.h>
24 #include <deal.II/base/function.h>
25 #include <deal.II/base/iterator_range.h>
26 #include <deal.II/base/smartpointer.h>
27 #include <deal.II/base/template_constraints.h>
28 
29 #include <deal.II/distributed/cell_data_transfer.templates.h>
30 
31 #include <deal.II/dofs/deprecated_function_map.h>
32 #include <deal.II/dofs/dof_accessor.h>
33 #include <deal.II/dofs/dof_iterator_selector.h>
34 #include <deal.II/dofs/number_cache.h>
35 
36 #include <deal.II/hp/dof_faces.h>
37 #include <deal.II/hp/dof_level.h>
38 #include <deal.II/hp/fe_collection.h>
39 
40 #include <map>
41 #include <memory>
42 #include <set>
43 #include <vector>
44 
45 DEAL_II_NAMESPACE_OPEN
46 
47 template <int dim, int spacedim>
48 class Triangulation;
49 
50 namespace internal
51 {
52  namespace DoFHandlerImplementation
53  {
54  struct Implementation;
55 
56  namespace Policy
57  {
58  template <int dim, int spacedim>
59  class PolicyBase;
60  struct Implementation;
61  } // namespace Policy
62  } // namespace DoFHandlerImplementation
63 
64  namespace hp
65  {
66  class DoFLevel;
67 
68  namespace DoFHandlerImplementation
69  {
70  struct Implementation;
71  }
72  } // namespace hp
73 } // namespace internal
74 
75 namespace internal
76 {
77  namespace DoFAccessorImplementation
78  {
79  struct Implementation;
80  }
81 
82  namespace DoFCellAccessorImplementation
83  {
84  struct Implementation;
85  }
86 } // namespace internal
87 
88 
89 
90 namespace hp
91 {
193  template <int dim, int spacedim = dim>
194  class DoFHandler : public Subscriptor
195  {
196  using ActiveSelector = ::internal::DoFHandlerImplementation::
197  Iterators<DoFHandler<dim, spacedim>, false>;
198  using LevelSelector = ::internal::DoFHandlerImplementation::
199  Iterators<DoFHandler<dim, spacedim>, true>;
200 
201  public:
214  using cell_accessor = typename ActiveSelector::CellAccessor;
215 
228  using face_accessor = typename ActiveSelector::FaceAccessor;
229 
237  using line_iterator = typename ActiveSelector::line_iterator;
238 
252  using active_line_iterator = typename ActiveSelector::active_line_iterator;
253 
261  using quad_iterator = typename ActiveSelector::quad_iterator;
262 
276  using active_quad_iterator = typename ActiveSelector::active_quad_iterator;
277 
285  using hex_iterator = typename ActiveSelector::hex_iterator;
286 
296  using active_hex_iterator = typename ActiveSelector::active_hex_iterator;
297 
302 #ifndef _MSC_VER
303  using active_cell_iterator = typename ActiveSelector::active_cell_iterator;
304 #else
307 #endif
308 
309  using level_cell_iterator = typename LevelSelector::cell_iterator;
310 
315 #ifndef _MSC_VER
316  using cell_iterator = typename ActiveSelector::cell_iterator;
317 #else
318  using cell_iterator =
320 #endif
321 
326  using face_iterator = typename ActiveSelector::face_iterator;
327 
332  using active_face_iterator = typename ActiveSelector::active_face_iterator;
333 
334  using level_cell_accessor = typename LevelSelector::CellAccessor;
335  using level_face_accessor = typename LevelSelector::FaceAccessor;
336 
337  using level_face_iterator = typename LevelSelector::face_iterator;
338 
342  static const unsigned int dimension = dim;
343 
347  static const unsigned int space_dimension = spacedim;
348 
352  static const bool is_hp_dof_handler = true;
353 
365  DEAL_II_DEPRECATED
368 
379  static const unsigned int default_fe_index = numbers::invalid_unsigned_int;
380 
381 
385  DoFHandler();
386 
391 
398  DoFHandler(const DoFHandler &) = delete;
399 
403  virtual ~DoFHandler() override;
404 
411  DoFHandler &
412  operator=(const DoFHandler &) = delete;
413 
418  void
421 
438  virtual void
440 
466  virtual void
468 
473  void
474  set_active_fe_indices(const std::vector<unsigned int> &active_fe_indices);
475 
481  void
482  get_active_fe_indices(std::vector<unsigned int> &active_fe_indices) const;
483 
489  virtual void
490  clear();
491 
544  void
545  renumber_dofs(const std::vector<types::global_dof_index> &new_numbers);
546 
564  unsigned int
566 
579  unsigned int
581 
590  begin(const unsigned int level = 0) const;
591 
609  begin_active(const unsigned int level = 0) const;
610 
616  end() const;
617 
623  end(const unsigned int level) const;
624 
631  end_active(const unsigned int level) const;
632 
648  cell_iterators() const;
649 
691  active_cell_iterators() const;
692 
709  cell_iterators_on_level(const unsigned int level) const;
710 
727  active_cell_iterators_on_level(const unsigned int level) const;
728 
729  /*
730  * @}
731  */
732 
733  /*---------------------------------------*/
734 
735 
761  n_dofs() const;
762 
769  n_dofs(const unsigned int level) const;
770 
775  n_boundary_dofs() const;
776 
787  template <typename number>
790  const std::map<types::boundary_id, const Function<spacedim, number> *>
791  &boundary_ids) const;
792 
798  n_boundary_dofs(const std::set<types::boundary_id> &boundary_ids) const;
799 
818  n_locally_owned_dofs() const;
819 
825  const IndexSet &
826  locally_owned_dofs() const;
827 
841  const std::vector<IndexSet> &
843 
860  const std::vector<types::global_dof_index> &
862 
869  const IndexSet &
870  locally_owned_mg_dofs(const unsigned int level) const;
871 
878  const std::vector<IndexSet> &
879  locally_owned_mg_dofs_per_processor(const unsigned int level) const;
880 
887  DEAL_II_DEPRECATED
889  get_fe() const;
890 
896  get_fe(const unsigned int index) const;
897 
903  get_fe_collection() const;
904 
910  get_triangulation() const;
911 
920  virtual std::size_t
921  memory_consumption() const;
922 
939  void
941 
957  void
959 
964  template <class Archive>
965  void
966  save(Archive &ar, const unsigned int version) const;
967 
972  template <class Archive>
973  void
974  load(Archive &ar, const unsigned int version);
975 
976  BOOST_SERIALIZATION_SPLIT_MEMBER()
977 
978 
994  int,
995  << "The matrix has the wrong dimension " << arg1);
1004  types::global_dof_index,
1005  << "The given list of new dof indices is not consecutive: "
1006  << "the index " << arg1 << " does not exist.");
1011  int,
1012  int,
1013  << "The mesh contains a cell with an active_fe_index of "
1014  << arg1 << ", but the finite element collection only has "
1015  << arg2 << " elements");
1020  int,
1021  << "The given level " << arg1
1022  << " is not in the valid range!");
1031  int,
1032  << "You tried to do something on level " << arg1
1033  << ", but this level is empty.");
1034 
1035  private:
1039  SmartPointer<const Triangulation<dim, spacedim>, DoFHandler<dim, spacedim>>
1041 
1045  hp::FECollection<dim, spacedim> fe_collection;
1046 
1051  std::unique_ptr<::internal::DoFHandlerImplementation::Policy::
1052  PolicyBase<dim, spacedim>>
1054 
1055 
1059  void
1061 
1065  void
1066  clear_space();
1067 
1068  template <int structdim>
1069  types::global_dof_index
1070  get_dof_index(const unsigned int obj_level,
1071  const unsigned int obj_index,
1072  const unsigned int fe_index,
1073  const unsigned int local_index) const;
1074 
1075  template <int structdim>
1076  void
1077  set_dof_index(const unsigned int obj_level,
1078  const unsigned int obj_index,
1079  const unsigned int fe_index,
1080  const unsigned int local_index,
1081  const types::global_dof_index global_index) const;
1082 
1090  void
1092 
1101  void
1103 
1111  void
1113 
1123  void
1125 
1134  void
1136 
1145  void
1147 
1156  void
1158 
1167  void
1169 
1174  std::vector<std::unique_ptr<::internal::hp::DoFLevel>> levels;
1175 
1180  std::unique_ptr<::internal::hp::DoFIndicesOnFaces<dim>> faces;
1181 
1189  ::internal::DoFHandlerImplementation::NumberCache number_cache;
1190 
1196  std::vector<::internal::DoFHandlerImplementation::NumberCache>
1198 
1211  std::vector<types::global_dof_index> vertex_dofs;
1212 
1225  std::vector<unsigned int> vertex_dof_offsets;
1226 
1234  {
1239  std::map<const cell_iterator, const unsigned int>
1241 
1246  std::map<const cell_iterator, const unsigned int> refined_cells_fe_index;
1247 
1252  std::map<const cell_iterator, const unsigned int>
1254 
1260  std::vector<unsigned int> active_fe_indices;
1261 
1267  std::unique_ptr<
1268  parallel::distributed::
1269  CellDataTransfer<dim, spacedim, std::vector<unsigned int>>>
1271  };
1272 
1277  std::unique_ptr<ActiveFEIndexTransfer> active_fe_index_transfer;
1278 
1283  std::vector<boost::signals2::connection> tria_listeners;
1284 
1288  template <int, class, bool>
1289  friend class ::DoFAccessor;
1290  template <class, bool>
1291  friend class ::DoFCellAccessor;
1292  friend struct ::internal::DoFAccessorImplementation::Implementation;
1293  friend struct ::internal::DoFCellAccessorImplementation::
1294  Implementation;
1295 
1300  template <int>
1301  friend class ::internal::hp::DoFIndicesOnFacesOrEdges;
1302  friend struct ::internal::hp::DoFHandlerImplementation::
1303  Implementation;
1304  friend struct ::internal::DoFHandlerImplementation::Policy::
1305  Implementation;
1306  };
1307 
1308 
1309 
1310 #ifndef DOXYGEN
1311 
1312 
1313  /* ----------------------- Inline functions ----------------------------------
1314  */
1315 
1316 
1317  template <int dim, int spacedim>
1318  template <typename number>
1321  const std::map<types::boundary_id, const Function<spacedim, number> *>
1322  &boundary_ids) const
1323  {
1324  // extract the set of boundary ids and forget about the function object
1325  // pointers
1326  std::set<types::boundary_id> boundary_ids_only;
1327  for (typename std::map<types::boundary_id,
1328  const Function<spacedim, number> *>::const_iterator
1329  p = boundary_ids.begin();
1330  p != boundary_ids.end();
1331  ++p)
1332  boundary_ids_only.insert(p->first);
1333 
1334  // then just hand everything over to the other function that does the work
1335  return n_boundary_dofs(boundary_ids_only);
1336  }
1337 }
1338 
1339 
1340 namespace internal
1341 {
1349  template <int dim, int spacedim>
1350  std::string
1351  policy_to_string(const ::internal::DoFHandlerImplementation::Policy::
1352  PolicyBase<dim, spacedim> &policy);
1353 } // namespace internal
1354 
1355 
1356 namespace hp
1357 {
1358  template <int dim, int spacedim>
1359  template <class Archive>
1360  void
1361  DoFHandler<dim, spacedim>::save(Archive &ar, unsigned int) const
1362  {
1363  ar &vertex_dofs;
1364  ar &vertex_dof_offsets;
1365  ar &number_cache;
1366  ar &mg_number_cache;
1367 
1368  // some versions of gcc have trouble with loading vectors of
1369  // std::unique_ptr objects because std::unique_ptr does not
1370  // have a copy constructor. do it one level at a time
1371  const unsigned int n_levels = levels.size();
1372  ar & n_levels;
1373  for (unsigned int i = 0; i < n_levels; ++i)
1374  ar &levels[i];
1375 
1376  // boost dereferences a nullptr when serializing a nullptr
1377  // at least up to 1.65.1. This causes problems with clang-5.
1378  // Therefore, work around it.
1379  bool faces_is_nullptr = (faces.get() == nullptr);
1380  ar & faces_is_nullptr;
1381  if (!faces_is_nullptr)
1382  ar &faces;
1383 
1384  // write out the number of triangulation cells and later check during
1385  // loading that this number is indeed correct; same with something that
1386  // identifies the policy
1387  const unsigned int n_cells = tria->n_cells();
1388  std::string policy_name = ::internal::policy_to_string(*policy);
1389 
1390  ar &n_cells &policy_name;
1391  }
1392 
1393 
1394 
1395  template <int dim, int spacedim>
1396  template <class Archive>
1397  void
1398  DoFHandler<dim, spacedim>::load(Archive &ar, unsigned int)
1399  {
1400  ar &vertex_dofs;
1401  ar &vertex_dof_offsets;
1402  ar &number_cache;
1403  ar &mg_number_cache;
1404 
1405  // boost::serialization can restore pointers just fine, but if the
1406  // pointer object still points to something useful, that object is not
1407  // destroyed and we end up with a memory leak. consequently, first delete
1408  // previous content before re-loading stuff
1409  levels.clear();
1410  faces.reset();
1411 
1412  // some versions of gcc have trouble with loading vectors of
1413  // std::unique_ptr objects because std::unique_ptr does not
1414  // have a copy constructor. do it one level at a time
1415  unsigned int size;
1416  ar & size;
1417  levels.resize(size);
1418  for (unsigned int i = 0; i < size; ++i)
1419  {
1420  std::unique_ptr<::internal::hp::DoFLevel> level;
1421  ar & level;
1422  levels[i] = std::move(level);
1423  }
1424 
1425  // Workaround for nullptr, see in save().
1426  bool faces_is_nullptr = true;
1427  ar & faces_is_nullptr;
1428  if (!faces_is_nullptr)
1429  ar &faces;
1430 
1431  // these are the checks that correspond to the last block in the save()
1432  // function
1433  unsigned int n_cells;
1434  std::string policy_name;
1435 
1436  ar &n_cells &policy_name;
1437 
1438  AssertThrow(
1439  n_cells == tria->n_cells(),
1440  ExcMessage(
1441  "The object being loaded into does not match the triangulation "
1442  "that has been stored previously."));
1443  AssertThrow(policy_name == ::internal::policy_to_string(*policy),
1444  ExcMessage(
1445  "The policy currently associated with this DoFHandler (" +
1446  ::internal::policy_to_string(*policy) +
1447  ") does not match the one that was associated with the "
1448  "DoFHandler previously stored (" +
1449  policy_name + ")."));
1450  }
1451 
1452  template <int dim, int spacedim>
1455  {
1456  return number_cache.n_global_dofs;
1457  }
1458 
1459 
1460 
1461  template <int dim, int spacedim>
1463  DoFHandler<dim, spacedim>::n_dofs(const unsigned int) const
1464  {
1465  Assert(false, ExcNotImplemented());
1467  }
1468 
1469 
1470 
1471  template <int dim, int spacedim>
1474  {
1475  return number_cache.n_locally_owned_dofs;
1476  }
1477 
1478 
1479 
1480  template <int dim, int spacedim>
1481  const IndexSet &
1483  {
1484  return number_cache.locally_owned_dofs;
1485  }
1486 
1487 
1488 
1489  template <int dim, int spacedim>
1490  const std::vector<types::global_dof_index> &
1492  {
1493  return number_cache.n_locally_owned_dofs_per_processor;
1494  }
1495 
1496 
1497 
1498  template <int dim, int spacedim>
1499  const std::vector<IndexSet> &
1501  {
1502  return number_cache.locally_owned_dofs_per_processor;
1503  }
1504 
1505 
1506 
1507  template <int dim, int spacedim>
1508  const IndexSet &
1510  const unsigned int level) const
1511  {
1512  Assert(false, ExcNotImplemented());
1513  (void)level;
1514  Assert(level < this->get_triangulation().n_global_levels(),
1515  ExcMessage("invalid level in locally_owned_mg_dofs"));
1516  return mg_number_cache[0].locally_owned_dofs;
1517  }
1518 
1519 
1520  template <int dim, int spacedim>
1521  const std::vector<IndexSet> &
1523  const unsigned int level) const
1524  {
1525  Assert(false, ExcNotImplemented());
1526  (void)level;
1527  Assert(level < this->get_triangulation().n_global_levels(),
1528  ExcMessage("invalid level in locally_owned_mg_dofs_per_processor"));
1529  return mg_number_cache[0].locally_owned_dofs_per_processor;
1530  }
1531 
1532 
1533 
1534  template <int dim, int spacedim>
1535  inline const hp::FECollection<dim, spacedim> &
1537  {
1538  Assert(fe_collection.size() > 0,
1539  ExcMessage("No finite element collection is associated with "
1540  "this DoFHandler"));
1541  return fe_collection;
1542  }
1543 
1544 
1545 
1546  template <int dim, int spacedim>
1547  inline const FiniteElement<dim, spacedim> &
1548  DoFHandler<dim, spacedim>::get_fe(const unsigned int number) const
1549  {
1550  Assert(fe_collection.size() > 0,
1551  ExcMessage("No finite element collection is associated with "
1552  "this DoFHandler"));
1553  return fe_collection[number];
1554  }
1555 
1556 
1557 
1558  template <int dim, int spacedim>
1559  inline const hp::FECollection<dim, spacedim> &
1561  {
1562  Assert(fe_collection.size() > 0,
1563  ExcMessage("No finite element collection is associated with "
1564  "this DoFHandler"));
1565  return fe_collection;
1566  }
1567 
1568 
1569 
1570  template <int dim, int spacedim>
1571  inline const Triangulation<dim, spacedim> &
1573  {
1574  Assert(tria != nullptr,
1575  ExcMessage("This DoFHandler object has not been associated "
1576  "with a triangulation."));
1577  return *tria;
1578  }
1579 
1580 #endif
1581 
1582 } // namespace hp
1583 
1584 DEAL_II_NAMESPACE_CLOSE
1585 
1586 #endif
hp::DoFHandler::~DoFHandler
virtual ~DoFHandler() override
Definition: dof_handler.cc:1267
IndexSet
Definition: index_set.h:74
hp::DoFHandler::locally_owned_dofs
const IndexSet & locally_owned_dofs() const
hp::DoFHandler< dim >::cell_accessor
typename ActiveSelector::CellAccessor cell_accessor
Definition: dof_handler.h:214
numbers::invalid_dof_index
const types::global_dof_index invalid_dof_index
Definition: types.h:188
hp::DoFHandler::prepare_for_serialization_of_active_fe_indices
void prepare_for_serialization_of_active_fe_indices()
Definition: dof_handler.cc:2160
hp::DoFHandler::is_hp_dof_handler
static const bool is_hp_dof_handler
Definition: dof_handler.h:352
hp::DoFHandler::active_cell_iterators_on_level
IteratorRange< active_cell_iterator > active_cell_iterators_on_level(const unsigned int level) const
Definition: dof_handler.cc:1377
hp::DoFHandler::ExcMatrixHasWrongSize
static ::ExceptionBase & ExcMatrixHasWrongSize(int arg1)
hp::DoFHandler::max_couplings_between_boundary_dofs
unsigned int max_couplings_between_boundary_dofs() const
Definition: dof_handler.cc:1881
hp::DoFHandler::post_active_fe_index_transfer
void post_active_fe_index_transfer()
Definition: dof_handler.cc:2104
hp::DoFHandler::n_boundary_dofs
types::global_dof_index n_boundary_dofs() const
Definition: dof_handler.cc:1392
hp::DoFHandler::ExcGridsDoNotMatch
static ::ExceptionBase & ExcGridsDoNotMatch()
StandardExceptions::ExcNotImplemented
static ::ExceptionBase & ExcNotImplemented()
Triangulation
Definition: dof_handler.h:50
hp::DoFHandler< dim >::active_cell_iterator
typename ActiveSelector::active_cell_iterator active_cell_iterator
Definition: dof_handler.h:303
hp::DoFHandler::get_fe_collection
const hp::FECollection< dim, spacedim > & get_fe_collection() const
hp::DoFHandler::initialize
void initialize(const Triangulation< dim, spacedim > &tria, const hp::FECollection< dim, spacedim > &fe)
Definition: dof_handler.cc:1557
hp::DoFHandler::ExcNewNumbersNotConsecutive
static ::ExceptionBase & ExcNewNumbersNotConsecutive(types::global_dof_index arg1)
hp::DoFHandler< dim >::active_hex_iterator
typename ActiveSelector::active_hex_iterator active_hex_iterator
Definition: dof_handler.h:296
hp::DoFHandler< dim >::line_iterator
typename ActiveSelector::line_iterator line_iterator
Definition: dof_handler.h:237
hp::DoFHandler::ExcInvalidFEIndex
static ::ExceptionBase & ExcInvalidFEIndex(int arg1, int arg2)
hp::DoFHandler< dim >::active_quad_iterator
typename ActiveSelector::active_quad_iterator active_quad_iterator
Definition: dof_handler.h:276
hp::DoFHandler::fe_collection
hp::FECollection< dim, spacedim > fe_collection
Definition: dof_handler.h:1045
hp::DoFHandler::end_active
active_cell_iterator end_active(const unsigned int level) const
Definition: dof_handler.cc:1334
hp::DoFHandler::get_triangulation
const Triangulation< dim, spacedim > & get_triangulation() const
hp::DoFHandler< dim >::active_line_iterator
typename ActiveSelector::active_line_iterator active_line_iterator
Definition: dof_handler.h:252
hp::DoFHandler::post_distributed_active_fe_index_transfer
void post_distributed_active_fe_index_transfer()
Definition: dof_handler.cc:2130
hp::DoFHandler::ExcNoFESelected
static ::ExceptionBase & ExcNoFESelected()
hp::DoFHandler< dim >::quad_iterator
typename ActiveSelector::quad_iterator quad_iterator
Definition: dof_handler.h:261
hp::DoFHandler::ExcFunctionNotUseful
static ::ExceptionBase & ExcFunctionNotUseful()
types::boundary_id
unsigned int boundary_id
Definition: types.h:111
hp::DoFHandler::load
void load(Archive &ar, const unsigned int version)
hp::DoFHandler::max_couplings_between_dofs
unsigned int max_couplings_between_dofs() const
Definition: dof_handler.cc:1870
hp::DoFHandler::n_dofs
types::global_dof_index n_dofs() const
hp::DoFHandler
Definition: block_info.h:35
hp::DoFHandler::ActiveFEIndexTransfer::coarsened_cells_fe_index
std::map< const cell_iterator, const unsigned int > coarsened_cells_fe_index
Definition: dof_handler.h:1253
DoFHandler
Definition: block_info.h:31
hp::DoFHandler::create_active_fe_table
void create_active_fe_table()
Definition: dof_handler.cc:1915
hp::DoFHandler::ActiveFEIndexTransfer::refined_cells_fe_index
std::map< const cell_iterator, const unsigned int > refined_cells_fe_index
Definition: dof_handler.h:1246
Subscriptor
Definition: subscriptor.h:62
hp::DoFHandler::set_fe
virtual void set_fe(const hp::FECollection< dim, spacedim > &fe)
Definition: dof_handler.cc:1581
hp::DoFHandler::ActiveFEIndexTransfer::active_fe_indices
std::vector< unsigned int > active_fe_indices
Definition: dof_handler.h:1260
hp::DoFHandler::pre_distributed_active_fe_index_transfer
void pre_distributed_active_fe_index_transfer()
Definition: dof_handler.cc:2024
hp::DoFHandler::active_cell_iterators
IteratorRange< active_cell_iterator > active_cell_iterators() const
Definition: dof_handler.cc:1355
hp::DoFHandler::deserialize_active_fe_indices
void deserialize_active_fe_indices()
Definition: dof_handler.cc:2236
hp::DoFHandler::vertex_dof_offsets
std::vector< unsigned int > vertex_dof_offsets
Definition: dof_handler.h:1225
hp::DoFHandler::invalid_dof_index
static const types::global_dof_index invalid_dof_index
Definition: dof_handler.h:366
hp::DoFHandler::operator=
DoFHandler & operator=(const DoFHandler &)=delete
hp::DoFHandler::ActiveFEIndexTransfer::cell_data_transfer
std::unique_ptr< parallel::distributed::CellDataTransfer< dim, spacedim, std::vector< unsigned int > > > cell_data_transfer
Definition: dof_handler.h:1270
hp::DoFHandler::begin
cell_iterator begin(const unsigned int level=0) const
Definition: dof_handler.cc:1289
StandardExceptions::ExcMessage
static ::ExceptionBase & ExcMessage(std::string arg1)
hp::DoFHandler::vertex_dofs
std::vector< types::global_dof_index > vertex_dofs
Definition: dof_handler.h:1211
hp::DoFHandler::ExcEmptyLevel
static ::ExceptionBase & ExcEmptyLevel(int arg1)
types::global_dof_index
unsigned int global_dof_index
Definition: types.h:89
hp::DoFHandler::get_active_fe_indices
void get_active_fe_indices(std::vector< unsigned int > &active_fe_indices) const
Definition: dof_handler.cc:1540
hp::DoFHandler::locally_owned_mg_dofs
const IndexSet & locally_owned_mg_dofs(const unsigned int level) const
IteratorRange
Definition: iterator_range.h:128
hp::DoFHandler::ExcInvalidLevel
static ::ExceptionBase & ExcInvalidLevel(int arg1)
hp::DoFHandler::n_locally_owned_dofs
types::global_dof_index n_locally_owned_dofs() const
hp::DoFHandler::end
cell_iterator end() const
Definition: dof_handler.cc:1314
hp::DoFHandler::locally_owned_mg_dofs_per_processor
const std::vector< IndexSet > & locally_owned_mg_dofs_per_processor(const unsigned int level) const
hp::DoFHandler::distribute_dofs
virtual void distribute_dofs(const hp::FECollection< dim, spacedim > &fe)
Definition: dof_handler.cc:1617
hp::DoFHandler::post_refinement_action
void post_refinement_action()
Definition: dof_handler.cc:1969
DoFCellAccessor
Definition: dof_accessor.h:1327
DeclException1
#define DeclException1(Exception1, type1, outsequence)
Definition: exceptions.h:518
hp::DoFHandler::clear_space
void clear_space()
Definition: dof_handler.cc:2322
hp::DoFHandler::number_cache
::internal::DoFHandlerImplementation::NumberCache number_cache
Definition: dof_handler.h:1189
types
Definition: types.h:31
hp::DoFHandler::cell_iterators
IteratorRange< cell_iterator > cell_iterators() const
Definition: dof_handler.cc:1345
FiniteElement
Definition: dof_accessor.h:43
hp::DoFHandler< dim >::cell_iterator
typename ActiveSelector::cell_iterator cell_iterator
Definition: dof_handler.h:316
hp::DoFHandler::levels
std::vector< std::unique_ptr<::internal::hp::DoFLevel > > levels
Definition: dof_handler.h:1174
TriaActiveIterator
Definition: dof_iterator_selector.h:37
hp::DoFHandler::renumber_dofs
void renumber_dofs(const std::vector< types::global_dof_index > &new_numbers)
Definition: dof_handler.cc:1803
hp::DoFHandler::begin_active
active_cell_iterator begin_active(const unsigned int level=0) const
Definition: dof_handler.cc:1298
hp::DoFHandler::cell_iterators_on_level
IteratorRange< cell_iterator > cell_iterators_on_level(const unsigned int level) const
Definition: dof_handler.cc:1366
SmartPointer
Definition: smartpointer.h:68
hp::DoFHandler::faces
std::unique_ptr<::internal::hp::DoFIndicesOnFaces< dim > > faces
Definition: dof_handler.h:1180
hp::DoFHandler::memory_consumption
virtual std::size_t memory_consumption() const
Definition: dof_handler.cc:1497
hp::DoFHandler::mg_number_cache
std::vector<::internal::DoFHandlerImplementation::NumberCache > mg_number_cache
Definition: dof_handler.h:1197
hp::DoFHandler::set_active_fe_indices
void set_active_fe_indices(const std::vector< unsigned int > &active_fe_indices)
Definition: dof_handler.cc:1519
Assert
#define Assert(cond, exc)
Definition: exceptions.h:1407
hp::DoFHandler::ExcFacesHaveNoLevel
static ::ExceptionBase & ExcFacesHaveNoLevel()
hp::DoFHandler::active_fe_index_transfer
std::unique_ptr< ActiveFEIndexTransfer > active_fe_index_transfer
Definition: dof_handler.h:1277
hp::DoFHandler::get_fe
const hp::FECollection< dim, spacedim > & get_fe() const
hp::DoFHandler::tria_listeners
std::vector< boost::signals2::connection > tria_listeners
Definition: dof_handler.h:1283
hp::DoFHandler::clear
virtual void clear()
Definition: dof_handler.cc:1793
hp::DoFHandler::n_locally_owned_dofs_per_processor
const std::vector< types::global_dof_index > & n_locally_owned_dofs_per_processor() const
hp::DoFHandler< dim >::face_accessor
typename ActiveSelector::FaceAccessor face_accessor
Definition: dof_handler.h:228
DeclException0
#define DeclException0(Exception0)
Definition: exceptions.h:473
hp::DoFHandler::ExcInvalidBoundaryIndicator
static ::ExceptionBase & ExcInvalidBoundaryIndicator()
hp
Definition: hp.h:117
hp::DoFHandler::pre_refinement_action
void pre_refinement_action()
Definition: dof_handler.cc:1960
numbers::invalid_unsigned_int
static const unsigned int invalid_unsigned_int
Definition: types.h:173
hp::DoFHandler::setup_policy_and_listeners
void setup_policy_and_listeners()
Definition: dof_handler.cc:1692
hp::DoFHandler::default_fe_index
static const unsigned int default_fe_index
Definition: dof_handler.h:379
hp::DoFHandler::post_distributed_serialization_of_active_fe_indices
void post_distributed_serialization_of_active_fe_indices()
Definition: dof_handler.cc:2216
hp::DoFHandler::policy
std::unique_ptr<::internal::DoFHandlerImplementation::Policy::PolicyBase< dim, spacedim > > policy
Definition: dof_handler.h:1053
hp::DoFHandler< dim >::hex_iterator
typename ActiveSelector::hex_iterator hex_iterator
Definition: dof_handler.h:285
hp::DoFHandler< dim >::face_iterator
typename ActiveSelector::face_iterator face_iterator
Definition: dof_handler.h:326
Function
Definition: function.h:148
internal
Definition: aligned_vector.h:357
hp::DoFHandler::tria
SmartPointer< const Triangulation< dim, spacedim >, DoFHandler< dim, spacedim > > tria
Definition: dof_handler.h:1040
hp::DoFHandler::dimension
static const unsigned int dimension
Definition: dof_handler.h:342
hp::DoFHandler::pre_active_fe_index_transfer
void pre_active_fe_index_transfer()
Definition: dof_handler.cc:2004
hp::DoFHandler::DoFHandler
DoFHandler()
Definition: dof_handler.cc:1246
TriaIterator
Definition: dof_iterator_selector.h:35
hp::DoFHandler::ActiveFEIndexTransfer
Definition: dof_handler.h:1233
DeclException2
#define DeclException2(Exception2, type1, type2, outsequence)
Definition: exceptions.h:541
AssertThrow
#define AssertThrow(cond, exc)
Definition: exceptions.h:1519
hp::DoFHandler< dim >::active_face_iterator
typename ActiveSelector::active_face_iterator active_face_iterator
Definition: dof_handler.h:332
hp::DoFHandler::locally_owned_dofs_per_processor
const std::vector< IndexSet > & locally_owned_dofs_per_processor() const
hp::DoFHandler::ActiveFEIndexTransfer::persisting_cells_fe_index
std::map< const cell_iterator, const unsigned int > persisting_cells_fe_index
Definition: dof_handler.h:1240
hp::FECollection
Definition: dof_tools.h:52
hp::DoFHandler::save
void save(Archive &ar, const unsigned int version) const
hp::DoFHandler::space_dimension
static const unsigned int space_dimension
Definition: dof_handler.h:347