From e3bd58cdd30a61274d11928054b9460d5790e561 Mon Sep 17 00:00:00 2001 From: Guido Kanschat Date: Wed, 21 Dec 2005 15:08:10 +0000 Subject: [PATCH] more renumbering for hpDoFHandler git-svn-id: https://svn.dealii.org/trunk@11914 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/include/dofs/dof_renumbering.h | 40 +++--- .../deal.II/source/dofs/dof_renumbering.cc | 130 ++++++++++++------ 2 files changed, 106 insertions(+), 64 deletions(-) diff --git a/deal.II/deal.II/include/dofs/dof_renumbering.h b/deal.II/deal.II/include/dofs/dof_renumbering.h index c4dbd2087a..a60e7cd4c7 100644 --- a/deal.II/deal.II/include/dofs/dof_renumbering.h +++ b/deal.II/deal.II/include/dofs/dof_renumbering.h @@ -508,11 +508,11 @@ class DoFRenumbering * have to be associated with the * interior of the cell. */ - template + template static void - clockwise_dg (DoFHandler &dof_handler, - const Point ¢er, - const bool counter = false); + clockwise_dg (DH& dof_handler, + const Point& center, + const bool counter = false); /** * Cell-wise clockwise numbering @@ -535,12 +535,12 @@ class DoFRenumbering * returns the renumbering * vector. */ - template + template static void - compute_clockwise_dg (std::vector &new_dof_indices, - const DoFHandler &dof_handler, - const Point ¢er, - const bool counter); + compute_clockwise_dg (std::vector& new_dof_indices, + const DH& dof_handler, + const Point& center, + const bool counter); /** * Sort those degrees of freedom @@ -555,10 +555,10 @@ class DoFRenumbering * order within the untagged * ones. */ - template + template static void - sort_selected_dofs_back (DoFHandler &dof_handler, - const std::vector &selected_dofs); + sort_selected_dofs_back (DH& dof_handler, + const std::vector& selected_dofs); /** * Computes the renumbering @@ -569,19 +569,19 @@ class DoFRenumbering * dofs but returns the * renumbering vector. */ - template + template static void - compute_sort_selected_dofs_back (std::vector &new_dof_indices, - const DoFHandler&, - const std::vector&selected_dofs); + compute_sort_selected_dofs_back (std::vector& new_dof_indices, + const DH& dof_handler, + const std::vector& selected_dofs); /** * Renumber the degrees of * freedom in a random way. */ - template + template static void - random (DoFHandler &dof_handler); + random (DH& dof_handler); /** * Computes the renumbering @@ -591,10 +591,10 @@ class DoFRenumbering * dofs but returns the * renumbering vector. */ - template + template static void compute_random (std::vector &new_dof_indices, - const DoFHandler &dof_handler); + const DH& dof_handler); /** * Renumber the degrees of diff --git a/deal.II/deal.II/source/dofs/dof_renumbering.cc b/deal.II/deal.II/source/dofs/dof_renumbering.cc index 98ced227e4..b950d3a29b 100644 --- a/deal.II/deal.II/source/dofs/dof_renumbering.cc +++ b/deal.II/deal.II/source/dofs/dof_renumbering.cc @@ -818,14 +818,14 @@ compute_component_wise (std::vector& new_indices, -template +template void DoFRenumbering::sort_selected_dofs_back ( - DoFHandler &dof_handler, - const std::vector &selected_dofs) + DH& dof_handler, + const std::vector& selected_dofs) { std::vector renumbering(dof_handler.n_dofs(), - DoFHandler::invalid_dof_index); + DH::invalid_dof_index); compute_sort_selected_dofs_back(renumbering, dof_handler, selected_dofs); dof_handler.renumber_dofs(renumbering); @@ -833,11 +833,11 @@ DoFRenumbering::sort_selected_dofs_back ( -template +template void DoFRenumbering::compute_sort_selected_dofs_back ( std::vector& new_indices, - const DoFHandler& dof_handler, + const DH& dof_handler, const std::vector& selected_dofs) { const unsigned int n_dofs = dof_handler.n_dofs(); @@ -1076,9 +1076,10 @@ struct ClockCells {} /** * Comparison operator - */ - bool operator () (const typename DoFHandler::cell_iterator& c1, - const typename DoFHandler::cell_iterator&c2) const + */ + template + bool operator () (const DHCellIterator& c1, + const DHCellIterator& c2) const { const Point v1 = c1->center() - center; @@ -1090,11 +1091,12 @@ struct ClockCells }; -template +template void -DoFRenumbering::clockwise_dg (DoFHandler& dof, - const Point& center, - const bool counter) +DoFRenumbering::clockwise_dg ( + DH& dof, + const Point& center, + const bool counter) { std::vector renumbering(dof.n_dofs()); compute_clockwise_dg(renumbering, dof, center, counter); @@ -1104,20 +1106,20 @@ DoFRenumbering::clockwise_dg (DoFHandler& dof, -template +template void DoFRenumbering::compute_clockwise_dg ( std::vector& new_indices, - const DoFHandler& dof, + const DH& dof, const Point& center, const bool counter) { - std::vector::cell_iterator> + std::vector ordered_cells(dof.get_tria().n_active_cells()); ClockCells comparator(center, counter); - typename DoFHandler::active_cell_iterator begin = dof.begin_active(); - typename DoFHandler::active_cell_iterator end = dof.end(); + typename DH::active_cell_iterator begin = dof.begin_active(); + typename DH::active_cell_iterator end = dof.end(); copy (begin, end, ordered_cells.begin()); sort (ordered_cells.begin(), ordered_cells.end(), comparator); @@ -1147,22 +1149,23 @@ void DoFRenumbering::clockwise_dg (MGDoFHandler& dof, -template +template void -DoFRenumbering::random (DoFHandler &dof_handler) +DoFRenumbering::random (DH& dof_handler) { std::vector renumbering(dof_handler.n_dofs(), - DoFHandler::invalid_dof_index); + DH::invalid_dof_index); compute_random(renumbering, dof_handler); dof_handler.renumber_dofs(renumbering); } -template +template void -DoFRenumbering::compute_random (std::vector &new_indices, - const DoFHandler &dof_handler) +DoFRenumbering::compute_random ( + std::vector& new_indices, + const DH& dof_handler) { const unsigned int n_dofs = dof_handler.n_dofs(); Assert(new_indices.size() == n_dofs, @@ -1325,6 +1328,20 @@ DoFRenumbering::compute_downstream_dg const DoFHandler&, const Point&); +template +void +DoFRenumbering::clockwise_dg +(DoFHandler&, + const Point&, bool); + +template +void +DoFRenumbering::compute_clockwise_dg +(std::vector&, + const DoFHandler&, + const Point&, + const bool); + // DG renumbering for hpDoFHandler template @@ -1353,6 +1370,20 @@ DoFRenumbering::compute_downstream_dg const hpDoFHandler&, const Point&); +template +void +DoFRenumbering::clockwise_dg +(hpDoFHandler&, + const Point&, bool); + +template +void +DoFRenumbering::compute_clockwise_dg +(std::vector&, + const hpDoFHandler&, + const Point&, + const bool); + // MG template @@ -1362,49 +1393,60 @@ void DoFRenumbering::downstream_dg const Point&); template -void -DoFRenumbering::clockwise_dg -(DoFHandler&, +void DoFRenumbering::clockwise_dg +(MGDoFHandler&, + const unsigned int, const Point&, bool); +// Generic numbering schemes + template -void -DoFRenumbering::compute_clockwise_dg -(std::vector&, - const DoFHandler&, - const Point&, bool); +void DoFRenumbering::random +(DoFHandler &); template -void DoFRenumbering::clockwise_dg -(MGDoFHandler&, - const unsigned int, - const Point&, bool); +void +DoFRenumbering::compute_random +(std::vector&, + const DoFHandler &); template -void DoFRenumbering::sort_selected_dofs_back +void DoFRenumbering::sort_selected_dofs_back (DoFHandler &, const std::vector &); template void -DoFRenumbering::compute_sort_selected_dofs_back +DoFRenumbering::compute_sort_selected_dofs_back (std::vector&, const DoFHandler &, const std::vector &); template -void DoFRenumbering::random -(DoFHandler &); +void DoFRenumbering::random +(hpDoFHandler &); template -void DoFRenumbering::subdomain_wise -(DoFHandler &); +void +DoFRenumbering::compute_random +(std::vector&, + const hpDoFHandler &); + +template +void DoFRenumbering::sort_selected_dofs_back +(hpDoFHandler &, + const std::vector &); template void -DoFRenumbering::compute_random +DoFRenumbering::compute_sort_selected_dofs_back (std::vector&, - const DoFHandler &); + const hpDoFHandler &, + const std::vector &); + +template +void DoFRenumbering::subdomain_wise +(DoFHandler &); template void -- 2.39.5