16#ifndef dealii_dof_renumbering_h
17#define dealii_dof_renumbering_h
35template <
int,
typename,
typename>
364 template <
class Iterator,
int dim>
380 return (diff *
dir > 0);
415 return (diff *
dir > 0 || (diff *
dir == 0 && c1.second < c2.second));
453 template <
int dim,
int spacedim>
456 const bool reversed_numbering =
false,
457 const bool use_constraints =
false);
464 template <
int dim,
int spacedim>
468 const bool reversed_numbering =
false,
469 const bool use_constraints =
false);
483 template <
int dim,
int spacedim>
486 const bool reversed_numbering =
false,
487 const bool use_constraints =
false);
493 template <
int dim,
int spacedim>
497 const bool reversed_numbering =
false,
498 const bool use_constraints =
false);
511 template <
int dim,
int spacedim>
514 const bool reversed_numbering =
false,
515 const bool use_constraints =
false);
521 template <
int dim,
int spacedim>
524 std::vector<types::global_dof_index> &new_dof_indices,
526 const bool reversed_numbering =
false,
527 const bool use_constraints =
false);
594 template <
int dim,
int spacedim>
597 const bool reversed_numbering =
false,
598 const bool use_constraints =
false,
599 const std::vector<types::global_dof_index> &starting_indices =
600 std::vector<types::global_dof_index>());
611 template <
int dim,
int spacedim>
614 std::vector<types::global_dof_index> &new_dof_indices,
616 const bool reversed_numbering =
false,
617 const bool use_constraints =
false,
618 const std::vector<types::global_dof_index> &starting_indices =
619 std::vector<types::global_dof_index>(),
635 template <
int dim,
int spacedim>
638 const unsigned int level,
639 const bool reversed_numbering =
false,
640 const std::vector<types::global_dof_index> &starting_indices =
641 std::vector<types::global_dof_index>());
674 template <
int dim,
int spacedim>
677 const std::vector<unsigned int> &target_component =
678 std::vector<unsigned int>());
687 template <
int dim,
int spacedim>
690 const unsigned int level,
691 const std::vector<unsigned int> &target_component =
692 std::vector<unsigned int>());
699 template <
int dim,
int spacedim,
typename CellIterator>
702 const CellIterator & start,
704 const std::vector<unsigned int> &target_component,
705 const bool is_level_operation);
735 template <
int dim,
int spacedim>
745 template <
int dim,
int spacedim>
754 template <
int dim,
int spacedim,
class ITERATOR,
class ENDITERATOR>
757 const ITERATOR & start,
758 const ENDITERATOR & end,
759 bool is_level_operation);
842 template <
int dim,
int spacedim>
870 template <
int dim,
int spacedim>
912 template <
int dim,
int spacedim>
915 std::vector<types::global_dof_index> &renumbering,
916 std::vector<types::global_dof_index> &inverse_renumbering,
925 template <
int dim,
int spacedim>
929 const unsigned int level,
937 template <
int dim,
int spacedim>
940 std::vector<types::global_dof_index> &renumbering,
941 std::vector<types::global_dof_index> &inverse_renumbering,
943 const unsigned int level,
982 template <
int dim,
int spacedim>
986 const bool dof_wise_renumbering =
false);
994 template <
int dim,
int spacedim>
997 const unsigned int level,
999 const bool dof_wise_renumbering =
false);
1006 template <
int dim,
int spacedim>
1009 std::vector<types::global_dof_index> &reverse,
1012 const bool dof_wise_renumbering);
1019 template <
int dim,
int spacedim>
1022 std::vector<types::global_dof_index> &reverse,
1024 const unsigned int level,
1026 const bool dof_wise_renumbering);
1036 template <
int dim,
int spacedim>
1040 const bool counter =
false);
1046 template <
int dim,
int spacedim>
1049 const unsigned int level,
1051 const bool counter =
false);
1058 template <
int dim,
int spacedim>
1063 const bool counter);
1083 template <
int dim,
int spacedim>
1086 const std::vector<bool> & selected_dofs);
1098 template <
int dim,
int spacedim>
1101 const std::vector<bool> & selected_dofs,
1102 const unsigned int level);
1112 template <
int dim,
int spacedim>
1115 std::vector<types::global_dof_index> &new_dof_indices,
1117 const std::vector<bool> & selected_dofs);
1128 template <
int dim,
int spacedim>
1131 std::vector<types::global_dof_index> &new_dof_indices,
1133 const std::vector<bool> & selected_dofs,
1134 const unsigned int level);
1146 template <
int dim,
int spacedim>
1156 template <
int dim,
int spacedim>
1167 template <
int dim,
int spacedim>
1169 compute_random(std::vector<types::global_dof_index> &new_dof_indices,
1177 template <
int dim,
int spacedim>
1179 compute_random(std::vector<types::global_dof_index> &new_dof_indices,
1181 const unsigned int level);
1214 template <
int dim,
int spacedim>
1223 template <
int dim,
int spacedim>
1263 template <
int dim,
int spacedim>
1272 template <
int dim,
int spacedim>
1275 std::vector<types::global_dof_index> &new_dof_indices,
1322 typename VectorizedArrayType>
1337 template <
int dim,
int spacedim,
typename Number,
typename AdditionalDataType>
1342 const AdditionalDataType & matrix_free_additional_data);
1353 typename VectorizedArrayType>
1354 std::vector<types::global_dof_index>
1365 template <
int dim,
int spacedim,
typename Number,
typename AdditionalDataType>
1366 std::vector<types::global_dof_index>
1370 const AdditionalDataType & matrix_free_additional_data);
1383 "The DoFHandler on which this function should work has not "
1384 "been initialized, i.e., it doesn't appear that DoF indices "
1385 "have been distributed on it.");
typename LevelSelector::cell_iterator level_cell_iterator
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DeclException0(Exception0)
static ::ExceptionBase & ExcInvalidComponentOrder()
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcDoFHandlerNotInitialized()
static ::ExceptionBase & ExcNotDGFEM()
typename ActiveSelector::active_cell_iterator active_cell_iterator
void compute_Cuthill_McKee(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &, const bool reversed_numbering=false, const bool use_constraints=false)
void Cuthill_McKee(DoFHandler< dim, spacedim > &dof_handler, const bool reversed_numbering=false, const bool use_constraints=false)
void king_ordering(DoFHandler< dim, spacedim > &dof_handler, const bool reversed_numbering=false, const bool use_constraints=false)
void compute_king_ordering(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &, const bool reversed_numbering=false, const bool use_constraints=false)
void compute_minimum_degree(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &, const bool reversed_numbering=false, const bool use_constraints=false)
void minimum_degree(DoFHandler< dim, spacedim > &dof_handler, const bool reversed_numbering=false, const bool use_constraints=false)
void compute_support_point_wise(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &dof_handler)
void compute_subdomain_wise(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &dof_handler)
void matrix_free_data_locality(DoFHandler< dim, spacedim > &dof_handler, const MatrixFree< dim, Number, VectorizedArrayType > &matrix_free)
void subdomain_wise(DoFHandler< dim, spacedim > &dof_handler)
void hierarchical(DoFHandler< dim, spacedim > &dof_handler)
void compute_random(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &dof_handler)
void component_wise(DoFHandler< dim, spacedim > &dof_handler, const std::vector< unsigned int > &target_component=std::vector< unsigned int >())
void downstream(DoFHandler< dim, spacedim > &dof_handler, const Tensor< 1, spacedim > &direction, const bool dof_wise_renumbering=false)
types::global_dof_index compute_component_wise(std::vector< types::global_dof_index > &new_dof_indices, const CellIterator &start, const typename identity< CellIterator >::type &end, const std::vector< unsigned int > &target_component, const bool is_level_operation)
void compute_Cuthill_McKee(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &, const bool reversed_numbering=false, const bool use_constraints=false, const std::vector< types::global_dof_index > &starting_indices=std::vector< types::global_dof_index >(), const unsigned int level=numbers::invalid_unsigned_int)
void block_wise(DoFHandler< dim, spacedim > &dof_handler)
void Cuthill_McKee(DoFHandler< dim, spacedim > &dof_handler, const bool reversed_numbering=false, const bool use_constraints=false, const std::vector< types::global_dof_index > &starting_indices=std::vector< types::global_dof_index >())
void compute_sort_selected_dofs_back(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &dof_handler, const std::vector< bool > &selected_dofs)
void sort_selected_dofs_back(DoFHandler< dim, spacedim > &dof_handler, const std::vector< bool > &selected_dofs)
void support_point_wise(DoFHandler< dim, spacedim > &dof_handler)
void compute_cell_wise(std::vector< types::global_dof_index > &renumbering, std::vector< types::global_dof_index > &inverse_renumbering, const DoFHandler< dim, spacedim > &dof_handler, const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &cell_order)
std::vector< types::global_dof_index > compute_matrix_free_data_locality(const DoFHandler< dim, spacedim > &dof_handler, const MatrixFree< dim, Number, VectorizedArrayType > &matrix_free)
void clockwise_dg(DoFHandler< dim, spacedim > &dof_handler, const Point< spacedim > ¢er, const bool counter=false)
void random(DoFHandler< dim, spacedim > &dof_handler)
void compute_downstream(std::vector< types::global_dof_index > &new_dof_indices, std::vector< types::global_dof_index > &reverse, const DoFHandler< dim, spacedim > &dof_handler, const Tensor< 1, spacedim > &direction, const bool dof_wise_renumbering)
void cell_wise(DoFHandler< dim, spacedim > &dof_handler, const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &cell_order)
types::global_dof_index compute_block_wise(std::vector< types::global_dof_index > &new_dof_indices, const ITERATOR &start, const ENDITERATOR &end, bool is_level_operation)
void compute_clockwise_dg(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &dof_handler, const Point< spacedim > ¢er, const bool counter)
static const unsigned int invalid_unsigned_int
unsigned int global_dof_index
bool operator()(const Iterator &c1, const Iterator &c2) const
CompareDownstream(const Tensor< 1, dim > &dir)
const Tensor< 1, dim > dir
ComparePointwiseDownstream(const Tensor< 1, dim > &dir)
bool operator()(const std::pair< Point< dim >, types::global_dof_index > &c1, const std::pair< Point< dim >, types::global_dof_index > &c2) const
const Tensor< 1, dim > dir