* @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>
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>
// $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
}
-
+
Vector::Vector (const Epetra_Map &InputMap)
:
map (InputMap)
last_action = Zero;
vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(map));
}
-
-
+
+
Vector::Vector (const Vector &v)
:
VectorBase(),
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
{
vector.reset();
map = input_map;
-
+
vector = std::auto_ptr<Epetra_FEVector> (new Epetra_FEVector(map));
}
else if (fast == false)
const int ierr = vector->PutScalar(0.);
AssertThrow (ierr == 0, ExcTrilinosError(ierr));
}
-
+
last_action = Zero;
}
// 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(),
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);
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;
}
Vector::Vector (const Epetra_Map &InputMap)
:
- map (InputMap.NumGlobalElements(), InputMap.IndexBase(),
+ map (InputMap.NumGlobalElements(), InputMap.IndexBase(),
InputMap.Comm())
{
last_action = Zero;
ierr = vector->PutScalar(0.0);
AssertThrow (ierr == 0, ExcTrilinosError(ierr));
}
-
+
last_action = Zero;
}
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));
{
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