From e5953abfbbf8eea1f116935f5a8c6ab27fad3a64 Mon Sep 17 00:00:00 2001 From: kronbichler Date: Wed, 30 Mar 2011 13:30:30 +0000 Subject: [PATCH] Fix border case where some processors have zero vector sizes. git-svn-id: https://svn.dealii.org/trunk@23544 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/include/deal.II/lac/trilinos_vector_base.h | 3 ++- deal.II/source/lac/constraint_matrix.cc | 7 +------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/deal.II/include/deal.II/lac/trilinos_vector_base.h b/deal.II/include/deal.II/lac/trilinos_vector_base.h index 0bff5bc695..888abd11e6 100644 --- a/deal.II/include/deal.II/lac/trilinos_vector_base.h +++ b/deal.II/include/deal.II/lac/trilinos_vector_base.h @@ -1142,7 +1142,8 @@ namespace TrilinosWrappers Assert (vector.get() != 0, ExcMessage("Vector has not been constructed properly.")); - if (fast == false || local_range() != v.local_range()) + if (fast == false || + vector_partitioner().SameAs(v.vector_partitioner())==false) vector.reset (new Epetra_FEVector(*v.vector)); } diff --git a/deal.II/source/lac/constraint_matrix.cc b/deal.II/source/lac/constraint_matrix.cc index b2fd66c089..1252620a4c 100644 --- a/deal.II/source/lac/constraint_matrix.cc +++ b/deal.II/source/lac/constraint_matrix.cc @@ -1848,7 +1848,6 @@ ConstraintMatrix::distribute (TrilinosWrappers::MPI::Vector &vec) const AssertThrow (vec.vector_partitioner().IsOneToOne(), ExcMessage ("Distribute does not work on vectors with overlapping parallel partitioning.")); - typedef std::vector::const_iterator constraint_iterator; ConstraintLine index_comparison; index_comparison.line = vec.local_range().first; @@ -2008,12 +2007,8 @@ ConstraintMatrix::distribute (TrilinosWrappers::MPI::BlockVector &vec) const it->entries[i].second); vec(it->line) = new_value; } + vec.block(block).compress(Insert); } - - // force every processor to write something - unsigned int idx = vec.block(0).local_range().first; - vec(idx) = vec(idx); - vec.compress (); } #endif -- 2.39.5