17 #ifndef __deal2__trilinos_vector_h 18 #define __deal2__trilinos_vector_h 21 #include <deal.II/base/config.h> 23 #ifdef DEAL_II_WITH_TRILINOS 25 # include <deal.II/base/std_cxx1x/shared_ptr.h> 26 # include <deal.II/base/subscriptor.h> 27 # include <deal.II/base/index_set.h> 28 # include <deal.II/base/utilities.h> 29 # include <deal.II/lac/exceptions.h> 30 # include <deal.II/lac/vector.h> 31 # include <deal.II/lac/trilinos_vector_base.h> 33 # include "Epetra_Map.h" 34 # include "Epetra_LocalMap.h" 40 template <
typename>
class Vector;
52 #ifndef DEAL_II_USE_LARGE_INDEX_TYPE 56 int gid(
const Epetra_BlockMap &map,
int i)
64 long long int gid(
const Epetra_BlockMap &map,
int i)
277 const bool fast =
false,
278 const bool allow_different_maps =
false);
281 const bool import_data =
false);
291 const MPI_Comm &communicator = MPI_COMM_WORLD);
330 operator = (const ::TrilinosWrappers::Vector &V);
349 template <
typename Number>
394 (const ::TrilinosWrappers::SparseMatrix &matrix,
412 explicit Vector (
const Epetra_Map ¶llel_partitioning);
425 Vector (
const Epetra_Map ¶llel_partitioning,
433 template <
typename number>
434 void reinit (
const Epetra_Map ¶llel_partitioner,
435 const ::Vector<number> &v);
444 void reinit (
const Epetra_Map ¶llel_partitioning,
445 const bool fast =
false);
453 template <
typename Number>
454 Vector (
const Epetra_Map ¶llel_partitioning,
455 const ::Vector<Number> &v);
472 const MPI_Comm &communicator = MPI_COMM_WORLD);
479 const MPI_Comm &communicator = MPI_COMM_WORLD);
494 const MPI_Comm &communicator = MPI_COMM_WORLD);
502 template <
typename Number>
504 const ::Vector<Number> &v,
505 const MPI_Comm &communicator = MPI_COMM_WORLD);
517 const MPI_Comm &communicator = MPI_COMM_WORLD,
518 const bool fast =
false);
545 template <
typename number>
547 const ::Vector<number> &v)
554 template <
typename number>
556 const ::Vector<number> &v,
557 const MPI_Comm &communicator)
566 template <
typename number>
568 const ::Vector<number> &v)
570 if (
vector.get() != 0 &&
vector->Map().SameAs(parallel_partitioner))
571 vector.reset (
new Epetra_FEVector(parallel_partitioner));
575 const int size = parallel_partitioner.NumMyElements();
580 for (
int i=0; i<
size; ++i)
581 (*
vector)[0][i] = v(gid(parallel_partitioner,i));
595 template <
typename Number>
599 if (
size() != v.size())
601 vector.reset (
new Epetra_FEVector(Epetra_Map
602 (static_cast<TrilinosWrappers::types::int_type>(v.size()), 0,
603 #ifdef DEAL_II_WITH_MPI
604 Epetra_MpiComm(MPI_COMM_SELF)
671 explicit Vector (
const size_type n);
685 explicit Vector (
const Epetra_Map &partitioning);
699 const MPI_Comm &communicator = MPI_COMM_WORLD);
716 template <
typename Number>
717 explicit Vector (const ::Vector<Number> &v);
724 void reinit (
const size_type n,
725 const bool fast =
false);
743 void reinit (
const Epetra_Map &input_map,
744 const bool fast =
false);
763 const MPI_Comm &communicator = MPI_COMM_WORLD,
764 const bool fast =
false);
773 const bool fast =
false,
774 const bool allow_different_maps =
false);
801 template <
typename Number>
828 void update_ghost_values ()
const;
853 template <
typename number>
857 vector.reset (
new Epetra_FEVector(map));
874 template <
typename Number>
878 if (
size() != v.size())
884 vector.reset (
new Epetra_FEVector(map));
890 Assert (map.MaxLID() == size-1,
918 DEAL_II_NAMESPACE_CLOSE
920 #endif // DEAL_II_WITH_TRILINOS Vector & operator=(const TrilinosScalar s)
::types::global_dof_index size_type
void import_nonlocal_data_for_fe(const ::TrilinosWrappers::SparseMatrix &matrix, const Vector &vector)
void swap(Vector &u, Vector &v)
#define Assert(cond, exc)
const Epetra_Comm & comm_self()
void swap(Vector &u, Vector &v)
const Epetra_Map & vector_partitioner() const
Epetra_Map make_trilinos_map(const MPI_Comm &communicator=MPI_COMM_WORLD, const bool overlapping=false) const
std_cxx1x::shared_ptr< Epetra_FEVector > vector
VectorBase & operator=(const TrilinosScalar s)
void reinit(const VectorBase &v, const bool fast=false, const bool allow_different_maps=false)
::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
void update_ghost_values() const
::types::global_dof_index size_type
static const bool supports_distributed_data