]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Remove deprecated serial Trilinos vectors
authorDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Mon, 8 May 2017 21:28:53 +0000 (23:28 +0200)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Thu, 1 Jun 2017 17:11:43 +0000 (19:11 +0200)
60 files changed:
cmake/config/template-arguments.in
cmake/configure/configure_2_trilinos.cmake
include/deal.II/fe/fe_tools_extrapolate.templates.h
include/deal.II/fe/fe_tools_interpolate.templates.h
include/deal.II/lac/block_vector.h
include/deal.II/lac/block_vector.templates.h
include/deal.II/lac/petsc_matrix_base.h
include/deal.II/lac/trilinos_block_sparse_matrix.h
include/deal.II/lac/trilinos_block_vector.h [deleted file]
include/deal.II/lac/trilinos_parallel_block_vector.h
include/deal.II/lac/trilinos_sparse_matrix.h
include/deal.II/lac/trilinos_vector.h
include/deal.II/lac/trilinos_vector_base.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/error_estimator.templates.h
include/deal.II/numerics/matrix_creator.templates.h
include/deal.II/numerics/matrix_tools.h
include/deal.II/numerics/vector_tools.templates.h
source/algorithms/operator.cc
source/base/mpi.cc
source/base/time_stepping.cc
source/base/time_stepping.inst.in
source/base/utilities.cc
source/distributed/grid_refinement.cc
source/distributed/solution_transfer.cc
source/distributed/solution_transfer.inst.in
source/dofs/dof_accessor_get.cc
source/dofs/dof_accessor_set.cc
source/fe/fe_tools_extrapolate.inst.in
source/fe/fe_values.cc
source/fe/mapping_fe_field.cc
source/fe/mapping_q1_eulerian.cc
source/fe/mapping_q_eulerian.cc
source/grid/grid_refinement.cc
source/lac/block_matrix_array.cc
source/lac/constraint_matrix.cc
source/lac/constraint_matrix.inst.in
source/lac/solver.cc
source/lac/trilinos_block_sparse_matrix.cc
source/lac/trilinos_block_vector.cc
source/lac/trilinos_sparse_matrix.cc
source/lac/trilinos_vector.cc
source/lac/vector_memory.cc
source/meshworker/mesh_worker_info.cc
source/meshworker/mesh_worker_vector_selector.cc
source/multigrid/mg_base.cc
source/multigrid/mg_level_global_transfer.cc
source/multigrid/mg_transfer_prebuilt.cc
source/multigrid/multigrid.cc
source/numerics/data_out_dof_data.cc
source/numerics/derivative_approximation.cc
source/numerics/dof_output_operator.cc
source/numerics/error_estimator_1d.cc
source/numerics/fe_field_function.cc
source/numerics/matrix_tools.cc
source/numerics/matrix_tools_once.cc
source/numerics/point_value_history.cc
source/numerics/solution_transfer.cc

index 289b6b3237b9e798a43ac4250ef54c262bbf8367..2be554147caeb8bfd1e658b2fc5eb111696511cd 100644 (file)
@@ -49,7 +49,6 @@ SERIAL_VECTORS := { Vector<double>;
                     @DEAL_II_EXPAND_EPETRA_VECTOR@;
                     @DEAL_II_EXPAND_PETSC_MPI_VECTOR@;
 
-                    @DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@;
                     @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
                     @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@;
                   }
@@ -96,11 +95,6 @@ REAL_NONBLOCK_VECTORS := { Vector<double>;
                            @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;
                          }
 
-// wrappers for non-MPI vectors (PETSc/Trilinos)
-EXTERNAL_SEQUENTIAL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_VECTOR@;
-                                 @DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@;
-                               }
-
 // wrappers for MPI vectors (PETSc/Trilinos)
 EXTERNAL_PARALLEL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
                                @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
index 5665d907f2a2aa56d5e03bbf4d40741e076f916b..6350174e357e7a33690e37249dc1ee228717c11d 100644 (file)
@@ -188,12 +188,12 @@ ENDMACRO()
 
 
 MACRO(FEATURE_TRILINOS_CONFIGURE_EXTERNAL)
-  SET(DEAL_II_EXPAND_TRILINOS_VECTOR "TrilinosWrappers::Vector")
-  SET(DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR "TrilinosWrappers::BlockVector")
+  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")
   SET(DEAL_II_EXPAND_TRILINOS_MPI_VECTOR "TrilinosWrappers::MPI::Vector")
+
   IF (TRILINOS_WITH_MPI)
     SET(DEAL_II_EXPAND_EPETRA_VECTOR "LinearAlgebra::EpetraWrappers::Vector")
   ENDIF()
index d1011b9b4d69f93bbab927635df0a7f4c889b624..fde42bf2f2cc70a886de9b1bc74f727778dba7b9 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <queue>
 
index 12fe83a300d8796fd90a7c93db125beb47cce868..14459a046cacf71c8da9aeb46f9f97dac3a64f7f 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/tria_iterator.h>
index 84882804def1ba750f12363c2857fe6945aa41b6..0b29df377fa83bbf828e0277aac63c02491409a9 100644 (file)
@@ -32,7 +32,10 @@ DEAL_II_NAMESPACE_OPEN
 #ifdef DEAL_II_WITH_TRILINOS
 namespace TrilinosWrappers
 {
-  class BlockVector;
+  namespace MPI
+  {
+    class BlockVector;
+  }
 }
 #endif
 
@@ -136,7 +139,7 @@ public:
    * A copy constructor taking a (parallel) Trilinos block vector and copying
    * it into the deal.II own format.
    */
-  BlockVector (const TrilinosWrappers::BlockVector &v);
+  BlockVector (const TrilinosWrappers::MPI::BlockVector &v);
 
 #endif
   /**
@@ -222,7 +225,7 @@ public:
    * vector.
    */
   BlockVector<Number> &
