From: Wolfgang Bangerth Date: Mon, 4 May 1998 08:38:46 +0000 (+0000) Subject: Add refinement strategies. X-Git-Tag: v8.0.0~23016 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6791f33083c842f7e7decc82a11efe7ace8fb9b;p=dealii.git Add refinement strategies. git-svn-id: https://svn.dealii.org/trunk@238 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/source/dofs/dof_handler.cc b/deal.II/deal.II/source/dofs/dof_handler.cc index 563da357c3..2e9e446576 100644 --- a/deal.II/deal.II/source/dofs/dof_handler.cc +++ b/deal.II/deal.II/source/dofs/dof_handler.cc @@ -1064,7 +1064,7 @@ void DoFHandler<1>::make_sparsity_pattern (dSMatrixStruct &sparsity) const { // set up an array which dofs are used // on a specific cell - unsigned int *dofs_on_this_cell = new unsigned int[selected_fe->total_dofs]; + unsigned int *dofs_on_this_cell = new unsigned int[selected_fe->total_dofs]; for (; cell!=endc; ++cell) { diff --git a/deal.II/deal.II/source/grid/tria.cc b/deal.II/deal.II/source/grid/tria.cc index 43156902bc..f1242121c3 100644 --- a/deal.II/deal.II/source/grid/tria.cc +++ b/deal.II/deal.II/source/grid/tria.cc @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -1721,6 +1722,39 @@ void Triangulation<2>::print_gnuplot (ostream &out, + +template +void Triangulation::refine (const dVector &criteria, + const double threshold) { + Assert (criteria.n() == n_active_cells(), + ExcInvalidVectorSize(criteria.n(), n_active_cells())); + + active_cell_iterator cell = begin_active(); + const unsigned int n_cells = criteria.n(); + + for (unsigned int index=0; index threshold) + cell->set_refine_flag(); +}; + + + +template +void Triangulation::refine_fixed_number (const dVector &criteria, + const double fraction) { + dVector tmp(criteria); + nth_element (tmp.begin(), + tmp.begin()+static_cast(fraction*tmp.n()), + tmp.end(), + greater()); + + refine (criteria, *(tmp.begin() + + static_cast(fraction*tmp.n()))); +}; + + + + void Triangulation<1>::execute_refinement () { prepare_refinement ();