From: Matthias Maier Date: Fri, 27 Apr 2018 14:48:44 +0000 (-0500) Subject: Merge pull request #6300 from kronbichler/issue_5667_dof_info X-Git-Tag: v9.0.0-rc1~93 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9aeef3a97e11d41bcc7df474b37941da4d52322;p=dealii.git Merge pull request #6300 from kronbichler/issue_5667_dof_info Face loop functionality in MatrixFree, FEFaceEvaluation class, test cases --- c9aeef3a97e11d41bcc7df474b37941da4d52322 diff --cc include/deal.II/matrix_free/dof_info.h index 214a4da17c,55a36b3e39..850ebc0e0f --- a/include/deal.II/matrix_free/dof_info.h +++ b/include/deal.II/matrix_free/dof_info.h @@@ -376,139 -501,18 +501,20 @@@ namespace interna inline unsigned int - DoFInfo::row_length_indices (const unsigned int row) const - { - AssertIndexRange (row, row_starts.size()-1); - return (row_starts[row+1][0] - row_starts[row][0]); - } - - - - inline - const std::pair * - DoFInfo::begin_indicators (const unsigned int row) const - { - AssertIndexRange (row, row_starts.size()-1); - const unsigned int index = row_starts[row][1]; - AssertIndexRange (index, constraint_indicator.size()+1); - return constraint_indicator.empty() ? - nullptr : - constraint_indicator.data()+index; - } - - - - inline - const std::pair * - DoFInfo::end_indicators (const unsigned int row) const - { - AssertIndexRange (row, row_starts.size()-1); - const unsigned int index = row_starts[row+1][1]; - AssertIndexRange (index, constraint_indicator.size()+1); - return constraint_indicator.empty() ? - nullptr : - constraint_indicator.data()+index; - } - - - - inline - unsigned int - DoFInfo::row_length_indicators (const unsigned int row) const - { - AssertIndexRange (row, row_starts.size()-1); - return (row_starts[row+1][1] - row_starts[row][1]); - } - - - - inline - const unsigned int * - DoFInfo::begin_indices_plain (const unsigned int row) const - { - // if we have no constraints, should take the data from dof_indices - if (row_length_indicators(row) == 0) - { - Assert (row_starts_plain_indices[row]==numbers::invalid_unsigned_int, - ExcInternalError()); - return begin_indices(row); - } - else - { - AssertDimension (row_starts.size(), row_starts_plain_indices.size()); - const unsigned int index = row_starts_plain_indices[row]; - AssertIndexRange(index, plain_dof_indices.size()+1); - return plain_dof_indices.empty() ? - nullptr : - plain_dof_indices.data()+index; - } - } - - - - inline - const unsigned int * - DoFInfo::end_indices_plain (const unsigned int row) const - { - return begin_indices_plain(row) + - dofs_per_cell[(cell_active_fe_index.size()==0)? - 0:cell_active_fe_index[row]]; - } - - - - inline - unsigned int - DoFInfo::fe_index_from_degree (const unsigned int fe_degree) const + DoFInfo::fe_index_from_degree (const unsigned int first_selected_component, + const unsigned int fe_degree) const { const unsigned int n_indices = fe_index_conversion.size(); + if (n_indices <= 1) + return 0; for (unsigned int i=0; i