From e28fe1856b62abb8164c8a28d617ff724287513a Mon Sep 17 00:00:00 2001 From: wolf Date: Wed, 17 Feb 1999 10:25:55 +0000 Subject: [PATCH] Discard zero entries in the constraint matrix when calling 'close'. git-svn-id: https://svn.dealii.org/trunk@832 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/dofs/dof_constraints.cc | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) 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()); -- 2.39.5