From: Wolfgang Bangerth Date: Wed, 13 Sep 2017 21:12:31 +0000 (-0600) Subject: Unify the hp and non-hp implementations of a function. X-Git-Tag: v9.0.0-rc1~1066^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F5093%2Fhead;p=dealii.git Unify the hp and non-hp implementations of a function. --- diff --git a/include/deal.II/dofs/dof_accessor.templates.h b/include/deal.II/dofs/dof_accessor.templates.h index b4a3e0cb7b..6ea92e3228 100644 --- a/include/deal.II/dofs/dof_accessor.templates.h +++ b/include/deal.II/dofs/dof_accessor.templates.h @@ -2875,99 +2875,23 @@ namespace internal /** * Implement setting dof indices on a cell. */ - template - static - void - set_dof_indices (DoFCellAccessor, level_dof_access> &accessor, - const std::vector &local_dof_indices) - { - Assert (accessor.has_children() == false, - ExcInternalError()); - - const unsigned int dofs_per_vertex = accessor.get_fe().template n_dofs_per_object<0>(), - dofs_per_line = accessor.get_fe().template n_dofs_per_object<1>(), - dofs_per_quad = accessor.get_fe().template n_dofs_per_object<2>(), - dofs_per_hex = accessor.get_fe().template n_dofs_per_object<3>(), - dofs_per_cell = accessor.get_fe().dofs_per_cell; - (void)dofs_per_cell; - - Assert (local_dof_indices.size() == dofs_per_cell, - ExcInternalError()); - - unsigned int index = 0; - - for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) - for (unsigned int d=0; d::lines_per_cell; ++line) - for (unsigned int d=0; dset_dof_index(dim < 3 - ? - d - : - accessor.dof_handler->get_fe(). - adjust_line_dof_index_for_line_orientation(d, - accessor.line_orientation(line)), - local_dof_indices[index]); - // now copy dof numbers into the face. for faces in 3d with the - // wrong orientation, we have already made sure that we're ok - // by picking the correct lines and vertices (this happens - // automatically in the line() and vertex() - // functions). however, if the face is in wrong orientation, - // we look at it in flipped orientation and we will have to - // adjust the shape function indices that we see to correspond - // to the correct (cell-local) ordering. The same applies, if - // the face_rotation or face_orientation is non-standard - // - // again, if dim<3, then there is nothing to adjust - for (unsigned int quad=0; quad::quads_per_cell; ++quad) - for (unsigned int d=0; dset_dof_index(dim < 3 - ? - d - : - accessor.dof_handler->get_fe(). - adjust_quad_dof_index_for_face_orientation(d, - accessor.face_orientation(quad), - accessor.face_flip(quad), - accessor.face_rotation(quad)), - local_dof_indices[index]); - for (unsigned int d=0; d + template static void - set_dof_indices (const DoFCellAccessor, level_dof_access> &accessor, + set_dof_indices (const DoFCellAccessor &accessor, const std::vector &local_dof_indices) { + const unsigned int dim = DoFHandlerType::dimension; + Assert (accessor.has_children() == false, ExcInternalError()); - const unsigned int dofs_per_vertex = accessor.get_fe().template n_dofs_per_object<0>(), - dofs_per_line = accessor.get_fe().template n_dofs_per_object<1>(), - dofs_per_quad = accessor.get_fe().template n_dofs_per_object<2>(), - dofs_per_hex = accessor.get_fe().template n_dofs_per_object<3>(), - dofs_per_cell = accessor.get_fe().dofs_per_cell; - (void)dofs_per_cell; + const unsigned int dofs_per_vertex = accessor.get_fe().dofs_per_vertex, + dofs_per_line = accessor.get_fe().dofs_per_line, + dofs_per_quad = accessor.get_fe().dofs_per_quad, + dofs_per_hex = accessor.get_fe().dofs_per_hex; - Assert (local_dof_indices.size() == dofs_per_cell, + Assert (local_dof_indices.size() == accessor.get_fe().dofs_per_cell, ExcInternalError()); unsigned int index = 0; @@ -3025,7 +2949,7 @@ namespace internal accessor.set_dof_index(d, local_dof_indices[index], accessor.active_fe_index()); - Assert (index == dofs_per_cell, + Assert (index == accessor.get_fe().dofs_per_cell, ExcInternalError()); }