]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Don't use TrilinosWrappers::VectorBase anymore
authorDaniel Arndt <d.arndt@math.uni-goettingen.de>
Tue, 30 May 2017 22:01:31 +0000 (00:01 +0200)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Thu, 1 Jun 2017 17:12:51 +0000 (19:12 +0200)
24 files changed:
cmake/config/template-arguments.in
cmake/configure/configure_2_trilinos.cmake
include/deal.II/lac/petsc_matrix_base.h
include/deal.II/lac/trilinos_block_sparse_matrix.h
include/deal.II/lac/trilinos_solver.h
include/deal.II/lac/trilinos_sparse_matrix.h
include/deal.II/lac/vector.h
include/deal.II/lac/vector.templates.h
include/deal.II/multigrid/mg_transfer.h
include/deal.II/numerics/matrix_tools.h
source/distributed/solution_transfer.inst.in
source/fe/fe_tools_extrapolate.inst.in
source/grid/grid_refinement.cc
source/lac/constraint_matrix.cc
source/lac/trilinos_block_sparse_matrix.cc
source/lac/trilinos_solver.cc
source/lac/trilinos_sparse_matrix.cc
source/numerics/matrix_tools_once.cc
tests/mpi/trilinos_ghost_03_linfty.cc
tests/trilinos/update_ghosts.cc
tests/trilinos/vector_equality_1.cc
tests/trilinos/vector_equality_2.cc
tests/trilinos/vector_equality_3.cc
tests/trilinos/vector_equality_4.cc

