]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Fix bug in TrilinosVector::sadd with MPI 174/head
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Fri, 26 Sep 2014 09:32:54 +0000 (11:32 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sat, 27 Sep 2014 09:25:05 +0000 (11:25 +0200)
As pointed out by Praveen C on the mailing list, sadd() of the Trilinos vector did
not work properly when combining ghosted with non-ghosted vectors. The test supposed
to check this used two vectors with the same entries, which did not detect that the
wrong vector was scaled.

doc/news/changes.h
include/deal.II/lac/trilinos_vector_base.h
tests/mpi/trilinos_sadd_02.cc
tests/mpi/trilinos_sadd_02.with_trilinos=true.mpirun=1.output
tests/mpi/trilinos_sadd_02.with_trilinos=true.mpirun=2.output

index a649296063bb0ddb970445de58d55792c450ad15..0f8bed3e74c4a4ab2c05c19f9d4f8e9adfcd2ca9 100644 (file)
@@ -304,6 +304,13 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li> Fixed: The function TrilinosWrappers::VectorBase::sadd(double factor,
+  VectorBase &v) erroneously added factor*v instead of scaling the calling
+  vector by factor. This is now fixed.
+  <br>
+  (Martin Kronbichler, 2014/09/26)
+  </li>
+
   <li> Fixed: The function TrilinosWrappers::SparseMatrix::add(double factor,
   SparseMatrix &rhs) produced wrong results and ran into an exception if the
   rhs matrix included off-processor column entries. This is now fixed.
index 034a63c60714018792a0b9df74a7b8777528f9c3..ba77c644bf25bce81abc8f6b5349d0d575c32168 100644 (file)
@@ -1718,9 +1718,8 @@ namespace TrilinosWrappers
       }
     else
       {
-        VectorBase tmp = v;
-        tmp *= s;
-        this->add(tmp, true);
+        (*this) *= s;
+        this->add(v, true);
       }
   }
 
