From 461586f2bda36a0373f75bc7b3eeaf161085f8e5 Mon Sep 17 00:00:00 2001 From: kronbichler Date: Tue, 18 Nov 2008 11:50:39 +0000 Subject: [PATCH] One more update for the Trilinos vector functions. git-svn-id: https://svn.dealii.org/trunk@17625 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/lac/include/lac/trilinos_vector.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/deal.II/lac/include/lac/trilinos_vector.h b/deal.II/lac/include/lac/trilinos_vector.h index 99158a0f2a..d142b9f479 100755 --- a/deal.II/lac/include/lac/trilinos_vector.h +++ b/deal.II/lac/include/lac/trilinos_vector.h @@ -644,7 +644,14 @@ namespace TrilinosWrappers template Vector::Vector (const dealii::Vector &v) + : +#ifdef DEAL_II_COMPILER_SUPPORTS_MPI + map (v.size(), 0, Epetra_MpiComm(MPI_COMM_WORLD)) +#else + map (v.size(), 0, Epetra_SerialComm()) +#endif { + vector = std::auto_ptr (new Epetra_FEVector(map)); *this = v; } @@ -663,14 +670,18 @@ namespace TrilinosWrappers Vector & Vector::operator = (const ::dealii::Vector &v) { + if (size() != v.size()) + { + vector.release(); #ifdef DEAL_II_COMPILER_SUPPORTS_MPI - map = Epetra_LocalMap (v.size(), 0, Epetra_MpiComm(MPI_COMM_WORLD)); + map = Epetra_LocalMap (v.size(), 0, Epetra_MpiComm(MPI_COMM_WORLD)); #else - map = Epetra_LocalMap (v.size(), 0, Epetra_SerialComm()); + map = Epetra_LocalMap (v.size(), 0, Epetra_SerialComm()); #endif - vector = std::auto_ptr (new Epetra_FEVector(map)); - + vector = std::auto_ptr (new Epetra_FEVector(map)); + } + const int min_my_id = map.MinMyGID(); const int size = map.NumMyElements(); -- 2.39.5