index 2be554147caeb8bfd1e658b2fc5eb111696511cd..7946207164c45e6b23da375e222b41df01a5e327 100644 (file)
@@ -44,7 +44,6 @@ SERIAL_VECTORS := { Vector<double>;
                     LinearAlgebra::distributed::BlockVector<double>;
                     LinearAlgebra::distributed::BlockVector<float> ;
 
-                    @DEAL_II_EXPAND_TRILINOS_VECTOR@;
                     @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
                     @DEAL_II_EXPAND_EPETRA_VECTOR@;
                     @DEAL_II_EXPAND_PETSC_MPI_VECTOR@;
@@ -69,12 +68,10 @@ REAL_SERIAL_VECTORS := { Vector<double>;
                          LinearAlgebra::distributed::BlockVector<double>;
                          LinearAlgebra::distributed::BlockVector<float> ;
 
-                         @DEAL_II_EXPAND_TRILINOS_VECTOR@;
                          @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
                          @DEAL_II_EXPAND_EPETRA_VECTOR@;
                          @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;
 
-                         @DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@;
                          @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
                          @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR_REAL@;
                        }
@@ -89,7 +86,6 @@ REAL_NONBLOCK_VECTORS := { Vector<double>;
                            LinearAlgebra::distributed::Vector<double>;
                            LinearAlgebra::distributed::Vector<float> ;
 
-                           @DEAL_II_EXPAND_TRILINOS_VECTOR@;
                            @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
                            @DEAL_II_EXPAND_EPETRA_VECTOR@;
                            @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;
@@ -115,7 +111,6 @@ VECTORS_WITH_MATRIX := { Vector<double>;
 
                          LinearAlgebra::distributed::Vector<double>;
 
-                         @DEAL_II_EXPAND_TRILINOS_VECTOR@;
                          @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
                          @DEAL_II_EXPAND_EPETRA_VECTOR@;
                        }
index 6350174e357e7a33690e37249dc1ee228717c11d..12234ba3fa807a0e0f634775c3ab2edf29de5604 100644 (file)
@@ -188,7 +188,6 @@ ENDMACRO()
 
 
 MACRO(FEATURE_TRILINOS_CONFIGURE_EXTERNAL)
-  SET(DEAL_II_EXPAND_TRILINOS_VECTOR "TrilinosWrappers::VectorBase")
   SET(DEAL_II_EXPAND_TRILINOS_SPARSITY_PATTERN "TrilinosWrappers::SparsityPattern")
   SET(DEAL_II_EXPAND_TRILINOS_BLOCK_SPARSITY_PATTERN "TrilinosWrappers::BlockSparsityPattern")
   SET(DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR "TrilinosWrappers::MPI::BlockVector")
index cb013d5fa193f9528fc9f5d001a5ab35a1e4e589..81c55596b27969259243a24d8e8bca00ae3bb4d4 100644 (file)
@@ -1271,8 +1271,7 @@ namespace PETScWrappers
     if (value == PetscScalar())
       {
         // we have to check after using Insert/Add in any case to be
-        // consistent with the MPI communication model (see the comments in
-        // the documentation of TrilinosWrappers::VectorBase), but we can save
+        // consistent with the MPI communication model, but we can save
         // some work if the addend is zero. However, these actions are done
         // in case we pass on to the other function.
         prepare_action(VectorOperation::add);
index f692e8dad6cc4ce22db4e83b35419b3c9f8f23ba..6fdf7a376954aded250e6e42fef1b7a2934ab9f4 100644 (file)
@@ -329,9 +329,9 @@ namespace TrilinosWrappers
      *
      * This function is only applicable if the matrix only has one block.
      */
-    TrilinosScalar residual (VectorBase       &dst,
-                             const VectorBase &x,
-                             const VectorBase &b) const;
+    TrilinosScalar residual (MPI::Vector       &dst,
+                             const MPI::Vector &x,
+                             const MPI::Vector &b) const;
 
     /**
      * Make the clear() function in the base class visible, though it is
index 1375034e8a81ce0a4d3325b6f67d7c0dbb7494e3..d520474017d86ad4ffbd5b583dbc373038e55580 100644 (file)
@@ -42,7 +42,6 @@ namespace TrilinosWrappers
 {
   // forward declarations
   class SparseMatrix;
-  class VectorBase;
   class PreconditionBase;
 
 
@@ -154,8 +153,8 @@ namespace TrilinosWrappers
      */
     void
     solve (const SparseMatrix     &A,
-           VectorBase             &x,
-           const VectorBase       &b,
+           MPI::Vector            &x,
+           const MPI::Vector      &b,
            const PreconditionBase &preconditioner);
 
     /**
@@ -167,8 +166,8 @@ namespace TrilinosWrappers
      */
     void
     solve (const Epetra_Operator  &A,
-           VectorBase             &x,
-           const VectorBase       &b,
+           MPI::Vector            &x,
+           const MPI::Vector      &b,
            const PreconditionBase &preconditioner);
 
     /**
@@ -182,8 +181,8 @@ namespace TrilinosWrappers
      */
     void
     solve (const Epetra_Operator  &A,
-           VectorBase             &x,
-           const VectorBase       &b,
+           MPI::Vector            &x,
+           const MPI::Vector      &b,
            const Epetra_Operator  &preconditioner);
 
     /**
@@ -677,7 +676,7 @@ namespace TrilinosWrappers
      * package set in intialize(). Note the matrix is not refactorized during
      * this call.
      */
-    void solve (VectorBase &x, const VectorBase &b);
+    void solve (MPI::Vector &x, const MPI::Vector &b);
 
     /**
      * Solve the linear system <tt>Ax=b</tt>. Creates a factorization of the
@@ -687,8 +686,8 @@ namespace TrilinosWrappers
      */
     void
     solve (const SparseMatrix     &A,
-           VectorBase             &x,
-           const VectorBase       &b);
+           MPI::Vector            &x,
+           const MPI::Vector      &b);
 
     /**
      * Solve the linear system <tt>Ax=b</tt>. This class works with Trilinos
index c52e99482f7856e5fdc4f7133ec5a6262b2f6b3a..a780f40e99609842736e0ca2b6c4d1e6a811c0ba 100644 (file)
@@ -1475,15 +1475,14 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
-     * as deal.II's own vector classes Vector<double> and
-     * LinearAlgebra::distributed::Vector<double>.
+     * namely TrilinosWrappers::MPI::Vector as well as deal.II's own vector
+     * classes Vector<double> and LinearAlgebra::distributed::Vector<double>.
      *
-     * Note that both vectors have to be distributed vectors generated using
-     * the same Map as was used for the matrix in case you work on a
-     * distributed memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class (or one of the two derived classes
-     * Vector and MPI::Vector).
+     * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
+     * have to be distributed vectors generated using the same Map as was used
+     * for the matrix rows and columns in case you work on a distributed
+     * memory architecture, using the interface in the
+     * TrilinosWrappers::MPI::Vector class.
      *
      * In case of a localized Vector, this function will only work when
      * running on one processor, since the matrix object is inherently
@@ -1501,15 +1500,14 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
-     * as deal.II's own vector classes Vector<double> and
-     * LinearAlgebra::distributed::Vector<double>.
+     * namely TrilinosWrappers::MPI::Vector as well as deal.II's own vector
+     * classes Vector<double> and LinearAlgebra::distributed::Vector<double>.
      *
-     * Note that both vectors have to be distributed vectors generated using
-     * the same Map as was used for the matrix in case you work on a
-     * distributed memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class (or one of the two derived classes
-     * Vector and MPI::Vector).
+     * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
+     * have to be distributed vectors generated using the same Map as was used
+     * for the matrix rows and columns in case you work on a distributed
+     * memory architecture, using the interface in the
+     * TrilinosWrappers::MPI::Vector class.
      *
      * In case of a localized Vector, this function will only work when
      * running on one processor, since the matrix object is inherently
@@ -1526,20 +1524,18 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
-     * as deal.II's own vector classes Vector<double> and
-     * LinearAlgebra::distributed::Vector<double>.
+     * namely TrilinosWrappers::MPI::Vector as well as deal.II's own vector
+     * classes Vector<double> and LinearAlgebra::distributed::Vector<double>.
      *
      * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
      * have to be distributed vectors generated using the same Map as was used
      * for the matrix rows and columns in case you work on a distributed
      * memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class.
+     * TrilinosWrappers::MPI::Vector class.
      *
-     * In case of a localized Vector (i.e., TrilinosWrappers::VectorBase or
-     * Vector<double>), this function will only work when running on one
-     * processor, since the matrix object is inherently distributed.
-     * Otherwise, and exception will be thrown.
+     * In case of a localized Vector, this function will only work when
+     * running on one processor, since the matrix object is inherently
+     * distributed. Otherwise, and exception will be thrown.
      *
      */
     template<typename VectorType>
@@ -1554,20 +1550,18 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
-     * as deal.II's own vector classes Vector<double> and
-     * LinearAlgebra::distributed::Vector<double>.
+     * namely TrilinosWrappers::MPI::Vector as well as deal.II's own vector
+     * classes Vector<double> and LinearAlgebra::distributed::Vector<double>.
      *
      * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
      * have to be distributed vectors generated using the same Map as was used
      * for the matrix rows and columns in case you work on a distributed
      * memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class.
+     * TrilinosWrappers::MPI::Vector class.
      *
-     * In case of a localized Vector (i.e., TrilinosWrappers::VectorBase or
-     * Vector<double>), this function will only work when running on one
-     * processor, since the matrix object is inherently distributed.
-     * Otherwise, and exception will be thrown.
+     * In case of a localized Vector, this function will only work when
+     * running on one processor, since the matrix object is inherently
+     * distributed. Otherwise, and exception will be thrown.
      */
     template <typename VectorType>
     void Tvmult_add (VectorType       &dst,
@@ -1587,17 +1581,17 @@ namespace TrilinosWrappers
      * the Trilinos wrapper class) since Trilinos doesn't support this
      * operation and needs a temporary vector.
      *
-     * Note that both vectors have to be distributed vectors generated using
-     * the same Map as was used for the matrix in case you work on a
-     * distributed memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class (or one of the two derived classes
-     * Vector and MPI::Vector).
+     * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
+     * have to be distributed vectors generated using the same Map as was used
+     * for the matrix rows and columns in case you work on a distributed
+     * memory architecture, using the interface in the
+     * TrilinosWrappers::MPI::Vector class.
      *
      * In case of a localized Vector, this function will only work when
      * running on one processor, since the matrix object is inherently
      * distributed. Otherwise, and exception will be thrown.
      */
-    TrilinosScalar matrix_norm_square (const VectorBase &v) const;
+    TrilinosScalar matrix_norm_square (const MPI::Vector &v) const;
 
     /**
      * Compute the matrix scalar product $\left(u,Mv\right)$.
@@ -1607,18 +1601,18 @@ namespace TrilinosWrappers
      * the Trilinos wrapper class) since Trilinos doesn't support this
      * operation and needs a temporary vector.
      *
-     * Note that both vectors have to be distributed vectors generated using
-     * the same Map as was used for the matrix in case you work on a
-     * distributed memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class (or one of the two derived classes
-     * Vector and MPI::Vector).
+     * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
+     * have to be distributed vectors generated using the same Map as was used
+     * for the matrix rows and columns in case you work on a distributed
+     * memory architecture, using the interface in the
+     * TrilinosWrappers::MPI::Vector class.
      *
      * In case of a localized Vector, this function will only work when
      * running on one processor, since the matrix object is inherently
      * distributed. Otherwise, and exception will be thrown.
      */
-    TrilinosScalar matrix_scalar_product (const VectorBase &u,
-                                          const VectorBase &v) const;
+    TrilinosScalar matrix_scalar_product (const MPI::Vector &u,
+                                          const MPI::Vector &v) const;
 
     /**
      * Compute the residual of an equation <i>Mx=b</i>, where the residual is
@@ -1627,19 +1621,19 @@ namespace TrilinosWrappers
      *
      * Source <i>x</i> and destination <i>dst</i> must not be the same vector.
      *
-     * Note that both vectors have to be distributed vectors generated using
-     * the same Map as was used for the matrix in case you work on a
-     * distributed memory architecture, using the interface in the
-     * TrilinosWrappers::VectorBase class (or one of the two derived classes
-     * Vector and MPI::Vector).
+     * When using a vector of type TrilinosWrappers::MPI::Vector, both vectors
+     * have to be distributed vectors generated using the same Map as was used
+     * for the matrix rows and columns in case you work on a distributed
+     * memory architecture, using the interface in the
+     * TrilinosWrappers::MPI::Vector class.
      *
      * In case of a localized Vector, this function will only work when
      * running on one processor, since the matrix object is inherently
      * distributed. Otherwise, and exception will be thrown.
      */
-    TrilinosScalar residual (VectorBase       &dst,
-                             const VectorBase &x,
-                             const VectorBase &b) const;
+    TrilinosScalar residual (MPI::Vector       &dst,
+                             const MPI::Vector &x,
+                             const MPI::Vector &b) const;
 
     /**
      * Perform the matrix-matrix multiplication <tt>C = A * B</tt>, or, if an
@@ -1657,7 +1651,7 @@ namespace TrilinosWrappers
      */
     void mmult (SparseMatrix       &C,
                 const SparseMatrix &B,
-                const VectorBase   &V = VectorBase()) const;
+                const MPI::Vector  &V = MPI::Vector()) const;
 
 
     /**
@@ -1678,7 +1672,7 @@ namespace TrilinosWrappers
      */
     void Tmmult (SparseMatrix       &C,
                  const SparseMatrix &B,
-                 const VectorBase   &V = VectorBase()) const;
+                 const MPI::Vector  &V = MPI::Vector()) const;
 
 //@}
     /**
@@ -2988,8 +2982,7 @@ namespace TrilinosWrappers
     if (value == 0)
       {
         // we have to check after Insert/Add in any case to be consistent
-        // with the MPI communication model (see the comments in the
-        // documentation of TrilinosWrappers::VectorBase), but we can save some
+        // with the MPI communication model, but we can save some
         // work if the addend is zero. However, these actions are done in case
         // we pass on to the other function.
 
index 51d9fab6fccc1a29af223460372e9af8430d85bd..99a61346ea1e183d650b0818bc8be18097d9696e 100644 (file)
@@ -56,7 +56,6 @@ namespace TrilinosWrappers
   {
     class Vector;
   }
-  class VectorBase;
 }
 #endif
 
@@ -230,13 +229,6 @@ public:
    * result in a copy of the vector on all processors.
    */
   explicit Vector (const TrilinosWrappers::MPI::Vector &v);