@@ -1747,7 +1746,7 @@ namespace TrilinosWrappers
       }
     else
       {
-        (*this)*=s;
+        (*this) *= s;
         VectorBase tmp = v;
         tmp *= a;
         this->add(tmp, true);
index 565c9bb215c1435f72950a05c2fb63a2aada418e..1734d4c5538701b506584253fc90c3ace18ba7dd 100644 (file)
@@ -29,7 +29,7 @@
 
 void test ()
 {
-  TrilinosWrappers::MPI::Vector ghosted, distributed;
+  TrilinosWrappers::MPI::Vector ghosted, ghosted2, distributed, distributed2;
   //All processes should own 10 entries
   const int entries_per_process = 10;
   const int n_proc = Utilities::MPI::n_mpi_processes(MPI_COMM_WORLD);
@@ -46,10 +46,13 @@ void test ()
     (local_begin, local_end);
  
   distributed.reinit(locally_owned, MPI_COMM_WORLD);
+  distributed2.reinit(locally_owned, MPI_COMM_WORLD);
   ghosted.reinit (locally_owned, locally_relevant, MPI_COMM_WORLD);
+  ghosted2.reinit (locally_owned, locally_relevant, MPI_COMM_WORLD);
 
   distributed=1.;
   ghosted=distributed;
+  ghosted *= 1.6;
   distributed.sadd (2., ghosted);
   ghosted = distributed;
   deallog << "sadd (s, v)" <<std::endl;
@@ -59,6 +62,7 @@ void test ()
 
   distributed=1.;
   ghosted=distributed;
+  ghosted *= 1.6;
   distributed.sadd (2., 3., ghosted);
   ghosted = distributed;
   deallog << "sadd (s, a, v)" <<std::endl;
@@ -68,7 +72,10 @@ void test ()
 
   distributed=1.;
   ghosted=distributed;
-  distributed.sadd (2., 3., ghosted, 4., ghosted);
+  ghosted *= 1.6;
+  ghosted2 = distributed;
+  ghosted2 *= 0.354;
+  distributed.sadd (2., 3., ghosted, 4., ghosted2);
   ghosted = distributed;
   deallog << "sadd (s, a, v, b, w)" <<std::endl;
   if (my_id==0)
@@ -77,7 +84,8 @@ void test ()
 
   distributed=1.;
   ghosted=distributed;
-  distributed.sadd (2., 3., ghosted, 4., ghosted, 5., ghosted);
+  distributed2 = 7.22;
+  distributed.sadd (2., 3., ghosted, 4., ghosted2, 5., distributed2);
   ghosted = distributed;
   deallog << "sadd (s, a, v, b, w, c, x)" <<std::endl;
   if (my_id==0)
index ddb6d882f597afdf0a3bd8b256ebf6c667616a9b..27340e535526060e458930f72e93ace36021ff90 100644 (file)
@@ -1,45 +1,45 @@
 
 DEAL:0::sadd (s, v)
-DEAL:0::0: 3.000
-DEAL:0::1: 3.000
-DEAL:0::2: 3.000
-DEAL:0::3: 3.000
-DEAL:0::4: 3.000
-DEAL:0::5: 3.000
-DEAL:0::6: 3.000
-DEAL:0::7: 3.000
-DEAL:0::8: 3.000
-DEAL:0::9: 3.000
+DEAL:0::0: 3.600
+DEAL:0::1: 3.600
+DEAL:0::2: 3.600
+DEAL:0::3: 3.600
+DEAL:0::4: 3.600
+DEAL:0::5: 3.600
+DEAL:0::6: 3.600
+DEAL:0::7: 3.600
+DEAL:0::8: 3.600
+DEAL:0::9: 3.600
 DEAL:0::sadd (s, a, v)
-DEAL:0::0: 5.000
-DEAL:0::1: 5.000
-DEAL:0::2: 5.000
-DEAL:0::3: 5.000
-DEAL:0::4: 5.000
-DEAL:0::5: 5.000
-DEAL:0::6: 5.000
-DEAL:0::7: 5.000
-DEAL:0::8: 5.000
-DEAL:0::9: 5.000
+DEAL:0::0: 6.800
+DEAL:0::1: 6.800
+DEAL:0::2: 6.800
+DEAL:0::3: 6.800
+DEAL:0::4: 6.800
+DEAL:0::5: 6.800
+DEAL:0::6: 6.800
+DEAL:0::7: 6.800
+DEAL:0::8: 6.800
+DEAL:0::9: 6.800
 DEAL:0::sadd (s, a, v, b, w)
-DEAL:0::0: 9.000
-DEAL:0::1: 9.000
-DEAL:0::2: 9.000
-DEAL:0::3: 9.000
-DEAL:0::4: 9.000
-DEAL:0::5: 9.000
-DEAL:0::6: 9.000
-DEAL:0::7: 9.000
-DEAL:0::8: 9.000
-DEAL:0::9: 9.000
+DEAL:0::0: 8.216
+DEAL:0::1: 8.216
+DEAL:0::2: 8.216
+DEAL:0::3: 8.216
+DEAL:0::4: 8.216
+DEAL:0::5: 8.216
+DEAL:0::6: 8.216
+DEAL:0::7: 8.216
+DEAL:0::8: 8.216
+DEAL:0::9: 8.216
 DEAL:0::sadd (s, a, v, b, w, c, x)
-DEAL:0::0: 14.00
-DEAL:0::1: 14.00
-DEAL:0::2: 14.00
-DEAL:0::3: 14.00
-DEAL:0::4: 14.00
-DEAL:0::5: 14.00
-DEAL:0::6: 14.00
-DEAL:0::7: 14.00
-DEAL:0::8: 14.00
-DEAL:0::9: 14.00
+DEAL:0::0: 42.52
+DEAL:0::1: 42.52
+DEAL:0::2: 42.52
+DEAL:0::3: 42.52
+DEAL:0::4: 42.52
+DEAL:0::5: 42.52
+DEAL:0::6: 42.52
+DEAL:0::7: 42.52
+DEAL:0::8: 42.52
+DEAL:0::9: 42.52
index 73a234dec29dd384bec90c440ad39d004404b286..d96caea1d1cfea6d89decc5ecc42274702647c05 100644 (file)
@@ -1,85 +1,85 @@
 
 DEAL:0::sadd (s, v)
-DEAL:0::0: 3.000
-DEAL:0::1: 3.000
-DEAL:0::2: 3.000
-DEAL:0::3: 3.000
-DEAL:0::4: 3.000
-DEAL:0::5: 3.000
-DEAL:0::6: 3.000
-DEAL:0::7: 3.000
-DEAL:0::8: 3.000
-DEAL:0::9: 3.000
-DEAL:0::10: 3.000
-DEAL:0::11: 3.000
-DEAL:0::12: 3.000
-DEAL:0::13: 3.000
-DEAL:0::14: 3.000
-DEAL:0::15: 3.000
-DEAL:0::16: 3.000
-DEAL:0::17: 3.000
-DEAL:0::18: 3.000
-DEAL:0::19: 3.000
+DEAL:0::0: 3.600
+DEAL:0::1: 3.600
+DEAL:0::2: 3.600
+DEAL:0::3: 3.600
+DEAL:0::4: 3.600
+DEAL:0::5: 3.600
+DEAL:0::6: 3.600
+DEAL:0::7: 3.600
+DEAL:0::8: 3.600
+DEAL:0::9: 3.600
+DEAL:0::10: 3.600
+DEAL:0::11: 3.600
+DEAL:0::12: 3.600
+DEAL:0::13: 3.600
+DEAL:0::14: 3.600
+DEAL:0::15: 3.600
+DEAL:0::16: 3.600
+DEAL:0::17: 3.600
+DEAL:0::18: 3.600
+DEAL:0::19: 3.600
 DEAL:0::sadd (s, a, v)
-DEAL:0::0: 5.000
-DEAL:0::1: 5.000
-DEAL:0::2: 5.000
-DEAL:0::3: 5.000
-DEAL:0::4: 5.000
-DEAL:0::5: 5.000
-DEAL:0::6: 5.000
-DEAL:0::7: 5.000
-DEAL:0::8: 5.000
-DEAL:0::9: 5.000
-DEAL:0::10: 5.000
-DEAL:0::11: 5.000
-DEAL:0::12: 5.000
-DEAL:0::13: 5.000
-DEAL:0::14: 5.000
-DEAL:0::15: 5.000
-DEAL:0::16: 5.000
-DEAL:0::17: 5.000
-DEAL:0::18: 5.000
-DEAL:0::19: 5.000
+DEAL:0::0: 6.800
+DEAL:0::1: 6.800
+DEAL:0::2: 6.800
+DEAL:0::3: 6.800
+DEAL:0::4: 6.800
+DEAL:0::5: 6.800
+DEAL:0::6: 6.800
+DEAL:0::7: 6.800
+DEAL:0::8: 6.800
+DEAL:0::9: 6.800
+DEAL:0::10: 6.800
+DEAL:0::11: 6.800
+DEAL:0::12: 6.800
+DEAL:0::13: 6.800
+DEAL:0::14: 6.800
+DEAL:0::15: 6.800
+DEAL:0::16: 6.800
+DEAL:0::17: 6.800
+DEAL:0::18: 6.800
+DEAL:0::19: 6.800
 DEAL:0::sadd (s, a, v, b, w)
-DEAL:0::0: 9.000
-DEAL:0::1: 9.000
-DEAL:0::2: 9.000
-DEAL:0::3: 9.000
-DEAL:0::4: 9.000
-DEAL:0::5: 9.000
-DEAL:0::6: 9.000
-DEAL:0::7: 9.000
-DEAL:0::8: 9.000
-DEAL:0::9: 9.000
-DEAL:0::10: 9.000
-DEAL:0::11: 9.000
-DEAL:0::12: 9.000
-DEAL:0::13: 9.000
-DEAL:0::14: 9.000
-DEAL:0::15: 9.000
-DEAL:0::16: 9.000
-DEAL:0::17: 9.000
-DEAL:0::18: 9.000
-DEAL:0::19: 9.000
+DEAL:0::0: 8.216
+DEAL:0::1: 8.216
+DEAL:0::2: 8.216
+DEAL:0::3: 8.216
+DEAL:0::4: 8.216
+DEAL:0::5: 8.216
+DEAL:0::6: 8.216
+DEAL:0::7: 8.216
+DEAL:0::8: 8.216
+DEAL:0::9: 8.216
+DEAL:0::10: 8.216
+DEAL:0::11: 8.216
+DEAL:0::12: 8.216
+DEAL:0::13: 8.216
+DEAL:0::14: 8.216
+DEAL:0::15: 8.216
+DEAL:0::16: 8.216
+DEAL:0::17: 8.216
+DEAL:0::18: 8.216
+DEAL:0::19: 8.216
 DEAL:0::sadd (s, a, v, b, w, c, x)
-DEAL:0::0: 14.00
-DEAL:0::1: 14.00
-DEAL:0::2: 14.00
-DEAL:0::3: 14.00
-DEAL:0::4: 14.00
-DEAL:0::5: 14.00
-DEAL:0::6: 14.00
-DEAL:0::7: 14.00
-DEAL:0::8: 14.00
-DEAL:0::9: 14.00
-DEAL:0::10: 14.00
-DEAL:0::11: 14.00
-DEAL:0::12: 14.00
-DEAL:0::13: 14.00
-DEAL:0::14: 14.00
-DEAL:0::15: 14.00
-DEAL:0::16: 14.00
-DEAL:0::17: 14.00
-DEAL:0::18: 14.00
-DEAL:0::19: 14.00
+DEAL:0::0: 42.52
+DEAL:0::1: 42.52
+DEAL:0::2: 42.52
+DEAL:0::3: 42.52
+DEAL:0::4: 42.52
+DEAL:0::5: 42.52
+DEAL:0::6: 42.52
+DEAL:0::7: 42.52
+DEAL:0::8: 42.52
+DEAL:0::9: 42.52
+DEAL:0::10: 42.52
+DEAL:0::11: 42.52
+DEAL:0::12: 42.52
+DEAL:0::13: 42.52
+DEAL:0::14: 42.52
+DEAL:0::15: 42.52
+DEAL:0::16: 42.52
+DEAL:0::17: 42.52
+DEAL:0::18: 42.52
+DEAL:0::19: 42.52

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.