-  operator= (const TrilinosWrappers::BlockVector &V);
+  operator= (const TrilinosWrappers::MPI::BlockVector &V);
 #endif
 
   /**
index b0c941e24242bd0ce484481c767dcdbaafed8e12..3be23f0d31ee12365af0a27aa9f5fd6085fa855f 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <deal.II/base/config.h>
 #include <deal.II/lac/block_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <cmath>
 #include <algorithm>
 
@@ -77,7 +77,7 @@ BlockVector<Number>::BlockVector (const BlockVector<OtherNumber> &v)
 #ifdef DEAL_II_WITH_TRILINOS
 
 template <typename Number>
-BlockVector<Number>::BlockVector (const TrilinosWrappers::BlockVector &v)
+BlockVector<Number>::BlockVector (const TrilinosWrappers::MPI::BlockVector &v)
 {
   this->block_indices = v.get_block_indices();
   this->components.resize(this->n_blocks());
@@ -151,7 +151,7 @@ BlockVector<Number>::~BlockVector ()
 template <typename Number>
 inline
 BlockVector<Number> &
-BlockVector<Number>::operator= (const TrilinosWrappers::BlockVector &v)
+BlockVector<Number>::operator= (const TrilinosWrappers::MPI::BlockVector &v)
 {
   BaseClass::operator= (v);
   return *this;
index 55f5214a6884bdd327a5d69bc8693b3a5a064eac..cb013d5fa193f9528fc9f5d001a5ab35a1e4e589 100644 (file)
@@ -1272,7 +1272,7 @@ namespace PETScWrappers
       {
         // 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::Vector), but we can save
+        // the documentation of TrilinosWrappers::VectorBase), 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 4c0331bb2c0f945484e474e4e8633ba860e8b20a..f692e8dad6cc4ce22db4e83b35419b3c9f8f23ba 100644 (file)
@@ -25,7 +25,7 @@
 #  include <deal.II/base/template_constraints.h>
 #  include <deal.II/lac/block_matrix_base.h>
 #  include <deal.II/lac/trilinos_sparse_matrix.h>
-#  include <deal.II/lac/trilinos_block_vector.h>
+#  include <deal.II/lac/trilinos_parallel_block_vector.h>
 #  include <deal.II/lac/full_matrix.h>
 #  include <deal.II/lac/exceptions.h>
 
@@ -292,9 +292,9 @@ 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::MPI::BlockVector class.
+     * the same Map as was used for the matrix.
+     *
+     * This function only applicable if the matrix only has one block row.
      */
     TrilinosScalar residual (MPI::BlockVector       &dst,
                              const MPI::BlockVector &x,
@@ -305,25 +305,7 @@ namespace TrilinosWrappers
      * defined to be <i>r=b-Mx</i>. Write the residual into @p dst. The
      * <i>l<sub>2</sub></i> norm of the residual vector is returned.
      *
-     * 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::BlockVector class. Since the block matrix is in
-     * general distributed among processes, this function only works when
-     * running the program on one processor.
-     */
-    TrilinosScalar residual (BlockVector       &dst,
-                             const BlockVector &x,
-                             const BlockVector &b) const;
-
-    /**
-     * Compute the residual of an equation <i>Mx=b</i>, where the residual is
-     * defined to be <i>r=b-Mx</i>. Write the residual into @p dst. The
-     * <i>l<sub>2</sub></i> norm of the residual vector is returned. Just like
-     * the previous function, but only applicable if the matrix only has one
-     * block row.
+     * This function is only applicable if the matrix only has one block row.
      */
     TrilinosScalar residual (MPI::BlockVector       &dst,
                              const MPI::Vector      &x,
@@ -332,20 +314,9 @@ namespace TrilinosWrappers
     /**
      * Compute the residual of an equation <i>Mx=b</i>, where the residual is
      * defined to be <i>r=b-Mx</i>. Write the residual into @p dst. The
-     * <i>l<sub>2</sub></i> norm of the residual vector is returned. Just like
-     * the previous function, but only applicable if the matrix only has one
-     * block row.
-     */
-    TrilinosScalar residual (BlockVector       &dst,
-                             const Vector      &x,
-                             const BlockVector &b) const;
-
-    /**
-     * Compute the residual of an equation <i>Mx=b</i>, where the residual is
-     * defined to be <i>r=b-Mx</i>. Write the residual into @p dst. The
-     * <i>l<sub>2</sub></i> norm of the residual vector is returned. Just like
-     * the previous function, but only applicable if the matrix only has one
-     * block column.
+     * <i>l<sub>2</sub></i> norm of the residual vector is returned.
+     *
+     * This function is only applicable if the matrix only has one block column.
      */
     TrilinosScalar residual (MPI::Vector            &dst,
                              const MPI::BlockVector &x,
@@ -354,20 +325,9 @@ namespace TrilinosWrappers
     /**
      * Compute the residual of an equation <i>Mx=b</i>, where the residual is
      * defined to be <i>r=b-Mx</i>. Write the residual into @p dst. The
-     * <i>l<sub>2</sub></i> norm of the residual vector is returned. Just like
-     * the previous function, but only applicable if the matrix only has one
-     * block column.
-     */
-    TrilinosScalar residual (Vector            &dst,
-                             const BlockVector &x,
-                             const Vector      &b) const;
-
-    /**
-     * Compute the residual of an equation <i>Mx=b</i>, where the residual is
-     * defined to be <i>r=b-Mx</i>. Write the residual into @p dst. The
-     * <i>l<sub>2</sub></i> norm of the residual vector is returned. Just like
-     * the previous function, but only applicable if the matrix only has one
-     * block.
+     * <i>l<sub>2</sub></i> norm of the residual vector is returned.
+     *
+     * This function is only applicable if the matrix only has one block.
      */
     TrilinosScalar residual (VectorBase       &dst,
                              const VectorBase &x,
diff --git a/include/deal.II/lac/trilinos_block_vector.h b/include/deal.II/lac/trilinos_block_vector.h
deleted file mode 100644 (file)
index b10402a..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-// ---------------------------------------------------------------------
-//
-// Copyright (C) 2008 - 2017 by the deal.II authors
-//
-// This file is part of the deal.II library.
-//
-// The deal.II library is free software; you can use it, redistribute
-// it, and/or modify it under the terms of the GNU Lesser General
-// Public License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-// The full text of the license can be found in the file LICENSE at
-// the top level of the deal.II distribution.
-//
-// ---------------------------------------------------------------------
-
-#ifndef dealii__trilinos_block_vector_h
-#define dealii__trilinos_block_vector_h
-
-
-#include <deal.II/base/config.h>
-
-#ifdef DEAL_II_WITH_TRILINOS
-
-#  include <deal.II/lac/trilinos_vector.h>
-#  include <deal.II/lac/trilinos_parallel_block_vector.h>
-#  include <deal.II/lac/block_indices.h>
-#  include <deal.II/lac/block_vector_base.h>
-#  include <deal.II/lac/exceptions.h>
-#  include <deal.II/lac/vector_type_traits.h>
-
-DEAL_II_NAMESPACE_OPEN
-
-// forward declaration
-template <typename Number> class BlockVector;
-
-/*! @addtogroup TrilinosWrappers
- *@{
- */
-
-namespace TrilinosWrappers
-{
-  // forward declaration
-  namespace MPI
-  {
-    class BlockVector;
-  }
-  class BlockVector;
-  class BlockSparseMatrix;
-
-
-  /**
-   * An implementation of block vectors based on the vector class implemented
-   * in TrilinosWrappers. While the base class provides for most of the
-   * interface, this class handles the actual allocation of vectors and
-   * provides functions that are specific to the underlying vector type.
-   *
-   * In contrast to the class MPI::BlockVector, this class is based on a
-   * localized version of the vectors, which means that the whole vector is
-   * stored on each processor. Note that matrix vector products with this
-   * block vector class do only work in case the program is run on only one
-   * processor, since the Trilinos matrices are inherently parallel.
-   *
-   * This class is deprecated, use TrilinosWrappers::MPI::BlockVector instead.
-   *
-   * @ingroup Vectors
-   * @ingroup TrilinosWrappers @see
-   * @ref GlossBlockLA "Block (linear algebra)"
-   * @author Martin Kronbichler, 2008
-   */
-  class BlockVector : public BlockVectorBase<Vector>
-  {
-  public:
-    /**
-     * Typedef the base class for simpler access to its own typedefs.
-     */
-    typedef BlockVectorBase<Vector> BaseClass;
-
-    /**
-     * Typedef the type of the underlying vector.
-     */
-    typedef BaseClass::BlockType  BlockType;
-
-    /**
-     * Import the typedefs from the base class.
-     */
-    typedef BaseClass::value_type      value_type;
-    typedef BaseClass::pointer         pointer;
-    typedef BaseClass::const_pointer   const_pointer;
-    typedef BaseClass::reference       reference;
-    typedef BaseClass::const_reference const_reference;
-    typedef BaseClass::size_type       size_type;
-    typedef BaseClass::iterator        iterator;
-    typedef BaseClass::const_iterator  const_iterator;
-
-    /**
-     * Default constructor. Generate an empty vector without any blocks.
-     */
-    BlockVector ();
-
-    /**
-     * Destructor. Clears memory
-     */
-    ~BlockVector ();
-
-    /**
-     * Copy operator: fill all components of the vector that are locally
-     * stored with the given scalar value.
-     */
-    BlockVector &
-    operator = (const value_type s);
-
-    /**
-     * Copy operator for a distributed Trilinos vector to a localized one.
-     */
-    BlockVector &
-    operator = (const MPI::BlockVector &V);
-
-    /**
-     * Copy operator for arguments of the same type.
-     */
-    BlockVector &
-    operator = (const BlockVector &V);
-
-    /**
-     * Another copy function. This one takes a deal.II block vector and copies
-     * it into a TrilinosWrappers block vector. Note that the number of blocks
-     * has to be the same in the vector as in the input vector. Use the
-     * reinit() command for resizing the BlockVector or for changing the
-     * internal structure of the block components.
-     *
-     * Since Trilinos only works on doubles, this function is limited to
-     * accept only one possible number type in the deal.II vector.
-     */
-    template <typename Number>
-    BlockVector &
-    operator = (const ::dealii::BlockVector<Number> &V);
-
-    /**
-     * Reinitialize the BlockVector to contain as many blocks as there are
-     * Epetra_Maps given in the input argument, according to the global size
-     * of the individual components described in the maps. Note that the
-     * resulting vector will be stored completely on each process. The
-     * Epetra_Map is useful when data exchange with a distributed vector based
-     * on the same Epetra_map is intended. In that case, the same communicator
-     * is used for data exchange.
-     *
-     * If <tt>omit_zeroing_entries==false</tt>, the vector is filled with
-     * zeros.
-     */
-    void reinit (const std::vector<Epetra_Map> &partitioning,
-                 const bool                     omit_zeroing_entries = false);
-
-    /**
-     * Reinitialize the BlockVector to contain as many blocks as there are
-     * index sets given in the input argument, according to the global size of
-     * the individual components described in the index set, and using a given
-     * MPI communicator. The MPI communicator is useful when data exchange
-     * with a distributed vector based on the same initialization is intended.
-     * In that case, the same communicator is used for data exchange.
-     *
-     * If <tt>omit_zeroing_entries==false</tt>, the vector is filled with
-     * zeros.
-     */
-    void reinit (const std::vector<IndexSet> &partitioning,
-                 const MPI_Comm              &communicator = MPI_COMM_WORLD,
-                 const bool                   omit_zeroing_entries = false);
-
-    /**
-     * Reinitialize the BlockVector to contain as many blocks as there are
-     * elements in the first argument, and with the respective sizes. Since no
-     * distribution map is given, all vectors are local vectors.
-     *
-     * If <tt>omit_zeroing_entries==false</tt>, the vector is filled with
-     * zeros.
-     */
-    void reinit (const std::vector<size_type> &N,
-                 const bool                    omit_zeroing_entries=false);
-
-    /**
-     * Reinitialize the vector in the same way as the given to a distributed
-     * block vector. The elements will be copied in this process.
-     */
-    void reinit (const MPI::BlockVector &V);
-
-    /**
-     * Change the dimension to that of the vector <tt>V</tt>. The same applies
-     * as for the other reinit() function.
-     *
-     * The elements of <tt>V</tt> are not copied, i.e.  this function is the
-     * same as calling <tt>reinit (V.size(), omit_zeroing_entries)</tt>.
-     *
-     * Note that you must call this (or the other reinit() functions)
-     * function, rather than calling the reinit() functions of an individual
-     * block, to allow the block vector to update its caches of vector sizes.
-     * If you call reinit() on one of the blocks, then subsequent actions on
-     * this object may yield unpredictable results since they may be routed to
-     * the wrong block.
-     */
-    void reinit (const BlockVector &V,
-                 const bool omit_zeroing_entries = false);
-
-    /**
-     * Change the number of blocks to <tt>num_blocks</tt>. The individual
-     * blocks will get initialized with zero size, so it is assumed that the
-     * user resizes the individual blocks by herself in an appropriate way,
-     * and calls <tt>collect_sizes</tt> afterwards.
-     */
-    void reinit (const size_type num_blocks);
-
-    /**
-     * Swap the contents of this vector and the other vector <tt>v</tt>. One
-     * could do this operation with a temporary variable and copying over the
-     * data elements, but this function is significantly more efficient since
-     * it only swaps the pointers to the data of the two vectors and therefore
-     * does not need to allocate temporary storage and move data around.
-     *
-     * Limitation: right now this function only works if both vectors have the
-     * same number of blocks. If needed, the numbers of blocks should be
-     * exchanged, too.
-     *
-     * This function is analogous to the the swap() function of all C++
-     * standard containers. Also, there is a global function swap(u,v) that
-     * simply calls <tt>u.swap(v)</tt>, again in analogy to standard
-     * functions.
-     */
-    void swap (BlockVector &v);
-
-    /**
-     * Print to a stream.
-     */
-    void print (std::ostream       &out,
-                const unsigned int  precision = 3,
-                const bool          scientific = true,
-                const bool          across = true) const;
-
-    /**
-     * Exception
-     */
-    DeclException0 (ExcIteratorRangeDoesNotMatchVectorSize);
-
-    /**
-     * Exception
-     */
-    DeclException0 (ExcNonMatchingBlockVectors);
-
-    /**
-     * Exception
-     */
-    DeclException2 (ExcNonLocalizedMap,
-                    int, int,
-                    << "For the generation of a localized vector the map has "
-                    << "to assign all elements to all vectors! "
-                    << "local_size = global_size is a necessary condition, but"
-                    << arg1 << " != " << arg2 << " was given!");
-
-  };
-
-
-
-  /*----------------------- Inline functions ----------------------------------*/
-
-
-
-  inline
-  BlockVector::BlockVector () = default;
-
-
-
-  inline
-  BlockVector::~BlockVector() = default;
-
-
-
-  inline
-  void
-  BlockVector::swap (BlockVector &v)
-  {
-    Assert (n_blocks() == v.n_blocks(),
-            ExcDimensionMismatch(n_blocks(),v.n_blocks()));
-
-    for (unsigned int row=0; row<n_blocks(); ++row)
-      block(row).swap (v.block(row));
-  }
-
-
-  template <typename Number>
-  BlockVector &
-  BlockVector::operator = (const ::dealii::BlockVector<Number> &v)
-  {
-    if (n_blocks() != v.n_blocks())
-      {
-        std::vector<size_type> block_sizes (v.n_blocks(), 0);
-        block_indices.reinit (block_sizes);
-        if (components.size() != n_blocks())
-          components.resize(n_blocks());
-      }
-
-    for (size_type i=0; i<this->n_blocks(); ++i)
-      this->components[i] = v.block(i);
-
-    collect_sizes();
-
-    return *this;
-  }
-
-
-  /**
-   * Global function which overloads the default implementation of the C++
-   * standard library which uses a temporary object. The function simply
-   * exchanges the data of the two vectors.
-   *
-   * @relates TrilinosWrappers::BlockVector
-   * @author Martin Kronbichler, 2008
-   */
-  inline
-  void swap (BlockVector &u,
-             BlockVector &v)
-  {
-    u.swap (v);
-  }
-
-} /* namespace TrilinosWrappers */
-
-/*@}*/
-
-
-namespace internal
-{
-  namespace LinearOperator
-  {
-    template <typename> class ReinitHelper;
-
-    /**
-     * A helper class used internally in linear_operator.h. Specialization for
-     * TrilinosWrappers::BlockVector.
-     */
-    template<>
-    class ReinitHelper<TrilinosWrappers::BlockVector>
-    {
-    public:
-      template <typename Matrix>
-      static
-      void reinit_range_vector (const Matrix &matrix,
-                                TrilinosWrappers::BlockVector &v,
-                                bool omit_zeroing_entries)
-      {
-        v.reinit(matrix.range_partitioner(), omit_zeroing_entries);
-      }
-
-      template <typename Matrix>
-      static
-      void reinit_domain_vector(const Matrix &matrix,
-                                TrilinosWrappers::BlockVector &v,
-                                bool omit_zeroing_entries)
-      {
-        v.reinit(matrix.domain_partitioner(), omit_zeroing_entries);
-      }
-    };
-
-  } /* namespace LinearOperator */
-} /* namespace internal */
-
-
-/**
- * Declare dealii::TrilinosWrappers::BlockVector as serial vector.
- *
- * @author Uwe Koecher, 2017
- */
-template <>
-struct is_serial_vector< TrilinosWrappers::BlockVector > : std::true_type
-{
-};
-
-
-/**
- * Declare dealii::TrilinosWrappers::MPI::BlockVector as distributed vector.
- *
- * @author Uwe Koecher, 2017
- */
-template <>
-struct is_serial_vector< TrilinosWrappers::MPI::BlockVector > : std::false_type
-{
-};
-
-
-DEAL_II_NAMESPACE_CLOSE
-
-#endif  // DEAL_II_WITH_TRILINOS
-
-#endif
index 9f2620da0966ecd2e01e3c7930a864e340fadd9c..0b9e00a88123d735fca2942b284d77f645d953f5 100644 (file)
@@ -31,7 +31,7 @@
 DEAL_II_NAMESPACE_OPEN
 
 // forward declaration
-template <typename Number> class BlockVector;
+template <typename Number> class BlockVectorBase;
 
 /*! @addtogroup TrilinosWrappers
  *@{
@@ -44,7 +44,6 @@ namespace TrilinosWrappers
   {
     class BlockVector;
   }
-  class BlockVector;
   class BlockSparseMatrix;
 
 
@@ -68,13 +67,13 @@ namespace TrilinosWrappers
      * @ref GlossBlockLA "Block (linear algebra)"
      * @author Martin Kronbichler, Wolfgang Bangerth, 2008, 2009
      */
-    class BlockVector : public BlockVectorBase<Vector>
+    class BlockVector : public dealii::BlockVectorBase<MPI::Vector>
     {
     public:
       /**
        * Typedef the base class for simpler access to its own typedefs.
        */
-      typedef BlockVectorBase<Vector> BaseClass;
+      typedef dealii::BlockVectorBase<MPI::Vector> BaseClass;
 
       /**
        * Typedef the type of the underlying vector.
@@ -158,12 +157,6 @@ namespace TrilinosWrappers
        */
       BlockVector &operator= (BlockVector &&v);
 
-      /**
-       * Copy operator for arguments of the localized Trilinos vector type.
-       */
-      BlockVector &
-      operator= (const ::dealii::TrilinosWrappers::BlockVector &v);
-
       /**
        * Another copy function. This one takes a deal.II block vector and
        * copies it into a TrilinosWrappers block vector. Note that the number
@@ -338,7 +331,7 @@ namespace TrilinosWrappers
     inline
     BlockVector::BlockVector (const BlockVector &v)
       :
-      BlockVectorBase<Vector > ()
+      dealii::BlockVectorBase<MPI::Vector> ()
     {
       this->components.resize (v.n_blocks());
       this->block_indices = v.block_indices;
@@ -467,6 +460,16 @@ namespace internal
 } /* namespace internal */
 
 
+/**
+ * Declare dealii::TrilinosWrappers::MPI::BlockVector as distributed vector.
+ *
+ * @author Uwe Koecher, 2017
+ */
+template <>
+struct is_serial_vector< TrilinosWrappers::MPI::BlockVector > : std::false_type
+{
+};
+
 DEAL_II_NAMESPACE_CLOSE
 
 #endif  // DEAL_II_WITH_TRILINOS
index fb79c1ebd756a68d5794ae017451b0a290642f8b..c52e99482f7856e5fdc4f7133ec5a6262b2f6b3a 100644 (file)
@@ -1475,7 +1475,7 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::Vector, TrilinosWrappers::MPI::Vector as well
+     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
      * as deal.II's own vector classes Vector<double> and
      * LinearAlgebra::distributed::Vector<double>.
      *
@@ -1501,7 +1501,7 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::Vector, TrilinosWrappers::MPI::Vector as well
+     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
      * as deal.II's own vector classes Vector<double> and
      * LinearAlgebra::distributed::Vector<double>.
      *
@@ -1526,7 +1526,7 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::Vector, TrilinosWrappers::MPI::Vector as well
+     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
      * as deal.II's own vector classes Vector<double> and
      * LinearAlgebra::distributed::Vector<double>.
      *
@@ -1536,7 +1536,7 @@ namespace TrilinosWrappers
      * memory architecture, using the interface in the
      * TrilinosWrappers::VectorBase class.
      *
-     * In case of a localized Vector (i.e., TrilinosWrappers::Vector or
+     * 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.
@@ -1554,7 +1554,7 @@ namespace TrilinosWrappers
      * Source and destination must not be the same vector.
      *
      * This function can be called with several different vector objects,
-     * namely TrilinosWrappers::Vector, TrilinosWrappers::MPI::Vector as well
+     * namely TrilinosWrappers::VectorBase, TrilinosWrappers::MPI::Vector as well
      * as deal.II's own vector classes Vector<double> and
      * LinearAlgebra::distributed::Vector<double>.
      *
@@ -1564,7 +1564,7 @@ namespace TrilinosWrappers
      * memory architecture, using the interface in the
      * TrilinosWrappers::VectorBase class.
      *
-     * In case of a localized Vector (i.e., TrilinosWrappers::Vector or
+     * 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.
@@ -2989,7 +2989,7 @@ namespace TrilinosWrappers
       {
         // 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::Vector), but we can save some
+        // documentation of TrilinosWrappers::VectorBase), 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 2d85c1e8cf149b24b1f62286a1fba663857dbf99..60ffa95c6da12ab4cdd1951873cc13f23ed65a48 100644 (file)
@@ -159,7 +159,7 @@ namespace TrilinosWrappers
      * code that may for example look like this:
      *
      * @code
-     * TrilinosWrappers::Vector vector;
+     * TrilinosWrappers::VectorBase vector;
      * // do some write operations on the vector
      * for (size_type i=0; i<vector->size(); ++i)
      *   vector(i) = i;
@@ -304,7 +304,7 @@ namespace TrilinosWrappers
        * (but being distributed differently among the processors). A trivial
        * application of this function is to generate a replication of a whole
        * vector on each machine, when the calling vector is built according to
-       * the localized vector class TrilinosWrappers::Vector, and <tt>v</tt>
+       * the localized vector class TrilinosWrappers::VectorBase, and <tt>v</tt>
        * is a distributed vector. In this case, the variable
        * <tt>omit_zeroing_entries</tt> needs to be set to <tt>false</tt>,
        * since it does not make sense to exchange data between differently
@@ -348,7 +348,7 @@ namespace TrilinosWrappers
        * object) already is of the same size as the right hand side vector.
        * Otherwise, an exception will be thrown.
        */
-      Vector &operator= (const ::dealii::TrilinosWrappers::Vector &v);
+      Vector &operator= (const ::dealii::TrilinosWrappers::VectorBase &v);
 
       /**
        * Another copy function. This one takes a deal.II vector and copies it
@@ -592,212 +592,7 @@ namespace TrilinosWrappers
 #endif /* DOXYGEN */
 
   } /* end of namespace MPI */
-
-
-
-  /**
-   * This class is a specialization of a Trilinos vector to a localized
-   * version. The purpose of this class is to provide a copy interface from
-   * the possibly parallel Vector class to a local vector on each processor,
-   * in order to be able to access all elements in the vector or to apply
-   * certain deal.II functions.
-   *
-   * This class is deprecated, use TrilinosWrappers::MPI::Vector instead.
-   *
-   * @ingroup TrilinosWrappers
-   * @ingroup Vectors
-   * @author Martin Kronbichler, 2008
-   */
-  class Vector : public VectorBase
-  {
-  public:
-    /**
-     * Declare type for container size.
-     */
-    typedef dealii::types::global_dof_index size_type;
-
-    /**
-     * Reinit function that resizes the vector to the size specified by
-     * <tt>n</tt>. The flag <tt>omit_zeroing_entries</tt> specifies whether
-     * the vector entries should be initialized to zero (false). If it is set
-     * to <tt>true</tt>, the vector entries are in an unspecified state and
-     * the user has to set all elements. In the current implementation, this
-     * method still sets the entries to zero, but this might change between
-     * releases without notification.
-     */
-    void reinit (const size_type n,
-                 const bool      omit_zeroing_entries = false);
-
-    /**
-     * Initialization with an Epetra_Map. Similar to the call in the other
-     * class MPI::Vector, with the difference that now a copy on all processes
-     * is generated. This initialization function is appropriate when the data
-     * in the localized vector should be imported from a distributed vector
-     * that has been initialized with the same communicator. The variable
-     * <tt>omit_zeroing_entries</tt> determines whether the vector should be
-     * filled with zero (false). If it is set to <tt>true</tt>, the vector
-     * entries are in an unspecified state and the user has to set all
-     * elements. In the current implementation, this method still sets the
-     * entries to zero, but this might change between releases without
-     * notification.
-     *
-     * Which element of the @p input_map argument are set is in fact ignored,
-     * the only thing that matters is the size of the index space described by
-     * this argument.
-     */
-    void reinit (const Epetra_Map &input_map,
-                 const bool        omit_zeroing_entries = false);
-
-    /**
-     * Initialization with an IndexSet. Similar to the call in the other class
-     * MPI::Vector, with the difference that now a copy on all processes is
-     * generated. This initialization function is appropriate in case the data
-     * in the localized vector should be imported from a distributed vector
-     * that has been initialized with the same communicator. The variable
-     * <tt>omit_zeroing_entries</tt> determines whether the vector should be
-     * filled with zero (false). If it is set to <tt>true</tt>, the vector
-     * entries are in an unspecified state and the user has to set all
-     * elements. In the current implementation, this method still sets the
-     * entries to zero, but this might change between releases without
-     * notification.
-     *
-     * Which element of the @p input_map argument are set is in fact ignored,
-     * the only thing that matters is the size of the index space described by
-     * this argument.
-     */
-    void reinit (const IndexSet   &input_map,
-                 const MPI_Comm   &communicator = MPI_COMM_WORLD,
-                 const bool        omit_zeroing_entries = false);
-
-    /**
-     * Reinit function. Takes the information of a Vector and copies
-     * everything to the calling vector, now also allowing different maps.
-     *
-     * If the optional flag <tt>omit_zeroing_entries</tt> is not
-     * <tt>true</tt>, the elements in the vector are initialized with zero. If
-     * it is set to <tt>true</tt>, the vector entries are in an unspecified
-     * state and the user has to set all elements. In the current
-     * implementation, this method does not touch the vector entries in case
-     * the vector layout is unchanged from before, otherwise entries are set
-     * to zero.  Note that this behavior might change between releases without
-     * notification.
-     */
-    void reinit (const VectorBase &V,
-                 const bool        omit_zeroing_entries = false,
-                 const bool        allow_different_maps = false);
-
-    /**
-     * Set all components of the vector to the given number @p s. Simply pass
-     * this down to the base class, but we still need to declare this function
-     * to make the example given in the discussion about making the
-     * constructor explicit work.
-     */
-    Vector &operator= (const TrilinosScalar s);
-
-    /**
-     * Set the left hand argument to the (parallel) Trilinos Vector.
-     * Equivalent to the @p reinit function.
-     */
-    Vector &operator= (const MPI::Vector &v);
-
-    /**
-     * Set the left hand argument to the deal.II vector.
-     */
-    template <typename Number>
-    Vector &operator= (const ::dealii::Vector<Number> &v);
-
-    /**
-     * Copy operator. Copies both the dimension and the content in the right
-     * hand argument.
-     */
-    Vector &operator= (const Vector &v);
-
-    /**
-     * This function does nothing but is there for compatibility with the @p
-     * PETScWrappers::Vector class.
-     *
-     * For the PETSc vector wrapper class, this function updates the ghost
-     * values of the PETSc vector. This is necessary after any modification
-     * before reading ghost values.
-     *
-     * However, for the implementation of this class, it is immaterial and
-     * thus an empty function.
-     */
-    void update_ghost_values () const;
-  };
-
-
-// ------------------- inline and template functions --------------
-
-
-  /**
-   * Global function @p swap which overloads the default implementation of the
-   * C++ standard library which uses a temporary object. The function simply
-   * exchanges the data of the two vectors.
-   *
-   * @relates TrilinosWrappers::Vector
-   * @author Martin Kronbichler, Wolfgang Bangerth, 2008
-   */
-  inline
-  void swap (Vector &u, Vector &v)
-  {
-    u.swap (v);
-  }
-
-
-#ifndef DOXYGEN
-
-  inline
-  Vector &
-  Vector::operator= (const TrilinosScalar s)
-  {
-    VectorBase::operator= (s);
-
-    return *this;
-  }
-
-
-
-  template <typename Number>
-  Vector &
-  Vector::operator= (const ::dealii::Vector<Number> &v)
-  {
-    if (size() != v.size())
-      {
-        vector.reset();
-
-        Epetra_LocalMap map ((TrilinosWrappers::types::int_type)v.size(), 0,
-                             Utilities::Trilinos::comm_self());
-        vector.reset (new Epetra_FEVector(map));
-        owned_elements = v.locally_owned_elements();
-      }
-
-    const Epetra_Map &map = vector_partitioner();
-    const TrilinosWrappers::types::int_type size = map.NumMyElements();
-
-    Assert (map.MaxLID() == size-1,
-            ExcDimensionMismatch(map.MaxLID(), size-1));
-
-    // Need to copy out values, since the
-    // deal.II might not use doubles, so
-    // that a direct access is not possible.
-    for (TrilinosWrappers::types::int_type i=0; i<size; ++i)
-      (*vector)[0][i] = v(i);
-
-    return *this;
-  }
-
-
-
-  inline
-  void
-  Vector::update_ghost_values () const
-  {}
-
-
-#endif
-
-} /* namespace TrilinosWrappers */
+} /* end of namespace TrilinosWrappers */
 
 /*@}*/
 
@@ -837,16 +632,16 @@ namespace internal
 
     /**
      * A helper class used internally in linear_operator.h. Specialization for
-     * TrilinosWrappers::Vector.
+     * TrilinosWrappers::VectorBase.
      */
     template<>
-    class ReinitHelper<TrilinosWrappers::Vector>
+    class ReinitHelper<TrilinosWrappers::VectorBase>
     {
     public:
       template <typename Matrix>
       static
       void reinit_range_vector (const Matrix &matrix,
-                                TrilinosWrappers::Vector &v,
+                                TrilinosWrappers::VectorBase &v,
                                 bool omit_zeroing_entries)
       {
         v.reinit(matrix.locally_owned_range_indices(),
@@ -857,7 +652,7 @@ namespace internal
       template <typename Matrix>
       static
       void reinit_domain_vector(const Matrix &matrix,
-                                TrilinosWrappers::Vector &v,
+                                TrilinosWrappers::VectorBase &v,
                                 bool omit_zeroing_entries)
       {
         v.reinit(matrix.locally_owned_domain_indices(),
@@ -871,12 +666,12 @@ namespace internal
 
 
 /**
- * Declare dealii::TrilinosWrappers::Vector as serial vector.
+ * Declare dealii::TrilinosWrappers::VectorBase as serial vector.
  *
  * @author Uwe Koecher, 2017
  */
 template <>
-struct is_serial_vector< TrilinosWrappers::Vector > : std::true_type
+struct is_serial_vector< TrilinosWrappers::VectorBase > : std::true_type
 {
 };
 
index 54d5043f5c141b671d133042d499df70e9430e7e..523db9b0d9854707ad67fea832feb9df55ea3fa3 100644 (file)
@@ -62,6 +62,10 @@ namespace TrilinosWrappers
 {
   // forward declaration
   class VectorBase;
+  namespace MPI
+  {
+    class Vector;
+  }
 
   /**
    * @cond internal
@@ -189,15 +193,14 @@ namespace TrilinosWrappers
 
 
   /**
-   * Base class for the two types of Trilinos vectors, the distributed memory
-   * vector MPI::Vector and a localized vector Vector. The latter is designed
-   * for use in either serial implementations or as a localized copy on each
-   * processor.  The implementation of this class is based on the Trilinos
-   * vector class Epetra_FEVector, the (parallel) partitioning of which is
-   * governed by an Epetra_Map. This means that the vector type is generic and
-   * can be done in this base class, while the definition of the partition map
-   * (and hence, the constructor and reinit function) will have to be done in
-   * the derived classes. The Epetra_FEVector is precisely the kind of vector
+   * Base class for the the distributed memory vector MPI::Vector that is
+   * designed for use in either serial implementations or as a localized copy
+   * on each processor.  The implementation of this class is based on the
+   * Trilinos vector class Epetra_FEVector, the (parallel) partitioning of which
+   * is governed by an Epetra_Map. This means that the vector type is generic
+   * and can be done in this base class, while the definition of the partition
+   * map (and hence, the constructor and reinit function) will have to be done
+   * in the derived classes. The Epetra_FEVector is precisely the kind of vector
    * we deal with all the time - we probably get it from some assembly
    * process, where also entries not locally owned might need to written and
    * hence need to be forwarded to the owner. The only requirement for this
index f63389c22ba0bc326b69fa3ab8a10024e0223e48..51d9fab6fccc1a29af223460372e9af8430d85bd 100644 (file)
@@ -56,7 +56,7 @@ namespace TrilinosWrappers
   {
     class Vector;
   }
-  class Vector;
+  class VectorBase;
 }
 #endif
 
@@ -236,7 +236,7 @@ public:
    * wrapper vector. This copy constructor is only available if Trilinos was
    * detected during configuration time.
    */
-  explicit Vector (const TrilinosWrappers::Vector &v);
+  explicit Vector (const TrilinosWrappers::VectorBase &v);
 #endif
 
   /**
@@ -408,7 +408,7 @@ public:
    * during configuration time.
    */
   Vector<Number> &
-  operator= (const TrilinosWrappers::Vector &v);
+  operator= (const TrilinosWrappers::VectorBase &v);
 #endif
 
   /**
index f4db5bc8c81061aedcc632493067a4315f3f28e1..a5eec8ad6ffd883b4d843c08cf772d09ab6d1cb5 100644 (file)
@@ -183,7 +183,8 @@ Vector<Number>::Vector (const TrilinosWrappers::MPI::Vector &v)
       // be a better solution than
       // this, but it has not yet been
       // found.
-      TrilinosWrappers::Vector localized_vector;
+      TrilinosWrappers::MPI::Vector localized_vector;
+      localized_vector.reinit(complete_index_set(vec_size));
       localized_vector.reinit (v, false, true);
 
       // get a representation of the vector
@@ -200,7 +201,7 @@ Vector<Number>::Vector (const TrilinosWrappers::MPI::Vector &v)
 
 
 template <typename Number>
-Vector<Number>::Vector (const TrilinosWrappers::Vector &v)
+Vector<Number>::Vector (const TrilinosWrappers::VectorBase &v)
   :
   Subscriptor(),
   vec_size(v.size()),
@@ -900,9 +901,10 @@ Vector<Number>::operator= (const TrilinosWrappers::MPI::Vector &v)
   // of the Trilinos vectors and
   // then call the other =
   // operator.
-  TrilinosWrappers::Vector localized_vector;
+  TrilinosWrappers::MPI::Vector localized_vector;
+  localized_vector.reinit(complete_index_set(v.size()));
   localized_vector.reinit(v, false, true);
-  *this = localized_vector;
+  *this = static_cast<TrilinosWrappers::VectorBase>(localized_vector);
   return *this;
 }
 
@@ -910,7 +912,7 @@ Vector<Number>::operator= (const TrilinosWrappers::MPI::Vector &v)
 
 template <typename Number>
 Vector<Number> &
-Vector<Number>::operator= (const TrilinosWrappers::Vector &v)
+Vector<Number>::operator= (const TrilinosWrappers::VectorBase &v)
 {
   if (v.size() != vec_size)
     reinit (v.size(), true);
index 211c0e6ea3cf1026f458499b6806c2612264c3b3..cc8b16401701c32f1169216747e92b13fdb32cd1 100644 (file)
@@ -107,7 +107,7 @@ namespace internal
 #endif
 
   template <>
-  struct MatrixSelector<dealii::TrilinosWrappers::Vector>
+  struct MatrixSelector<dealii::TrilinosWrappers::VectorBase>
   {
     typedef ::dealii::TrilinosWrappers::SparsityPattern Sparsity;
     typedef ::dealii::TrilinosWrappers::SparseMatrix Matrix;
index 8c46da764b1bd78f8ba8d793ab23dab11859d459..4f77738bfe3b238cad1dd91c42a37f860e5baac2 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/base/geometry_info.h>
 #include <deal.II/dofs/dof_handler.h>
index 03655e4354fed62f76626450b43bdd5875a95ef4..a647c5a54d4e7f73e1f60979ec37b62d8f705c08 100644 (file)
@@ -49,7 +49,7 @@
 #  include <deal.II/lac/trilinos_sparse_matrix.h>
 #  include <deal.II/lac/trilinos_vector.h>
 #  include <deal.II/lac/trilinos_block_sparse_matrix.h>
-#  include <deal.II/lac/trilinos_block_vector.h>
+#  include <deal.II/lac/trilinos_parallel_block_vector.h>
 #endif
 
 #include <algorithm>
index 6a86068070e8b76eb64ede365a24820a123e01cb..7fdcde38f529ebc64770662c33018410fc75e1a4 100644 (file)
@@ -72,9 +72,8 @@ namespace PETScWrappers
 namespace TrilinosWrappers
 {
   class SparseMatrix;
-  class Vector;
   class BlockSparseMatrix;
-  class BlockVector;
+  class VectorBase;
   namespace MPI
   {
     class Vector;
@@ -855,21 +854,10 @@ namespace MatrixTools
   void
   apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar> &boundary_values,
                          TrilinosWrappers::SparseMatrix  &matrix,
-                         TrilinosWrappers::Vector        &solution,
-                         TrilinosWrappers::Vector        &right_hand_side,
+                         TrilinosWrappers::VectorBase        &solution,
+                         TrilinosWrappers::VectorBase        &right_hand_side,
                          const bool             eliminate_columns = true);
 
-  /**
-   * This function does the same as the one above, except now working on block
-   * structures.
-   */
-  void
-  apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar> &boundary_values,
-                         TrilinosWrappers::BlockSparseMatrix  &matrix,
-                         TrilinosWrappers::BlockVector        &solution,
-                         TrilinosWrappers::BlockVector        &right_hand_side,
-                         const bool                eliminate_columns = true);
-
   /**
    * Same as above, but for parallel matrices and vectors.
    *
index 7ee26717ae5eeac9fd888d9f0b4e5236feae0784..23aede8a5b7699eeed3ff00a5e7d1cca92689e9d 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/lac/dynamic_sparsity_pattern.h>
 #include <deal.II/lac/precondition.h>
index 7f1487b271a2ee1a20efc1fa55ace3562c3396ce..2ebf93e65612be45fcf39aff8daf798709ed5c4a 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 
 DEAL_II_NAMESPACE_OPEN
index 9e83208967a4fa26e832b27fca736c9a72b8090d..6363a2fbedfc6a4e0de62feb43f6634a5e560de6 100644 (file)
@@ -30,7 +30,7 @@
 #    include <Epetra_MpiComm.h>
 #    include <deal.II/lac/vector_memory.h>
 #    include <deal.II/lac/trilinos_vector.h>
-#    include <deal.II/lac/trilinos_block_vector.h>
+#    include <deal.II/lac/trilinos_parallel_block_vector.h>
 #  endif
 #endif
 
index fa8c69ecb86da9eda92d0a44c21ee40137e44ca3..61f08baf9c43eaf39c8bd64474ba89572aa6132a 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_epetra_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 DEAL_II_NAMESPACE_OPEN
index 63b45cc7613fa7e123f82759093159308bdef5c2..bc21a7f516824e0e9ac03b3801462b6c1b75be14 100644 (file)
@@ -30,14 +30,6 @@ for (S : REAL_SCALARS; V : DEAL_II_VEC_TEMPLATES)
     template class EmbeddedExplicitRungeKutta<LinearAlgebra::distributed::V<S> >;
 }
 
-for (V : EXTERNAL_SEQUENTIAL_VECTORS)
-{
-    template class RungeKutta<V>;
-    template class ExplicitRungeKutta<V>;
-    template class ImplicitRungeKutta<V>;
-    template class EmbeddedExplicitRungeKutta<V>;
-}
-
 for (V : EXTERNAL_PARALLEL_VECTORS)
 {
     template class RungeKutta<V>;
index b53cd7e230a6b958c00fd84a3a305d223924cfae..6b4c9ff6c8ab2264472016873c0a5b78e5f18de2 100644 (file)
@@ -61,7 +61,7 @@ DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
 #    include <Epetra_MpiComm.h>
 #    include <deal.II/lac/vector_memory.h>
 #    include <deal.II/lac/trilinos_vector.h>
-#    include <deal.II/lac/trilinos_block_vector.h>
+#    include <deal.II/lac/trilinos_parallel_block_vector.h>
 #  endif
 #  include "Teuchos_RCP.hpp"
 #  include "Epetra_SerialComm.h"
index efd9a05fe4f6b74c6835a717be07072f7416c6c7..3157b0d2d59ff53fbd5fd65cf650fd5f24b6b3b6 100644 (file)
@@ -18,7 +18,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #ifdef DEAL_II_WITH_P4EST
 
index 27481365dbe65f5e6037672e8580a68fb96f5d58..4d0d413d0e3a2dc97fa9007a1dd154f40f02a958 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/distributed/solution_transfer.h>
 #include <deal.II/distributed/tria.h>
index a5f6505c6d82c6199e8c5fe1a98df01cf807e9b1..4001446e94cb647ceed0fce1426415e278cfbef7 100644 (file)
@@ -37,9 +37,7 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
 #endif
 
 #ifdef DEAL_II_WITH_TRILINOS
-    template class SolutionTransfer<deal_II_dimension, TrilinosWrappers::Vector, DoFHandler<deal_II_dimension,deal_II_space_dimension> >;
-
-    template class SolutionTransfer<deal_II_dimension, TrilinosWrappers::BlockVector, DoFHandler<deal_II_dimension,deal_II_space_dimension> >;
+    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> >;
 
index c4d8ca4ec3f0f601915153ae5685d2faba5522ca..d937c77fbf97a2a55aad58dae3e736d7cbf869c9 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
 
 #include <deal.II/dofs/dof_accessor.h>
index 99bc5845628a55a9b3db6fa11b2f6e7ff8483a06..33e873cc31dc805ae478e6e27f89d257b09c18e9 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
 
 #include <deal.II/dofs/dof_accessor.h>
index 32eea51849540d13bb8dd15c5f5d0c86ed0f62a4..266a8055c3b81c85c740594a4197c13ba449baf2 100644 (file)
@@ -15,7 +15,7 @@
 
 
 
-for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; VEC : SERIAL_VECTORS)
+for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; VEC : REAL_SERIAL_VECTORS)
 {
     namespace FETools
     \{
index ea1927e4609adbea7c0a4d83c468b418546f812a..845c1a03878d9e25168039535f82a462cb5ebf79 100644 (file)
@@ -26,7 +26,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/grid/tria_accessor.h>
 #include <deal.II/grid/tria_boundary.h>
index b612064a076efd2dfdb9d87d49efdf0d7a5e2cc5..0f8ddfbb14d4fbcb9eb04fbd3f0e7fc548941652 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/grid/tria_boundary.h>
index 2be82243058abe6860ed19006c72ed957ecd0674..45bd6fa291d6aadf70e3b192ef34905359667ba3 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_handler.h>
index 4b7ec43102aacfaf1ffff06254a18c27ef456f2b..949d1692925c578b1073ba7afc38d8d8d572e85f 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/dofs/dof_handler.h>
index 809a6f1d1a95f98590a39a8dc1fce3bb0bf18acd..35e58a5a9c5e9f52f9233d03d4e53be61b501d4e 100644 (file)
@@ -19,7 +19,7 @@
 #include <deal.II/lac/block_vector_base.h>
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/grid/grid_refinement.h>
 #include <deal.II/grid/tria_accessor.h>
@@ -63,7 +63,7 @@ namespace
 #ifdef DEAL_II_WITH_TRILINOS
     inline
     TrilinosScalar
-    max_element (const TrilinosWrappers::Vector &criteria)
+    max_element (const TrilinosWrappers::VectorBase &criteria)
     {
       TrilinosScalar m = 0;
       criteria.trilinos_vector().MaxValue(&m);
@@ -73,7 +73,7 @@ namespace
 
     inline
     TrilinosScalar
-    min_element (const TrilinosWrappers::Vector &criteria)
+    min_element (const TrilinosWrappers::VectorBase &criteria)
     {
       TrilinosScalar m = 0;
       criteria.trilinos_vector().MinValue(&m);
index 8191a18605247c7b61dffd0fd20732d341a6e41f..c389f9d37fc9975acbd4b0b1ab094219ad4a8897 100644 (file)
@@ -17,7 +17,7 @@
 #include <deal.II/lac/block_matrix_array.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/lac/petsc_parallel_block_vector.h>
index 11c69edb1eb4659152950ebe6268bff7e68c443d..95ae1d629108ec31063600473894328f71dfaf98 100644 (file)
@@ -32,7 +32,7 @@
 #include <deal.II/lac/petsc_parallel_sparse_matrix.h>
 #include <deal.II/lac/petsc_parallel_block_sparse_matrix.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_sparse_matrix.h>
 #include <deal.II/lac/trilinos_block_sparse_matrix.h>
 #include <deal.II/lac/matrix_block.h>
@@ -1366,8 +1366,7 @@ 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::Vector);
-BLOCK_MATRIX_VECTOR_FUNCTIONS(TrilinosWrappers::BlockSparseMatrix, TrilinosWrappers::BlockVector);
+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 3061248ab34769e6896fc26ef85b6ae9745eca56..936a743f44d886c3d9315cb4cc4aa5e17698d91e 100644 (file)
@@ -47,18 +47,6 @@ for (S: REAL_SCALARS; T : DEAL_II_VEC_TEMPLATES)
 }
 
 
-for (V: EXTERNAL_SEQUENTIAL_VECTORS)
-{
-    template void ConstraintMatrix::condense<V >(const V&, V&) const;
-    template void ConstraintMatrix::condense<V >(V&vec) const;
-    template void ConstraintMatrix::distribute_local_to_global<V > (
-        const Vector<V::value_type>&, const std::vector<types::global_dof_index> &, V&, const FullMatrix<V::value_type>&) const;
-    template void ConstraintMatrix::distribute_local_to_global<V > (
-        const Vector<V::value_type>&, const std::vector<types::global_dof_index> &, const std::vector<types::global_dof_index> &, V&, const FullMatrix<V::value_type>&, bool) const;
-    template void ConstraintMatrix::set_zero<V >(V&) const;
-}
-
-
 for (V: EXTERNAL_PARALLEL_VECTORS)
 {
     template void ConstraintMatrix::set_zero<V >(V&) const;
index 141e317af1c13f6d89b3cca09c95a5b706f7922d..c4cf5a2b05402fc5d294374e1bc45062a7652dc6 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/lac/la_parallel_vector.h>
 #include <deal.II/lac/la_parallel_block_vector.h>
index 69a4a2c9356dc04a4e7654c0733dd755041b1816..9c360a8b48fa4c60cb972a2bea0b585584d7cb49 100644 (file)
@@ -300,22 +300,8 @@ namespace TrilinosWrappers
 
   // TODO: In the following we
   // use the same code as just
-  // above six more times. Use
+  // above three more times. Use
   // templates.
-  TrilinosScalar
-  BlockSparseMatrix::residual (BlockVector       &dst,
-                               const BlockVector &x,
-                               const BlockVector &b) const
-  {
-    vmult (dst, x);
-    dst -= b;
-    dst *= -1.;
-
-    return dst.l2_norm();
-  }
-
-
-
   TrilinosScalar
   BlockSparseMatrix::residual (MPI::BlockVector       &dst,
                                const MPI::Vector      &x,
@@ -330,20 +316,6 @@ namespace TrilinosWrappers
 
 
 
-  TrilinosScalar
-  BlockSparseMatrix::residual (BlockVector       &dst,
-                               const Vector      &x,
-                               const BlockVector &b) const
-  {
-    vmult (dst, x);
-    dst -= b;
-    dst *= -1.;
-
-    return dst.l2_norm();
-  }
-
-
-
   TrilinosScalar
   BlockSparseMatrix::residual (MPI::Vector            &dst,
                                const MPI::BlockVector &x,
@@ -358,20 +330,6 @@ namespace TrilinosWrappers
 
 
 
-  TrilinosScalar
-  BlockSparseMatrix::residual (Vector            &dst,
-                               const BlockVector &x,
-                               const Vector      &b) const
-  {
-    vmult (dst, x);
-    dst -= b;
-    dst *= -1.;
-
-    return dst.l2_norm();
-  }
-
-
-
   TrilinosScalar
   BlockSparseMatrix::residual (VectorBase       &dst,
                                const VectorBase &x,
index ed1e7bcd38af6f6e51ca6ba4a05a5419ec2cd3e2..a9e0ff757ed7d6af6c4e321343b576a80f7feb59 100644 (file)
@@ -13,7 +13,7 @@
 //
 // ---------------------------------------------------------------------
 
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #ifdef DEAL_II_WITH_TRILINOS
 
@@ -67,19 +67,6 @@ namespace TrilinosWrappers
 
 
 
-    BlockVector &
-    BlockVector::operator = (const ::dealii::TrilinosWrappers::BlockVector &v)
-    {
-      Assert (n_blocks() == v.n_blocks(),
-              ExcDimensionMismatch(n_blocks(),v.n_blocks()));
-
-      for (size_type i=0; i<this->n_blocks(); ++i)
-        this->components[i] = v.block(i);
-
-      return *this;
-    }
-
-
 
     BlockVector::~BlockVector ()
     {}
@@ -207,176 +194,7 @@ namespace TrilinosWrappers
     }
 
   } /* end of namespace MPI */
-
-
-
-
-
-
-  BlockVector &
-  BlockVector::operator = (const value_type s)
-  {
-    BaseClass::operator = (s);
-    return *this;
-  }
-
-
-
-  void
-  BlockVector::reinit (const std::vector<Epetra_Map> &input_maps,
-                       const bool                     omit_zeroing_entries)
-  {
-    size_type no_blocks = input_maps.size();
-    std::vector<size_type> block_sizes (no_blocks);
-
-    for (size_type i=0; i<no_blocks; ++i)
-      block_sizes[i] = TrilinosWrappers::n_global_elements(input_maps[i]);
-
-
-    this->block_indices.reinit (block_sizes);
-    if (components.size() != n_blocks())
-      components.resize(n_blocks());
-
-    for (size_type i=0; i<n_blocks(); ++i)
-      components[i].reinit(input_maps[i], omit_zeroing_entries);
-
-    collect_sizes();
-  }
-
-
-
-  void
-  BlockVector::reinit (const std::vector<IndexSet> &partitioning,
-                       const MPI_Comm              &communicator,
-                       const bool                   omit_zeroing_entries)
-  {
-    size_type no_blocks = partitioning.size();
-    std::vector<size_type> block_sizes (no_blocks);
-
-    for (size_type i=0; i<no_blocks; ++i)
-      block_sizes[i] = partitioning[i].size();
-
-
-    this->block_indices.reinit (block_sizes);
-    if (components.size() != n_blocks())
-      components.resize(n_blocks());
-
-    for (size_type i=0; i<n_blocks(); ++i)
-      components[i].reinit(partitioning[i], communicator, omit_zeroing_entries);
-
-    collect_sizes();
-  }
-
-
-
-  void
-  BlockVector::reinit (const std::vector<size_type> &block_sizes,
-                       const bool                    omit_zeroing_entries)
-  {
-    this->block_indices.reinit (block_sizes);
-    if (components.size() != n_blocks())
-      components.resize(n_blocks());
-
-    for (size_type i=0; i<n_blocks(); ++i)
-      components[i].reinit(block_sizes[i], omit_zeroing_entries);
-
-    collect_sizes();
-  }
-
-
-
-  void
-  BlockVector::reinit (const MPI::BlockVector &v)
-  {
-    block_indices = v.get_block_indices();
-    if (components.size() != n_blocks())
-      components.resize(n_blocks());
-
-    for (size_type i=0; i<n_blocks(); ++i)
-      components[i] = v.block(i);
-  }
-
-
-
-  void
-  BlockVector::reinit (const size_type num_blocks)
-  {
-    std::vector<size_type> block_sizes (num_blocks, 0);
-    block_indices.reinit (block_sizes);
-    if (components.size() != n_blocks())
-      components.resize(n_blocks());
-
-    for (size_type i=0; i<n_blocks(); ++i)
-      block(i).clear();
-
-    collect_sizes();
-  }
-
-
-
-  void
-  BlockVector::reinit (const BlockVector &v,
-                       const bool         omit_zeroing_entries)
-  {
-    block_indices = v.get_block_indices();
-    if (components.size() != n_blocks())
-      components.resize(n_blocks());
-
-    for (size_type i=0; i<n_blocks(); ++i)
-      components[i].reinit(v.block(i), omit_zeroing_entries);
-
-    collect_sizes();
-  }
-
-
-
-  BlockVector &
-  BlockVector::operator = (const MPI::BlockVector &v)
-  {
-    reinit (v);
-
-    return *this;
-  }
-
-
-
-  BlockVector &
-  BlockVector::operator = (const BlockVector &v)
-  {
-    if (n_blocks() != v.n_blocks())
-      {
-        std::vector<size_type> block_sizes (v.n_blocks(), 0);
-        block_indices.reinit (block_sizes);
-        if (components.size() != n_blocks())
-          components.resize(n_blocks());
-      }
-
-    for (size_type i=0; i<this->n_blocks(); ++i)
-      this->components[i] = v.block(i);
-
-    collect_sizes();
-
-    return *this;
-  }
-
-
-
-  void BlockVector::print (std::ostream       &out,
-                           const unsigned int  precision,
-                           const bool          scientific,
-                           const bool          across) const
-  {
-    for (size_type i=0; i<this->n_blocks(); ++i)
-      {
-        if (across)
-          out << 'C' << i << ':';
-        else
-          out << "Component " << i << std::endl;
-        this->components[i].print(out, precision, scientific, across);
-      }
-  }
-
-}
+} /* end of namespace TrilinosWrappers */
 
 
 DEAL_II_NAMESPACE_CLOSE
index bf1c800007b6a49733189674ba7a7b6747341a44..541aeb2125da50f6bb42f8537c038cd6d3447ba3 100644 (file)
@@ -1991,7 +1991,7 @@ namespace TrilinosWrappers
 
     // Reinit a temporary vector with fast argument set, which does not
     // overwrite the content (to save time). However, the
-    // TrilinosWrappers::Vector classes do not support this, so create a
+    // 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;
@@ -2016,7 +2016,7 @@ namespace TrilinosWrappers
 
     // Reinit a temporary vector with fast argument set, which does not
     // overwrite the content (to save time). However, the
-    // TrilinosWrappers::Vector classes do not support this, so create a
+    // 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;
@@ -3368,9 +3368,6 @@ namespace TrilinosWrappers
   SparseMatrix::vmult (VectorBase &,
                        const VectorBase &) const;
   template void
-  SparseMatrix::vmult (Vector &,
-                       const Vector &) const;
-  template void
   SparseMatrix::vmult (MPI::Vector &,
                        const MPI::Vector &) const;
   template void
@@ -3388,9 +3385,6 @@ namespace TrilinosWrappers
   SparseMatrix::Tvmult (VectorBase &,
                         const VectorBase &) const;
   template void
-  SparseMatrix::Tvmult (Vector &,
-                        const Vector &) const;
-  template void
   SparseMatrix::Tvmult (MPI::Vector &,
                         const MPI::Vector &) const;
   template void
@@ -3408,9 +3402,6 @@ namespace TrilinosWrappers
   SparseMatrix::vmult_add (VectorBase &,
                            const VectorBase &) const;
   template void
-  SparseMatrix::vmult_add (Vector &,
-                           const Vector &) const;
-  template void
   SparseMatrix::vmult_add (MPI::Vector &,
                            const MPI::Vector &) const;
   template void
@@ -3428,9 +3419,6 @@ namespace TrilinosWrappers
   SparseMatrix::Tvmult_add (VectorBase &,
                             const VectorBase &) const;
   template void
-  SparseMatrix::Tvmult_add (Vector &,
-                            const Vector &) const;
-  template void
   SparseMatrix::Tvmult_add (MPI::Vector &,
                             const MPI::Vector &) const;
   template void
index 9f33b388ceae373142b3cfb2a0df562b2b71a484..446456765c86bbeeb7ee98b53747995869f9c8c1 100644 (file)
@@ -19,7 +19,7 @@
 #ifdef DEAL_II_WITH_TRILINOS
 
 #  include <deal.II/base/mpi.h>
-#  include <deal.II/lac/trilinos_block_vector.h>
+#  include <deal.II/lac/trilinos_parallel_block_vector.h>
 #  include <deal.II/lac/trilinos_index_access.h>
 #  include <deal.II/lac/trilinos_sparse_matrix.h>
 
@@ -230,7 +230,7 @@ namespace TrilinosWrappers
 
 
     void
-    Vector::reinit (const BlockVector &v,
+    Vector::reinit (const MPI::BlockVector &v,
                     const bool         import_data)
     {
       nonlocal_vector.reset();
@@ -444,7 +444,7 @@ namespace TrilinosWrappers
 
 
     Vector &
-    Vector::operator = (const TrilinosWrappers::Vector &v)
+    Vector::operator = (const TrilinosWrappers::VectorBase &v)
     {
       nonlocal_vector.reset();
 
@@ -489,173 +489,7 @@ namespace TrilinosWrappers
     }
 
   } /* end of namespace MPI */
-
-
-
-  void
-  Vector::reinit (const size_type n,
-                  const bool    /*omit_zeroing_entries*/)
-  {
-    owned_elements = complete_index_set(n);
-    Epetra_LocalMap map ((TrilinosWrappers::types::int_type)n, 0,
-                         Utilities::Trilinos::comm_self());
-    vector.reset (new Epetra_FEVector (map));
-
-    last_action = Zero;
-  }
-
-
-
-  void
-  Vector::reinit (const Epetra_Map &input_map,
-                  const bool     /*omit_zeroing_entries*/)
-  {
-    Epetra_LocalMap map (TrilinosWrappers::n_global_elements(input_map),
-                         input_map.IndexBase(),
-                         input_map.Comm());
-    vector.reset (new Epetra_FEVector(map));
-    owned_elements = complete_index_set(TrilinosWrappers::n_global_elements(input_map));
-
-    last_action = Zero;
-  }
-
-
-
-  void
-  Vector::reinit (const IndexSet &partitioning,
-                  const MPI_Comm &communicator,
-                  const bool    /*omit_zeroing_entries*/)
-  {
-    Epetra_LocalMap map (static_cast<TrilinosWrappers::types::int_type>(partitioning.size()),
-                         0,
-#ifdef DEAL_II_WITH_MPI
-                         Epetra_MpiComm(communicator));
-#else
-                         Epetra_SerialComm());
-    (void)communicator;
-#endif
-    vector.reset (new Epetra_FEVector(map));
-
-    last_action = Zero;
-    owned_elements = partitioning;
-  }
-
-
-
-  void
-  Vector::reinit (const VectorBase &v,
-                  const bool        omit_zeroing_entries,
-                  const bool        allow_different_maps)
-  {
-    // In case we do not allow to
-    // have different maps, this
-    // call means that we have to
-    // reset the vector. So clear
-    // the vector, initialize our
-    // map with the map in v, and
-    // generate the vector.
-    if (allow_different_maps == false)
-      {
-        // check equality for MPI communicators
-#ifdef DEAL_II_WITH_MPI
-        const Epetra_MpiComm *my_comm = dynamic_cast<const Epetra_MpiComm *>(&vector->Comm());
-        const Epetra_MpiComm *v_comm = dynamic_cast<const Epetra_MpiComm *>(&v.vector->Comm());
-        const bool same_communicators = my_comm != nullptr && v_comm != nullptr &&
-                                        my_comm->DataPtr() == v_comm->DataPtr();
-#else
-        const bool same_communicators = true;
-#endif
-        if (!same_communicators || local_range() != v.local_range())
-          {
-            Epetra_LocalMap map (TrilinosWrappers::global_length(*(v.vector)),
-                                 v.vector->Map().IndexBase(),
-                                 v.vector->Comm());
-            vector.reset (new Epetra_FEVector(map));
-            owned_elements = v.owned_elements;
-          }
-        else if (omit_zeroing_entries)
-          {
-            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);
-            (void)ierr;
-            Assert (ierr == 0, ExcTrilinosError(ierr));
-
-            ierr = vector->PutScalar(0.0);
-            Assert (ierr == 0, ExcTrilinosError(ierr));
-          }
-        last_action = Zero;
-      }
-
-    // Otherwise, we have to check
-    // that the two vectors are
-    // already of the same size,
-    // create an object for the data
-    // exchange and then insert all
-    // the data.
-    else
-      {
-        Assert (omit_zeroing_entries == false,
-                ExcMessage ("It is not possible to exchange data with the "
-                            "option 'omit_zeroing_entries' set, which would not write "
-                            "elements."));
-
-        AssertThrow (size() == v.size(),
-                     ExcDimensionMismatch (size(), v.size()));
-
-        Epetra_Import data_exchange (vector->Map(), v.vector->Map());
-
-        const int ierr = vector->Import(*v.vector, data_exchange, Insert);
-        AssertThrow (ierr == 0, ExcTrilinosError(ierr));
-
-        last_action = Insert;
-      }
-
-  }
-
-
-
-  Vector &
-  Vector::operator = (const MPI::Vector &v)
-  {
-    if (size() != v.size())
-      {
-        Epetra_LocalMap map (TrilinosWrappers::n_global_elements(v.vector->Map()),
-                             v.vector->Map().IndexBase(),
-                             v.vector->Comm());
-        vector.reset (new Epetra_FEVector(map));
-      }
-
-    reinit (v, false, true);
-    return *this;
-  }
-
-
-
-  Vector &
-  Vector::operator = (const Vector &v)
-  {
-    if (size() != v.size())
-      {
-        Epetra_LocalMap map (TrilinosWrappers::n_global_elements(v.vector->Map()),
-                             v.vector->Map().IndexBase(),
-                             v.vector->Comm());
-        vector.reset (new Epetra_FEVector(map));
-        owned_elements = v.owned_elements;
-      }
-
-    const int ierr = vector->Update(1.0, *v.vector, 0.0);
-    Assert (ierr == 0, ExcTrilinosError(ierr));
-    (void)ierr;
-
-    return *this;
-  }
-
-}
+} /* end of namespace TrilinosWrappers */
 
 DEAL_II_NAMESPACE_CLOSE
 
index 3cbd37ae29617809a4311accbd16bb339813499b..db462c0ebdd3c278160013956819472e42163c4a 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/lac/vector_memory.templates.h>
 
index d9982c46ca8a2cc490b6404c212ff902171f95ae..1eda327aac3a1dda0fb0ead9025a77042730d121 100644 (file)
@@ -17,7 +17,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/meshworker/dof_info.templates.h>
 #include <deal.II/meshworker/integration_info.templates.h>
index a40a97a77d6132b586af88cc3ccb4036dc70bf9e..c78d216f08b25f8a90e180cb9abc5d3ed9b44179 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 #include <deal.II/meshworker/vector_selector.templates.h>
 
index 640eef3b8c2fb4bf707b75a19529cb5a77af1f32..37fa24b6b6c68683277e3870024c7f4bbbf7682c 100644 (file)
@@ -20,7 +20,7 @@
 #include <deal.II/lac/la_parallel_block_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/multigrid/mg_base.h>
 
 
index 65ccf6223a7154832c115c6b714d27dd6cd1c890..4676b5a27e6bef20bfdb99c417276bb5d7d508aa 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/lac/la_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_epetra_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/fe/fe.h>
index 8f2a04178ba0d96108fc64338a1c6df0c15dfb73..69e7f14b94d9891c37e5a2b355249493f0bb58c1 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/lac/la_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_epetra_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/lac/block_sparse_matrix.h>
 #include <deal.II/lac/dynamic_sparsity_pattern.h>
index 32f49db7e8f910de37ff07908577adbc6fc2d1f0..9a4ab4c21bd86c033b00db2cb0fec93f43dbc17a 100644 (file)
@@ -21,7 +21,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/lac/block_sparse_matrix.h>
 #include <deal.II/multigrid/mg_transfer.h>
index d3500b1278972fc6e54fb71fad8ca4d6ce0ef40a..3dba0c37c2cb87f477a36b0ee3e0820f9332bd54 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/vector_element_access.h>
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/data_out_dof_data.h>
index b612b576f4f421a6e68835ab9821c999dde00290..35dc8f5fdbccd7f0040c4b32db28a3c31678aeb9 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/grid/grid_tools.h>
 #include <deal.II/grid/filtered_iterator.h>
index f8d61c6f83559c8a3b9fbd6d53164a87d8ce043d..f9ba5e84125b8a4921bb0a84635f44e56b13db54 100644 (file)
@@ -28,7 +28,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 
 DEAL_II_NAMESPACE_OPEN
index df6e3a2a411490a3399319ca2aa6cd2843ac5e7d..baef5624eb8c3312b2128b9a31f212584e7720b2 100644 (file)
@@ -25,7 +25,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/base/geometry_info.h>
 #include <deal.II/dofs/dof_handler.h>
index 817af94c3870bb300ae82ec828ca32e076f806d5..c8959674be734239cf45eedf8a1735df921ec700 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 
 DEAL_II_NAMESPACE_OPEN
 
index 7e11e2fe0dab8ba484c6584589eb86fc3c825004..1f54ac4d0a9711079d250add0a141adbc4db59d9 100644 (file)
@@ -45,7 +45,7 @@
 #  include <deal.II/lac/trilinos_sparse_matrix.h>
 #  include <deal.II/lac/trilinos_vector.h>
 #  include <deal.II/lac/trilinos_block_sparse_matrix.h>
-#  include <deal.II/lac/trilinos_block_vector.h>
+#  include <deal.II/lac/trilinos_parallel_block_vector.h>
 #endif
 
 #include <algorithm>
index cea0b6260cb8341722ffc71162efcb0256ec266d..71cb04173a3ad71d801fcad0324dcdc13cc67cfc 100644 (file)
@@ -45,7 +45,7 @@
 #  include <deal.II/lac/trilinos_sparse_matrix.h>
 #  include <deal.II/lac/trilinos_vector.h>
 #  include <deal.II/lac/trilinos_block_sparse_matrix.h>
-#  include <deal.II/lac/trilinos_block_vector.h>
+#  include <deal.II/lac/trilinos_parallel_block_vector.h>
 #endif
 
 #include <algorithm>
@@ -422,8 +422,8 @@ namespace MatrixTools
   void
   apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar> &boundary_values,
                          TrilinosWrappers::SparseMatrix   &matrix,
-                         TrilinosWrappers::Vector         &solution,
-                         TrilinosWrappers::Vector         &right_hand_side,
+                         TrilinosWrappers::VectorBase         &solution,
+                         TrilinosWrappers::VectorBase         &right_hand_side,
                          const bool        eliminate_columns)
   {
     // simply redirect to the generic function
@@ -449,20 +449,6 @@ namespace MatrixTools
 
 
 
-  void
-  apply_boundary_values (const std::map<types::global_dof_index,TrilinosScalar>  &boundary_values,
-                         TrilinosWrappers::BlockSparseMatrix &matrix,
-                         TrilinosWrappers::BlockVector        &solution,
-                         TrilinosWrappers::BlockVector        &right_hand_side,
-                         const bool                            eliminate_columns)
-  {
-    internal::TrilinosWrappers::apply_block_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::BlockSparseMatrix &matrix,
index 1a2148bab6d8c672b3a35726cf229c95f2bc4cb5..61ce839040a2a1aae8eaf0fb1ab9a4ed222eceae 100644 (file)
@@ -22,7 +22,7 @@
 #include <deal.II/lac/petsc_parallel_vector.h>
 #include <deal.II/lac/petsc_parallel_block_vector.h>
 #include <deal.II/lac/trilinos_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/lac/vector_element_access.h>
 
 #include <deal.II/numerics/vector_tools.h>
index 41c4f00da22a8d3e2d7d64aef0ba94065d09d746..fdcc6c2984452be382c754f3a632adc63869feac 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/lac/trilinos_vector.h>
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/la_parallel_block_vector.h>
-#include <deal.II/lac/trilinos_block_vector.h>
+#include <deal.II/lac/trilinos_parallel_block_vector.h>
 #include <deal.II/numerics/solution_transfer.h>
 
 DEAL_II_NAMESPACE_OPEN

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.