@DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
@DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@;
+
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT@;
}
// same as VECTOR_TYPES but only real-valued vectors (and only with PETSc
@DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
@DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR_REAL@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@;
}
// real vector types excluding block vectors
@DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_DOUBLE@;
@DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_FLOAT@;
@DEAL_II_EXPAND_PETSC_MPI_VECTOR@;
- @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@
+ @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT@;
}
// Vectors we can do GMG with excluding the LinearAlgebra::distributed::Vector<> (which is handled separately):
@DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_DOUBLE@;
@DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_FLOAT@;
@DEAL_II_EXPAND_PETSC_MPI_VECTOR@;
+
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE@;
+ @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT@;
}
// Matrices
set(DEAL_II_EXPAND_TPETRA_VECTOR_DOUBLE
"LinearAlgebra::TpetraWrappers::Vector<double, MemorySpace::Host>"
"LinearAlgebra::TpetraWrappers::Vector<double, MemorySpace::Default>")
+ set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE
+ "LinearAlgebra::TpetraWrappers::BlockVector<double, MemorySpace::Host>"
+ "LinearAlgebra::TpetraWrappers::BlockVector<double, MemorySpace::Default>")
endif()
if(_tpetra_inst_float)
set(DEAL_II_EXPAND_TPETRA_VECTOR_FLOAT
"LinearAlgebra::TpetraWrappers::Vector<float, MemorySpace::Host>"
"LinearAlgebra::TpetraWrappers::Vector<float, MemorySpace::Default>")
+ set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT
+ "LinearAlgebra::TpetraWrappers::BlockVector<float, MemorySpace::Host>"
+ "LinearAlgebra::TpetraWrappers::BlockVector<float, MemorySpace::Default>")
endif()
if(${DEAL_II_WITH_COMPLEX_NUMBERS})
set(DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_DOUBLE
"LinearAlgebra::TpetraWrappers::Vector<std::complex<double>, MemorySpace::Host>"
"LinearAlgebra::TpetraWrappers::Vector<std::complex<double>, MemorySpace::Default>")
+ set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE
+ "LinearAlgebra::TpetraWrappers::BlockVector<std::complex<double>, MemorySpace::Host>"
+ "LinearAlgebra::TpetraWrappers::BlockVector<std::complex<double>, MemorySpace::Default>")
endif()
if(_tpetra_inst_complex_float)
set(DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_FLOAT
"LinearAlgebra::TpetraWrappers::Vector<std::complex<float>, MemorySpace::Host>"
"LinearAlgebra::TpetraWrappers::Vector<std::complex<float>, MemorySpace::Default>")
+ set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT
+ "LinearAlgebra::TpetraWrappers::BlockVector<std::complex<float>, MemorySpace::Host>"
+ "LinearAlgebra::TpetraWrappers::BlockVector<std::complex<float>, MemorySpace::Default>")
endif()
endif()
endif()
template <typename Number, typename MemorySpace>
class Vector;
+ template <typename Number, typename MemorySpace>
+ class BlockVector;
+
template <typename Number, typename MemorySpace>
class SparseMatrix;
+
+ template <typename Number, typename MemorySpace>
+ class BlockSparseMatrix;
} // namespace TpetraWrappers
# endif
} // namespace LinearAlgebra
inline constexpr bool is_dealii_vector_type<
dealii::LinearAlgebra::TpetraWrappers::Vector<Number, MemorySpace>> =
true;
+
+ template <typename Number, typename MemorySpace>
+ inline constexpr bool is_dealii_vector_type<
+ dealii::LinearAlgebra::TpetraWrappers::BlockVector<Number, MemorySpace>> =
+ true;
# endif
# endif
#include <deal.II/lac/petsc_block_vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <queue>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
{
AssertThrow(false, ExcNotImplemented());
}
+
+ template <int dim, int spacedim, typename Number, typename MemorySpace>
+ void
+ back_interpolate(
+ const DoFHandler<dim, spacedim> &,
+ const AffineConstraints<typename LinearAlgebra::TpetraWrappers::
+ BlockVector<Number, MemorySpace>::value_type> &,
+ const LinearAlgebra::TpetraWrappers::BlockVector<Number, MemorySpace> &,
+ const DoFHandler<dim, spacedim> &,
+ const AffineConstraints<typename LinearAlgebra::TpetraWrappers::
+ BlockVector<Number, MemorySpace>::value_type> &,
+ LinearAlgebra::TpetraWrappers::BlockVector<Number, MemorySpace> &)
+ {
+ AssertThrow(false, ExcNotImplemented());
+ }
# endif
#endif
#ifdef DEAL_II_WITH_TRILINOS
# include <deal.II/lac/trilinos_epetra_communication_pattern.h>
# include <deal.II/lac/trilinos_epetra_vector.h>
+# include <deal.II/lac/trilinos_tpetra_block_vector.h>
# include <deal.II/lac/trilinos_tpetra_vector.h>
# include <Epetra_MultiVector.h>
} // namespace LinearAlgebra
+/**
+ * Declare dealii::LinearAlgebra::TpetraWrappers::BlockVector as distributed
+ * vector.
+ */
+template <typename Number, typename MemorySpace>
+struct is_serial_vector<
+ LinearAlgebra::TpetraWrappers::BlockVector<Number, MemorySpace>>
+ : std::false_type
+{};
+
DEAL_II_NAMESPACE_CLOSE
#endif // DEAL_II_TRILINOS_WITH_TPETRA
#include <deal.II/base/config.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
DEAL_II_NAMESPACE_OPEN
#include <deal.II/lac/petsc_block_vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/numerics/vector_tools_common.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/sparse_matrix.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/sparse_matrix.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/solver.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_block_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/vector_element_access.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/petsc_vector.h>
#include <deal.II/lac/trilinos_epetra_vector.h>
#include <deal.II/lac/trilinos_parallel_block_vector.h>
+#include <deal.II/lac/trilinos_tpetra_block_vector.h>
#include <deal.II/lac/trilinos_tpetra_vector.h>
#include <deal.II/lac/trilinos_vector.h>
#include <deal.II/lac/vector.h>
# include <deal.II/lac/petsc_vector.h>
# include <deal.II/lac/trilinos_epetra_vector.h>
# include <deal.II/lac/trilinos_parallel_block_vector.h>
+# include <deal.II/lac/trilinos_tpetra_block_vector.h>
# include <deal.II/lac/trilinos_tpetra_vector.h>
# include <deal.II/lac/trilinos_vector.h>
# include <deal.II/lac/vector.h>