]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Take over fix 19370 from mainline.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 2 Sep 2009 22:35:03 +0000 (22:35 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 2 Sep 2009 22:35:03 +0000 (22:35 +0000)
git-svn-id: https://svn.dealii.org/branches/releases/Branch-6-2@19372 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/6.2.1-vs-6.2.2.h
deal.II/lac/source/trilinos_vector.cc

index a618e6ae65821ce2c5e77a58d09f676d6eace5f9..b710347b078519010546362bd17bff3ae78788e6 100644 (file)
@@ -2,7 +2,7 @@
  * @page changes_between_6.2.1_and_6.2.2 Changes between Version 6.2.1 and 6.2.2
 
 <p>
-This is the list of changes made between the release of 
+This is the list of changes made between the release of
 deal.II version 6.2.0 and version 6.2.1:
 </p>
 
@@ -31,6 +31,15 @@ deal.II version 6.2.0 and version 6.2.1:
     any more and were consequently able to compile deal.II.
     </p>
   </li>
+
+  <li>
+    <p>
+    Fixed: When using the TrilinosWrappers::MPI::Vector::reinit() function with a parallel
+    vector, and if the vector initialized and the vector given had a local range on one of
+    the processors that exactly matched, the program would freeze if the local ranges on
+    the other processors did not also match exactly. This is now fixed.
+    </p>
+  </li>
 </ol>
 
 
index ebeed0896fb4bdbf7d649681da6227ee1054ff13..89b71e0ef0c7a9c645c09ea550abd7818221e2ef 100755 (executable)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2008 by the deal.II authors
+//    Copyright (C) 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -42,7 +42,7 @@ namespace TrilinosWrappers
     }
 
 
-  
+
     Vector::Vector (const Epetra_Map &InputMap)
                     :
                    map (InputMap)
@@ -50,9 +50,9 @@ namespace TrilinosWrappers
       last_action = Zero;
       vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(map));
     }
-  
 
-  
+
+
     Vector::Vector (const Vector &v)
                     :
                     VectorBase(),
@@ -75,7 +75,7 @@ namespace TrilinosWrappers
                                         v.vector->Map().NumGlobalElements()));
 
       last_action = Zero;
-      
+
       if (map.SameAs(v.vector->Map()) == true)
        vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(*v.vector));
       else
@@ -96,7 +96,7 @@ namespace TrilinosWrappers
        {
          vector.reset();
          map = input_map;
-      
+
          vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(map));
        }
       else if (fast == false)
@@ -104,7 +104,7 @@ namespace TrilinosWrappers
          const int ierr = vector->PutScalar(0.);
          AssertThrow (ierr == 0, ExcTrilinosError(ierr));
        }
-  
+
       last_action = Zero;
     }
 
@@ -124,7 +124,7 @@ namespace TrilinosWrappers
                                        // generate the vector.
       if (allow_different_maps == false)
         {
-         if (local_range() != v.local_range())
+         if (vector->Map().SameAs(v.vector->Map()) == false)
            {
              vector.reset();
              map = Epetra_Map(v.vector->Map().NumGlobalElements(),
@@ -138,11 +138,7 @@ namespace TrilinosWrappers
          else if (fast == false)
            {
              int ierr;
-             Assert (vector->Map().SameAs(v.vector->Map()) == true,
-                     ExcMessage ("The Epetra maps in the assignment operator ="
-                                 " do not match, even though the local_range "
-                                 " seems to be the same. Check vector setup!"));
-             ierr = vector->GlobalAssemble (last_action);      
+             ierr = vector->GlobalAssemble (last_action);
              AssertThrow (ierr == 0, ExcTrilinosError(ierr));
 
              ierr = vector->PutScalar(0.0);
@@ -204,7 +200,7 @@ namespace TrilinosWrappers
                           v.vector->Map().NumMyElements(),
                           v.vector->Map().IndexBase(),
                           v.vector->Map().Comm());
-         vector = std::auto_ptr<Epetra_FEVector> 
+         vector = std::auto_ptr<Epetra_FEVector>
                            (new Epetra_FEVector(*v.vector));
          last_action = Zero;
        }
@@ -291,7 +287,7 @@ namespace TrilinosWrappers
 
   Vector::Vector (const Epetra_Map &InputMap)
                  :
-                 map (InputMap.NumGlobalElements(), InputMap.IndexBase(), 
+                 map (InputMap.NumGlobalElements(), InputMap.IndexBase(),
                      InputMap.Comm())
   {
     last_action = Zero;
@@ -344,7 +340,7 @@ namespace TrilinosWrappers
        ierr = vector->PutScalar(0.0);
        AssertThrow (ierr == 0, ExcTrilinosError(ierr));
       }
-    
+
     last_action = Zero;
   }
 
@@ -450,7 +446,7 @@ namespace TrilinosWrappers
     if (size() != v.size())
       {
        vector.reset();
-       map = Epetra_LocalMap (v.vector->Map().NumGlobalElements(), 
+       map = Epetra_LocalMap (v.vector->Map().NumGlobalElements(),
                               v.vector->Map().IndexBase(),
                               v.vector->Comm());
        vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(map));
@@ -467,18 +463,18 @@ namespace TrilinosWrappers
   {
     if (size() != v.size())
       {
-       map = Epetra_LocalMap (v.vector->Map().NumGlobalElements(), 
+       map = Epetra_LocalMap (v.vector->Map().NumGlobalElements(),
                               v.vector->Map().IndexBase(),
                               v.vector->Comm());
        vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(map));
       }
 
     const int ierr = vector->Update(1.0, *v.vector, 0.0);
-    AssertThrow (ierr == 0, ExcTrilinosError(ierr));   
+    AssertThrow (ierr == 0, ExcTrilinosError(ierr));
 
     return *this;
   }
-  
+
 }
 
 DEAL_II_NAMESPACE_CLOSE

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.