16#ifndef dealii_dof_renumbering_h
17#define dealii_dof_renumbering_h
349 template <
class Iterator,
int dim>
365 return (diff *
dir > 0);
400 return (diff *
dir > 0 || (diff *
dir == 0 && c1.second < c2.second));
438 template <
int dim,
int spacedim>
441 const bool reversed_numbering =
false,
442 const bool use_constraints =
false);
449 template <
int dim,
int spacedim>
453 const bool reversed_numbering =
false,
454 const bool use_constraints =
false);
468 template <
int dim,
int spacedim>
471 const bool reversed_numbering =
false,
472 const bool use_constraints =
false);
478 template <
int dim,
int spacedim>
482 const bool reversed_numbering =
false,
483 const bool use_constraints =
false);
496 template <
int dim,
int spacedim>
499 const bool reversed_numbering =
false,
500 const bool use_constraints =
false);
506 template <
int dim,
int spacedim>
509 std::vector<types::global_dof_index> &new_dof_indices,
511 const bool reversed_numbering =
false,
512 const bool use_constraints =
false);
579 template <
int dim,
int spacedim>
582 const bool reversed_numbering =
false,
583 const bool use_constraints =
false,
584 const std::vector<types::global_dof_index> &starting_indices =
585 std::vector<types::global_dof_index>());
596 template <
int dim,
int spacedim>
599 std::vector<types::global_dof_index> &new_dof_indices,
601 const bool reversed_numbering =
false,
602 const bool use_constraints =
false,
603 const std::vector<types::global_dof_index> &starting_indices =
604 std::vector<types::global_dof_index>(),
620 template <
int dim,
int spacedim>
623 const unsigned int level,
624 const bool reversed_numbering =
false,
625 const std::vector<types::global_dof_index> &starting_indices =
626 std::vector<types::global_dof_index>());
659 template <
int dim,
int spacedim>
662 const std::vector<unsigned int> &target_component =
663 std::vector<unsigned int>());
672 template <
int dim,
int spacedim>
675 const unsigned int level,
676 const std::vector<unsigned int> &target_component =
677 std::vector<unsigned int>());
684 template <
int dim,
int spacedim,
typename CellIterator>
687 const CellIterator & start,
689 const std::vector<unsigned int> &target_component,
690 const bool is_level_operation);
720 template <
int dim,
int spacedim>
730 template <
int dim,
int spacedim>
739 template <
int dim,
int spacedim,
class ITERATOR,
class ENDITERATOR>
742 const ITERATOR & start,
743 const ENDITERATOR &
end,
744 bool is_level_operation);
827 template <
int dim,
int spacedim>
855 template <
int dim,
int spacedim>
897 template <
int dim,
int spacedim>
900 std::vector<types::global_dof_index> &renumbering,
901 std::vector<types::global_dof_index> &inverse_renumbering,
910 template <
int dim,
int spacedim>
914 const unsigned int level,
922 template <
int dim,
int spacedim>
925 std::vector<types::global_dof_index> &renumbering,
926 std::vector<types::global_dof_index> &inverse_renumbering,
928 const unsigned int level,
967 template <
int dim,
int spacedim>
971 const bool dof_wise_renumbering =
false);
979 template <
int dim,
int spacedim>
982 const unsigned int level,
984 const bool dof_wise_renumbering =
false);
991 template <
int dim,
int spacedim>
994 std::vector<types::global_dof_index> &reverse,
997 const bool dof_wise_renumbering);
1004 template <
int dim,
int spacedim>
1007 std::vector<types::global_dof_index> &reverse,
1009 const unsigned int level,
1011 const bool dof_wise_renumbering);
1021 template <
int dim,
int spacedim>
1025 const bool counter =
false);
1031 template <
int dim,
int spacedim>
1034 const unsigned int level,
1036 const bool counter =
false);
1043 template <
int dim,
int spacedim>
1048 const bool counter);
1068 template <
int dim,
int spacedim>
1071 const std::vector<bool> & selected_dofs);
1083 template <
int dim,
int spacedim>
1086 const std::vector<bool> & selected_dofs,
1087 const unsigned int level);
1097 template <
int dim,
int spacedim>
1100 std::vector<types::global_dof_index> &new_dof_indices,
1102 const std::vector<bool> & selected_dofs);
1113 template <
int dim,
int spacedim>
1116 std::vector<types::global_dof_index> &new_dof_indices,
1118 const std::vector<bool> & selected_dofs,
1119 const unsigned int level);
1131 template <
int dim,
int spacedim>
1141 template <
int dim,
int spacedim>
1152 template <
int dim,
int spacedim>
1154 compute_random(std::vector<types::global_dof_index> &new_dof_indices,
1162 template <
int dim,
int spacedim>
1164 compute_random(std::vector<types::global_dof_index> &new_dof_indices,
1166 const unsigned int level);
1199 template <
int dim,
int spacedim>
1208 template <
int dim,
int spacedim>
1225 "The DoFHandler on which this function should work has not "
1226 "been initialized, i.e., it doesn't appear that DoF indices "
1227 "have been distributed on it.");
#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()
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_subdomain_wise(std::vector< types::global_dof_index > &new_dof_indices, const DoFHandler< dim, spacedim > &dof_handler)
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 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)
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)
VectorType::value_type * end(VectorType &V)
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