13#ifndef dealii_dof_renumbering_h
14#define dealii_dof_renumbering_h
30template <
int,
typename,
typename>
360 template <
class Iterator,
int dim>
376 return (diff *
dir > 0);
411 return (diff *
dir > 0 || (diff *
dir == 0 && c1.second < c2.second));
449 template <
int dim,
int spacedim>
452 const bool reversed_numbering =
false,
453 const bool use_constraints =
false);
460 template <
int dim,
int spacedim>
464 const bool reversed_numbering =
false,
465 const bool use_constraints =
false);
479 template <
int dim,
int spacedim>
482 const bool reversed_numbering =
false,
483 const bool use_constraints =
false);
489 template <
int dim,
int spacedim>
493 const bool reversed_numbering =
false,
494 const bool use_constraints =
false);
507 template <
int dim,
int spacedim>
510 const bool reversed_numbering =
false,
511 const bool use_constraints =
false);
517 template <
int dim,
int spacedim>
520 std::vector<types::global_dof_index> &new_dof_indices,
522 const bool reversed_numbering =
false,
523 const bool use_constraints =
false);
590 template <
int dim,
int spacedim>
593 const bool reversed_numbering =
false,
594 const bool use_constraints =
false,
595 const std::vector<types::global_dof_index> &starting_indices =
596 std::vector<types::global_dof_index>());
607 template <
int dim,
int spacedim>
610 std::vector<types::global_dof_index> &new_dof_indices,
612 const bool reversed_numbering =
false,
613 const bool use_constraints =
false,
614 const std::vector<types::global_dof_index> &starting_indices =
615 std::vector<types::global_dof_index>(),
631 template <
int dim,
int spacedim>
634 const unsigned int level,
635 const bool reversed_numbering =
false,
636 const std::vector<types::global_dof_index> &starting_indices =
637 std::vector<types::global_dof_index>());
670 template <
int dim,
int spacedim>
673 const std::vector<unsigned int> &target_component =
674 std::vector<unsigned int>());
683 template <
int dim,
int spacedim>
686 const unsigned int level,
687 const std::vector<unsigned int> &target_component =
688 std::vector<unsigned int>());
724 template <
int dim,
int spacedim>
727 const std::vector<FEValuesExtractors::AnyExtractor> &order);
735 template <
int dim,
int spacedim>
738 const unsigned int level,
739 const std::vector<FEValuesExtractors::AnyExtractor> &order);
747 template <
int dim,
int spacedim,
typename CellIterator>
750 const CellIterator &start,
752 const std::vector<unsigned int> &target_component,
753 const bool is_level_operation);
783 template <
int dim,
int spacedim>
793 template <
int dim,
int spacedim>
802 template <
int dim,
int spacedim,
class IteratorType,
class EndIteratorType>
805 const IteratorType &start,
806 const EndIteratorType &
end,
807 const bool is_level_operation);
890 template <
int dim,
int spacedim>
918 template <
int dim,
int spacedim>
960 template <
int dim,
int spacedim>
963 std::vector<types::global_dof_index> &renumbering,
964 std::vector<types::global_dof_index> &inverse_renumbering,
973 template <
int dim,
int spacedim>
977 const unsigned int level,
985 template <
int dim,
int spacedim>
988 std::vector<types::global_dof_index> &renumbering,
989 std::vector<types::global_dof_index> &inverse_renumbering,
991 const unsigned int level,
1030 template <
int dim,
int spacedim>
1034 const bool dof_wise_renumbering =
false);
1042 template <
int dim,
int spacedim>
1045 const unsigned int level,
1047 const bool dof_wise_renumbering =
false);
1054 template <
int dim,
int spacedim>
1057 std::vector<types::global_dof_index> &reverse,
1060 const bool dof_wise_renumbering);
1067 template <
int dim,
int spacedim>
1070 std::vector<types::global_dof_index> &reverse,
1072 const unsigned int level,
1074 const bool dof_wise_renumbering);
1084 template <
int dim,
int spacedim>
1088 const bool counter =
false);
1094 template <
int dim,
int spacedim>
1097 const unsigned int level,
1099 const bool counter =
false);
1106 template <
int dim,
int spacedim>
1111 const bool counter);
1131 template <
int dim,
int spacedim>
1134 const std::vector<bool> &selected_dofs);
1146 template <
int dim,
int spacedim>
1149 const std::vector<bool> &selected_dofs,
1150 const unsigned int level);
1160 template <
int dim,
int spacedim>
1163 std::vector<types::global_dof_index> &new_dof_indices,
1165 const std::vector<bool> &selected_dofs);
1176 template <
int dim,
int spacedim>
1179 std::vector<types::global_dof_index> &new_dof_indices,
1181 const std::vector<bool> &selected_dofs,
1182 const unsigned int level);
1194 template <
int dim,
int spacedim>
1204 template <
int dim,
int spacedim>
1215 template <
int dim,
int spacedim>
1217 compute_random(std::vector<types::global_dof_index> &new_dof_indices,
1225 template <
int dim,
int spacedim>
1227 compute_random(std::vector<types::global_dof_index> &new_dof_indices,
1229 const unsigned int level);
1262 template <
int dim,
int spacedim>
1271 template <
int dim,
int spacedim>
1311 template <
int dim,
int spacedim>
1320 template <
int dim,
int spacedim>
1323 std::vector<types::global_dof_index> &new_dof_indices,
1356 const double tolerance = 1e-12);
1402 typename VectorizedArrayType>
1417 template <
int dim,
int spacedim,
typename Number,
typename AdditionalDataType>
1422 const AdditionalDataType &matrix_free_additional_data);
1433 typename VectorizedArrayType>
1434 std::vector<types::global_dof_index>
1445 template <
int dim,
int spacedim,
typename Number,
typename AdditionalDataType>
1446 std::vector<types::global_dof_index>
1450 const AdditionalDataType &matrix_free_additional_data);
1463 "The DoFHandler on which this function should work has not "
1464 "been initialized, i.e., it doesn't appear that DoF indices "
1465 "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)
types::global_dof_index compute_block_wise(std::vector< types::global_dof_index > &new_dof_indices, const IteratorType &start, const EndIteratorType &end, const bool is_level_operation)
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)
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 lexicographic(DoFHandler< dim > &dof_handler, const double tolerance=1e-12)
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)
void compute_lexicographic(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim > &handler, const double tolerance=1e-12)
types::global_dof_index compute_component_wise(std::vector< types::global_dof_index > &new_dof_indices, const CellIterator &start, const std_cxx20::type_identity_t< CellIterator > &end, const std::vector< unsigned int > &target_component, const 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)
constexpr unsigned int invalid_unsigned_int
typename type_identity< T >::type type_identity_t
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