From: wolf Date: Wed, 17 Feb 1999 10:25:55 +0000 (+0000) Subject: Discard zero entries in the constraint matrix when calling 'close'. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e28fe1856b62abb8164c8a28d617ff724287513a;p=dealii-svn.git Discard zero entries in the constraint matrix when calling 'close'. git-svn-id: https://svn.dealii.org/trunk@832 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/source/dofs/dof_constraints.cc b/deal.II/deal.II/source/dofs/dof_constraints.cc index 396b7ad1cf..38180a324d 100644 --- a/deal.II/deal.II/source/dofs/dof_constraints.cc +++ b/deal.II/deal.II/source/dofs/dof_constraints.cc @@ -8,7 +8,7 @@ #include #include #include - +#include @@ -84,11 +84,22 @@ void ConstraintMatrix::close () { Assert (sorted==false, ExcMatrixIsClosed()); // sort the entries in the different lines + // and strip zero entries vector::iterator line = lines.begin(), endl = lines.end(); for (; line!=endl; ++line) - sort (line->entries.begin(), line->entries.end()); - + { + // first remove zero entries + line->entries.erase (remove_if (line->entries.begin(), + line->entries.end(), + compose1 (bind2nd (equal_to(), 0), + select2nd >())), + line->entries.end()); + + // now sort the remainder + sort (line->entries.begin(), line->entries.end()); + }; + // sort the lines sort (lines.begin(), lines.end());