-
-  /**
-   * Another copy constructor: copy the values from a localized Trilinos
-   * wrapper vector. This copy constructor is only available if Trilinos was
-   * detected during configuration time.
-   */
-  explicit Vector (const TrilinosWrappers::VectorBase &v);
 #endif
 
   /**
@@ -401,14 +393,6 @@ public:
    */
   Vector<Number> &
   operator= (const TrilinosWrappers::MPI::Vector &v);
-
-  /**
-   * Another copy operator: copy the values from a sequential Trilinos wrapper
-   * vector class. This operator is only available if Trilinos was detected
-   * during configuration time.
-   */
-  Vector<Number> &
-  operator= (const TrilinosWrappers::VectorBase &v);
 #endif
 
   /**
index a5eec8ad6ffd883b4d843c08cf772d09ab6d1cb5..a67a8b133e51ecffe708ab95175a3c1adb807ee3 100644 (file)
@@ -198,31 +198,6 @@ Vector<Number>::Vector (const TrilinosWrappers::MPI::Vector &v)
     }
 }
 
-
-
-template <typename Number>
-Vector<Number>::Vector (const TrilinosWrappers::VectorBase &v)
-  :
-  Subscriptor(),
-  vec_size(v.size()),
-  max_vec_size(v.size()),
-  val(nullptr)
-{
-  if (vec_size != 0)
-    {
-      allocate();
-
-      // get a representation of the vector
-      // and copy it
-      TrilinosScalar **start_ptr;
-
-      int ierr = v.trilinos_vector().ExtractView (&start_ptr);
-      AssertThrow (ierr == 0, ExcTrilinosError(ierr));
-
-      std::copy (start_ptr[0], start_ptr[0]+vec_size, begin());
-    }
-}
-
 #endif
 
 
@@ -904,16 +879,7 @@ Vector<Number>::operator= (const TrilinosWrappers::MPI::Vector &v)
   TrilinosWrappers::MPI::Vector localized_vector;
   localized_vector.reinit(complete_index_set(v.size()));
   localized_vector.reinit(v, false, true);
-  *this = static_cast<TrilinosWrappers::VectorBase>(localized_vector);
-  return *this;
-}
-
-
 
-template <typename Number>
-Vector<Number> &
-Vector<Number>::operator= (const TrilinosWrappers::VectorBase &v)
-{
   if (v.size() != vec_size)
     reinit (v.size(), true);
   if (vec_size != 0)
index cc8b16401701c32f1169216747e92b13fdb32cd1..ec76e5322be8456ccaf83bba6a5d3aaca6aecf8b 100644 (file)
@@ -106,17 +106,6 @@ namespace internal
   };
 #endif
 
-  template <>
-  struct MatrixSelector<dealii::TrilinosWrappers::VectorBase>
-  {
-    typedef ::dealii::TrilinosWrappers::SparsityPattern Sparsity;
-    typedef ::dealii::TrilinosWrappers::SparseMatrix Matrix;
-
-    template <typename SparsityPatternType, typename DoFHandlerType>
-    static void reinit(Matrix &, Sparsity &, int /*level*/, const SparsityPatternType &, DoFHandlerType &)
-    {
-    }
-  };
 #else
   // ! DEAL_II_WITH_TRILINOS
   template <typename Number>
