16 #ifndef dealii__trilinos_vector_h 17 #define dealii__trilinos_vector_h 20 #include <deal.II/base/config.h> 22 #ifdef DEAL_II_WITH_TRILINOS 24 # include <deal.II/base/std_cxx11/shared_ptr.h> 25 # include <deal.II/base/subscriptor.h> 26 # include <deal.II/base/index_set.h> 27 # include <deal.II/base/utilities.h> 28 # include <deal.II/lac/exceptions.h> 29 # include <deal.II/lac/vector.h> 30 # include <deal.II/lac/trilinos_vector_base.h> 32 DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
33 # include "Epetra_Map.h" 34 # include "Epetra_LocalMap.h" 37 DEAL_II_NAMESPACE_OPEN
41 template <
typename>
class Vector;
53 #ifndef DEAL_II_WITH_64BIT_INDICES 58 int gid(
const Epetra_BlockMap &map,
int i)
67 long long int gid(
const Epetra_BlockMap &map,
int i)
289 #ifdef DEAL_II_WITH_CXX11 325 const bool omit_zeroing_entries =
false,
326 const bool allow_different_maps =
false);
332 const bool import_data =
false);
349 #ifdef DEAL_II_WITH_CXX11 377 template <
typename Number>
398 (const ::TrilinosWrappers::SparseMatrix &matrix,
439 Vector (
const Epetra_Map ¶llel_partitioning,
456 template <
typename number>
457 void reinit (
const Epetra_Map ¶llel_partitioner,
474 void reinit (
const Epetra_Map ¶llel_partitioning,
475 const bool omit_zeroing_entries =
false) DEAL_II_DEPRECATED;
491 template <typename Number>
492 Vector (const Epetra_Map ¶llel_partitioning,
493 const ::
Vector<Number> &v) DEAL_II_DEPRECATED;
514 const MPI_Comm &communicator = MPI_COMM_WORLD);
529 const MPI_Comm &communicator = MPI_COMM_WORLD);
547 const MPI_Comm &communicator = MPI_COMM_WORLD);
561 template <typename Number>
563 const ::
Vector<Number> &v,
564 const MPI_Comm &communicator = MPI_COMM_WORLD);
582 const MPI_Comm &communicator = MPI_COMM_WORLD,
583 const
bool omit_zeroing_entries = false);
612 const MPI_Comm &communicator = MPI_COMM_WORLD,
613 const
bool vector_writable = false);
640 template <
typename number>
642 const ::Vector<number> &v)
649 template <
typename number>
651 const ::Vector<number> &v,
652 const MPI_Comm &communicator)
661 template <
typename number>
663 const ::Vector<number> &v)
665 if (
vector.get() == 0 ||
vector->Map().SameAs(parallel_partitioner) ==
false)
666 vector.reset (
new Epetra_FEVector(parallel_partitioner));
670 const int size = parallel_partitioner.NumMyElements();
674 for (
int i=0; i<
size; ++i)
675 (*
vector)[0][i] = v(gid(parallel_partitioner,i));
689 template <
typename Number>
693 if (
size() != v.size())
695 vector.reset (
new Epetra_FEVector(Epetra_Map
696 (static_cast<TrilinosWrappers::types::int_type>(v.size()), 0,
697 #ifdef DEAL_II_WITH_MPI
698 Epetra_MpiComm(MPI_COMM_SELF)
770 explicit
Vector (const Epetra_Map &partitioning) DEAL_II_DEPRECATED;
782 const MPI_Comm &communicator = MPI_COMM_WORLD) DEAL_II_DEPRECATED;
794 template <typename Number>
795 explicit
Vector (const ::
Vector<Number> &v) DEAL_II_DEPRECATED;
801 void reinit (const size_type n,
802 const
bool omit_zeroing_entries = false);
817 void reinit (const Epetra_Map &input_map,
818 const
bool omit_zeroing_entries = false);
834 const MPI_Comm &communicator = MPI_COMM_WORLD,
835 const
bool omit_zeroing_entries = false);
842 const
bool omit_zeroing_entries = false,
843 const
bool allow_different_maps = false);
851 Vector &operator= (const TrilinosScalar s);
862 template <typename Number>
882 void update_ghost_values () const;
907 template <
typename number>
911 vector.reset (
new Epetra_FEVector(map));
928 template <
typename Number>
932 if (
size() != v.size())
936 Epetra_LocalMap map ((TrilinosWrappers::types::int_type)v.size(), 0,
938 vector.reset (
new Epetra_FEVector(map));
942 const TrilinosWrappers::types::int_type
size = map.NumMyElements();
944 Assert (map.MaxLID() == size-1,
945 ExcDimensionMismatch(map.MaxLID(), size-1));
950 for (TrilinosWrappers::types::int_type i=0; i<
size; ++i)
975 template <
typename>
class ReinitHelper;
985 template <
typename Matrix>
987 void reinit_range_vector (
const Matrix &matrix,
989 bool omit_zeroing_entries)
991 v.
reinit(matrix.locally_owned_range_indices(), matrix.get_mpi_communicator(), omit_zeroing_entries);
994 template <
typename Matrix>
996 void reinit_domain_vector(
const Matrix &matrix,
998 bool omit_zeroing_entries)
1000 v.
reinit(matrix.locally_owned_domain_indices(), matrix.get_mpi_communicator(), omit_zeroing_entries);
1012 template <
typename Matrix>
1014 void reinit_range_vector (
const Matrix &matrix,
1016 bool omit_zeroing_entries)
1018 v.
reinit(matrix.locally_owned_range_indices(),
1019 matrix.get_mpi_communicator(),
1020 omit_zeroing_entries);
1023 template <
typename Matrix>
1025 void reinit_domain_vector(
const Matrix &matrix,
1027 bool omit_zeroing_entries)
1029 v.
reinit(matrix.locally_owned_domain_indices(),
1030 matrix.get_mpi_communicator(),
1031 omit_zeroing_entries);
1039 DEAL_II_NAMESPACE_CLOSE
1041 #endif // DEAL_II_WITH_TRILINOS Vector & operator=(const TrilinosScalar s)
::types::global_dof_index size_type
const Epetra_Comm & comm_self()
void reinit(const VectorBase &v, const bool omit_zeroing_entries=false, const bool allow_different_maps=false)
Epetra_Map make_trilinos_map(const MPI_Comm &communicator=MPI_COMM_WORLD, const bool overlapping=false) const
#define DEAL_II_DEPRECATED
std_cxx11::shared_ptr< Epetra_FEVector > vector
#define Assert(cond, exc)
const Epetra_Map & vector_partitioner() const
void update_ghost_values() const
void swap(Vector &u, Vector &v)
void import_nonlocal_data_for_fe(const ::TrilinosWrappers::SparseMatrix &matrix, const Vector &vector)
VectorBase & operator=(const TrilinosScalar s)
void reinit(const size_type n, const bool omit_zeroing_entries=false)
::types::global_dof_index size_type
static const bool supports_distributed_data