index 7fdcde38f529ebc64770662c33018410fc75e1a4..7d9d3b87737a3da7d45a41b465171a58bfe4753e 100644 (file)
@@ -73,7 +73,6 @@ namespace TrilinosWrappers
 {
   class SparseMatrix;
   class BlockSparseMatrix;
-  class VectorBase;
   namespace MPI
   {
     class Vector;
@@ -850,16 +849,6 @@ namespace MatrixTools
    * argument is actually not implemented; that argument has <code>true</code>
    * as its default value to stay consistent with the other functions of same
    * name in this namespace.)
-   */
-  void
-  apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar> &boundary_values,
-                         TrilinosWrappers::SparseMatrix  &matrix,
-                         TrilinosWrappers::VectorBase        &solution,
-                         TrilinosWrappers::VectorBase        &right_hand_side,
-                         const bool             eliminate_columns = true);
-
-  /**
-   * Same as above, but for parallel matrices and vectors.
    *
    * @note If the matrix is stored in parallel across multiple processors
    * using MPI, this function only touches rows that are locally stored and
index 4001446e94cb647ceed0fce1426415e278cfbef7..35094f795203012edae87330fbcc2a2e0402a8a9 100644 (file)
@@ -37,8 +37,6 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
 #endif
 
 #ifdef DEAL_II_WITH_TRILINOS
-    template class SolutionTransfer<deal_II_dimension, TrilinosWrappers::VectorBase, DoFHandler<deal_II_dimension,deal_II_space_dimension> >;
-
     template class SolutionTransfer<deal_II_dimension, TrilinosWrappers::MPI::Vector, DoFHandler<deal_II_dimension,deal_II_space_dimension> >;
 
     template class SolutionTransfer<deal_II_dimension, TrilinosWrappers::MPI::BlockVector, DoFHandler<deal_II_dimension,deal_II_space_dimension> >;
index 266a8055c3b81c85c740594a4197c13ba449baf2..32eea51849540d13bb8dd15c5f5d0c86ed0f62a4 100644 (file)
@@ -15,7 +15,7 @@
 
 
 
-for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; VEC : REAL_SERIAL_VECTORS)
+for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; VEC : SERIAL_VECTORS)
 {
     namespace FETools
     \{
index 35e58a5a9c5e9f52f9233d03d4e53be61b501d4e..da97212ba475bdde370efa20a79de4df31e4c840 100644 (file)
@@ -63,7 +63,7 @@ namespace
 #ifdef DEAL_II_WITH_TRILINOS
     inline
     TrilinosScalar
-    max_element (const TrilinosWrappers::VectorBase &criteria)
+    max_element (const TrilinosWrappers::MPI::Vector &criteria)
     {
       TrilinosScalar m = 0;
       criteria.trilinos_vector().MaxValue(&m);
@@ -73,7 +73,7 @@ namespace
 
     inline
     TrilinosScalar
-    min_element (const TrilinosWrappers::VectorBase &criteria)
+    min_element (const TrilinosWrappers::MPI::Vector &criteria)
     {
       TrilinosScalar m = 0;
       criteria.trilinos_vector().MinValue(&m);
index 95ae1d629108ec31063600473894328f71dfaf98..0bc3e713c3c30a26b07664c520d48f62b5da56c4 100644 (file)
@@ -1366,7 +1366,6 @@ BLOCK_MATRIX_VECTOR_FUNCTIONS(PETScWrappers::MPI::BlockSparseMatrix ,PETScWrappe
 #ifdef DEAL_II_WITH_TRILINOS
 MATRIX_FUNCTIONS(TrilinosWrappers::SparseMatrix);
 BLOCK_MATRIX_FUNCTIONS(TrilinosWrappers::BlockSparseMatrix);
-MATRIX_VECTOR_FUNCTIONS(TrilinosWrappers::SparseMatrix, TrilinosWrappers::VectorBase);
 MATRIX_VECTOR_FUNCTIONS(TrilinosWrappers::SparseMatrix, TrilinosWrappers::MPI::Vector);
 BLOCK_MATRIX_VECTOR_FUNCTIONS(TrilinosWrappers::BlockSparseMatrix, TrilinosWrappers::MPI::BlockVector);
 #endif
index 9c360a8b48fa4c60cb972a2bea0b585584d7cb49..0ddfe1813684552e3c0c6ab69e7d1fb8af0ee79a 100644 (file)
@@ -331,9 +331,9 @@ namespace TrilinosWrappers
 
 
   TrilinosScalar
-  BlockSparseMatrix::residual (VectorBase       &dst,
-                               const VectorBase &x,
-                               const VectorBase &b) const
+  BlockSparseMatrix::residual (MPI::Vector       &dst,
+                               const MPI::Vector &x,
+                               const MPI::Vector &b) const
   {
     vmult (dst, x);
     dst -= b;
index 9cb1c028bed71d645b8f584b19cd1719743661ad..297d6bbead609982391017dfd4e4da6ebb51b034 100644 (file)
@@ -79,8 +79,8 @@ namespace TrilinosWrappers
 
   void
   SolverBase::solve (const SparseMatrix     &A,
-                     VectorBase             &x,
-                     const VectorBase       &b,
+                     MPI::Vector            &x,
+                     const MPI::Vector      &b,
                      const PreconditionBase &preconditioner)
   {
     linear_problem.reset();
@@ -101,8 +101,8 @@ namespace TrilinosWrappers
   //       can be used by the inverse_operator of LinearOperator
   void
   SolverBase::solve (const Epetra_Operator  &A,
-                     VectorBase             &x,
-                     const VectorBase       &b,
+                     MPI::Vector            &x,
+                     const MPI::Vector      &b,
                      const PreconditionBase &preconditioner)
   {
     linear_problem.reset();
@@ -123,8 +123,8 @@ namespace TrilinosWrappers
   //       can be used by the inverse_operator of LinearOperator
   void
   SolverBase::solve (const Epetra_Operator  &A,
-                     VectorBase             &x,
-                     const VectorBase       &b,
+                     MPI::Vector            &x,
+                     const MPI::Vector      &b,
                      const Epetra_Operator  &preconditioner)
   {
     linear_problem.reset();
@@ -780,7 +780,7 @@ namespace TrilinosWrappers
   }
 
 
-  void SolverDirect::solve (VectorBase &x, const VectorBase &b)
+  void SolverDirect::solve (MPI::Vector &x, const MPI::Vector &b)
   {
     // Assign the empty LHS vector to the Epetra_LinearProblem object
     linear_problem->SetLHS(&x.trilinos_vector());
@@ -862,8 +862,8 @@ namespace TrilinosWrappers
 
   void
   SolverDirect::solve (const SparseMatrix     &A,
-                       VectorBase             &x,
-                       const VectorBase       &b)
+                       MPI::Vector            &x,
+                       const MPI::Vector      &b)
   {
     // We need an Epetra_LinearProblem object to let the Amesos solver know
     // about the matrix and vectors.
index 541aeb2125da50f6bb42f8537c038cd6d3447ba3..00fc9dd74c55fa9419644db5345719a796088a20 100644 (file)
@@ -1990,19 +1990,11 @@ namespace TrilinosWrappers
     Assert (&src != &dst, ExcSourceEqualsDestination());
 
     // Reinit a temporary vector with fast argument set, which does not
-    // overwrite the content (to save time). However, the
-    // TrilinosWrappers::VectorBase classes do not support this, so create a
-    // deal.II local vector that has this fast setting. It will be accepted in
-    // vmult because it only checks the local size.
-    dealii::Vector<TrilinosScalar> temp_vector;
-    temp_vector.reinit(internal::end(dst)-internal::begin(dst), true);
-    dealii::VectorView<TrilinosScalar> src_view(internal::end(src)-internal::begin(src),
-                                                internal::begin(src));
-    dealii::VectorView<TrilinosScalar> dst_view(internal::end(dst)-internal::begin(dst),
-                                                internal::begin(dst));
-    vmult (temp_vector, static_cast<const dealii::Vector<TrilinosScalar>&>(src_view));
-    if (dst_view.size() > 0)
-      dst_view += temp_vector;
+    // overwrite the content (to save time).
+    VectorType tmp_vector;
+    tmp_vector.reinit(dst, true);
+    vmult (tmp_vector, src);
+    dst += tmp_vector;
   }
 
 
@@ -2015,30 +2007,22 @@ namespace TrilinosWrappers
     Assert (&src != &dst, ExcSourceEqualsDestination());
 
     // Reinit a temporary vector with fast argument set, which does not
-    // overwrite the content (to save time). However, the
-    // TrilinosWrappers::VectorBase classes do not support this, so create a
-    // deal.II local vector that has this fast setting. It will be accepted in
-    // vmult because it only checks the local size.
-    dealii::Vector<TrilinosScalar> temp_vector;
-    temp_vector.reinit(internal::end(dst)-internal::begin(dst), true);
-    dealii::VectorView<TrilinosScalar> src_view(internal::end(src)-internal::begin(src),
-                                                internal::begin(src));
-    dealii::VectorView<TrilinosScalar> dst_view(internal::end(dst)-internal::begin(dst),
-                                                internal::begin(dst));
-    Tvmult (temp_vector, static_cast<const dealii::Vector<TrilinosScalar>&>(src_view));
-    if (dst_view.size() > 0)
-      dst_view += temp_vector;
+    // overwrite the content (to save time).
+    VectorType tmp_vector;
+    tmp_vector.reinit(dst, true);
+    Tvmult (tmp_vector, src);
+    dst += tmp_vector;
   }
 
 
 
   TrilinosScalar
-  SparseMatrix::matrix_norm_square (const VectorBase &v) const
+  SparseMatrix::matrix_norm_square (const MPI::Vector &v) const
   {
     Assert (matrix->RowMap().SameAs(matrix->DomainMap()),
             ExcNotQuadratic());
 
-    VectorBase temp_vector;
+    MPI::Vector temp_vector;
     temp_vector.reinit(v, true);
 
     vmult (temp_vector, v);
@@ -2048,13 +2032,13 @@ namespace TrilinosWrappers
 
 
   TrilinosScalar
-  SparseMatrix::matrix_scalar_product (const VectorBase &u,
-                                       const VectorBase &v) const
+  SparseMatrix::matrix_scalar_product (const MPI::Vector &u,
+                                       const MPI::Vector &v) const
   {
     Assert (matrix->RowMap().SameAs(matrix->DomainMap()),
             ExcNotQuadratic());
 
-    VectorBase temp_vector;
+    MPI::Vector temp_vector;
     temp_vector.reinit(v, true);
 
     vmult (temp_vector, v);
@@ -2064,9 +2048,9 @@ namespace TrilinosWrappers
 
 
   TrilinosScalar
-  SparseMatrix::residual (VectorBase       &dst,
-                          const VectorBase &x,
-                          const VectorBase &b) const
+  SparseMatrix::residual (MPI::Vector       &dst,
+                          const MPI::Vector &x,
+                          const MPI::Vector &b) const
   {
     vmult (dst, x);
     dst -= b;
@@ -2084,7 +2068,7 @@ namespace TrilinosWrappers
     void perform_mmult (const SparseMatrix &inputleft,
                         const SparseMatrix &inputright,
                         SparseMatrix       &result,
-                        const VectorBase   &V,
+                        const MPI::Vector  &V,
                         const bool          transpose_left)
     {
 #ifdef DEAL_II_WITH_64BIT_INDICES
@@ -2298,7 +2282,7 @@ namespace TrilinosWrappers
   void
   SparseMatrix::mmult (SparseMatrix       &C,
                        const SparseMatrix &B,
-                       const VectorBase   &V) const
+                       const MPI::Vector  &V) const
   {
 #ifdef DEAL_II_WITH_64BIT_INDICES
     Assert(false,ExcNotImplemented())
@@ -2311,7 +2295,7 @@ namespace TrilinosWrappers
   void
   SparseMatrix::Tmmult (SparseMatrix       &C,
                         const SparseMatrix &B,
-                        const VectorBase   &V) const
+                        const MPI::Vector  &V) const
   {
 #ifdef DEAL_II_WITH_64BIT_INDICES
     Assert(false,ExcNotImplemented())
@@ -3357,6 +3341,7 @@ namespace TrilinosWrappers
                         const dealii::SparsityPattern &,
                         const MPI_Comm &,
                         const bool);
+
   template void
   SparseMatrix::reinit (const IndexSet &,
                         const IndexSet &,
@@ -3365,9 +3350,6 @@ namespace TrilinosWrappers
                         const bool);
 
   template void
-  SparseMatrix::vmult (VectorBase &,
-                       const VectorBase &) const;
-  template void
   SparseMatrix::vmult (MPI::Vector &,
                        const MPI::Vector &) const;
   template void
@@ -3382,9 +3364,6 @@ namespace TrilinosWrappers
                        const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
 #endif
   template void
-  SparseMatrix::Tvmult (VectorBase &,
-                        const VectorBase &) const;
-  template void
   SparseMatrix::Tvmult (MPI::Vector &,
                         const MPI::Vector &) const;
   template void
@@ -3399,9 +3378,6 @@ namespace TrilinosWrappers
                         const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
 #endif
   template void
-  SparseMatrix::vmult_add (VectorBase &,
-                           const VectorBase &) const;
-  template void
   SparseMatrix::vmult_add (MPI::Vector &,
                            const MPI::Vector &) const;
   template void
@@ -3416,9 +3392,6 @@ namespace TrilinosWrappers
                            const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
 #endif
   template void
-  SparseMatrix::Tvmult_add (VectorBase &,
-                            const VectorBase &) const;
-  template void
   SparseMatrix::Tvmult_add (MPI::Vector &,
                             const MPI::Vector &) const;
   template void
index 71cb04173a3ad71d801fcad0324dcdc13cc67cfc..dcea326a4213ff1a5c40fead3bd1fa92351dc1fc 100644 (file)
@@ -418,22 +418,6 @@ namespace MatrixTools
 
 
 
-
-  void
-  apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar> &boundary_values,
-                         TrilinosWrappers::SparseMatrix   &matrix,
-                         TrilinosWrappers::VectorBase         &solution,
-                         TrilinosWrappers::VectorBase         &right_hand_side,
-                         const bool        eliminate_columns)
-  {
-    // simply redirect to the generic function
-    // used for both trilinos matrix types
-    internal::TrilinosWrappers::apply_boundary_values (boundary_values, matrix, solution,
-                                                       right_hand_side, eliminate_columns);
-  }
-
-
-
   void
   apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar> &boundary_values,
                          TrilinosWrappers::SparseMatrix   &matrix,
index d507b506f9ef1f0acc41e28328bca0e863445c1f..5b7574d0918127575bb6505d884a9bcb928de62a 100644 (file)
@@ -61,7 +61,7 @@ void test ()
     {
       norm = v_tmp.linfty_norm();
     }
-  catch (TrilinosWrappers::VectorBase::ExcTrilinosError e)
+  catch (TrilinosWrappers::MPI::Vector::ExcTrilinosError e)
     {
       deallog << e.get_exc_name() << std::endl;
       exc = true;
index 053de4453d45e1bc0bda0bf8ab6869f5e673a816..04b9af1aa18a58ce5463f3f8cdf338409d757457 100644 (file)
@@ -17,9 +17,8 @@
 #include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 
-// Check that the base class vector and also the block vector class support
-// update_ghost_values. This method doesn't do anything but is needed for
-// genericity.
+// Check that the block vector class support update_ghost_values. This method
+// doesn't do anything but is needed for genericity.
 
 int main(int argc, char **argv)
 {
@@ -27,8 +26,6 @@ int main(int argc, char **argv)
   Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv, 1);
 
   initlog();
-  TrilinosWrappers::VectorBase v;
-  v.update_ghost_values();
   TrilinosWrappers::MPI::BlockVector bv;
   bv.update_ghost_values();
   deallog << "OK" << std::endl;
index cf744d88a0a70e418384ec07ce9ef8c43f733ef4..e8aff5d59f960df244245c204609261c9530b58c 100644 (file)
@@ -15,8 +15,8 @@
 
 
 
-// check TrilinosWrappers::MPI::Vector::operator==(TrilinosWrappers::Vector) for vectors that are not
-// equal
+// check TrilinosWrappers::MPI::Vector::operator==(TrilinosWrappers::MPI::Vector)
+// for vectors that are not equal
 
 #include "../tests.h"
 #include <deal.II/base/utilities.h>
index 116fa958ed61e959dad7487f8d75ecc8e91b3419..67edc78b52d1eb95c3428f8b6cb899407b1e5ce7 100644 (file)
@@ -15,8 +15,8 @@
 
 
 
-// check TrilinosWrappers::MPI::Vector::operator==(TrilinosWrappers::Vector) for vectors that are
-// equal
+// check TrilinosWrappers::MPI::Vector::operator==(TrilinosWrappers::MPI::Vector)
+// for vectors that are equal
 
 #include "../tests.h"
 #include <deal.II/base/utilities.h>
index 8762ea8133b32de7bfe1fa3302b1b079d94f7141..93f216d382508c4a49023ba48935af821ec3022c 100644 (file)
@@ -15,8 +15,8 @@
 
 
 
-// check TrilinosWrappers::MPI::Vector::operator!=(TrilinosWrappers::Vector) for vectors that are not
-// equal
+// check TrilinosWrappers::MPI::Vector::operator!=(TrilinosWrappers::MPI::Vector)
+// for vectors that are not equal
 
 #include "../tests.h"
 #include <deal.II/base/utilities.h>
index 7d6145e9732a6e8852de82d75d8397ff448128fe..6206bb5d911d04b7e91c7c164874176f7a77e072 100644 (file)
@@ -15,8 +15,8 @@
 
 
 
-// check TrilinosWrappers::MPI::Vector::operator!=(TrilinosWrappers::Vector) for vectors that are
-// equal
+// check TrilinosWrappers::MPI::Vector::operator!=(TrilinosWrappers::MPI::Vector)
+// for vectors that are equal
 
 #include "../tests.h"
 #include <deal.II/base/utilities.h>

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.