18#ifdef DEAL_II_WITH_TRILINOS
26# include <boost/io/ios_state.hpp>
28# include <Epetra_Import.h>
29# include <Epetra_Map.h>
30# include <Epetra_MpiComm.h>
39 namespace EpetraWrappers
43 , vector(
new Epetra_FEVector(
44 Epetra_Map(0, 0, 0,
Utilities::Trilinos::comm_self())))
51 , vector(
new Epetra_FEVector(V.trilinos_vector()))
59 , vector(
new Epetra_FEVector(
96 down_V.get_mpi_communicator(),
150 std::shared_ptr<const Utilities::MPI::CommunicationPatternBase>
161 V.get_stored_elements().
size()) ||
165 V.get_stored_elements(),
166 dynamic_cast<const Epetra_MpiComm &
>(
vector->Comm()).Comm());
172 std::dynamic_pointer_cast<const CommunicationPattern>(
177 std::string(
"The communication pattern is not of type ") +
178 "LinearAlgebra::EpetraWrappers::CommunicationPattern."));
186 std::copy(V.
begin(), V.
end(), values);
218 *
this *= 1. / factor;
235 if (
vector->Map().SameAs(
down_V.trilinos_vector().Map()))
246# if DEAL_II_TRILINOS_VERSION_GTE(11, 11, 0)
248 down_V.trilinos_vector().Map());
260 down_V.trilinos_vector().Map());
315 const unsigned local_size(
vector->MyLength());
316 for (
unsigned int i = 0; i < local_size; ++i)
367 a,
down_V.trilinos_vector(), b,
down_W.trilinos_vector(), 1.);
426 if (
vector->Map().SameAs(
down_V.trilinos_vector().Map()) ==
false)
427 this->
sadd(0., a, V);
446 unsigned int flag = 0;
459 dynamic_cast<const Epetra_MpiComm *
>(&
vector->Map().Comm());
536# ifndef DEAL_II_WITH_64BIT_INDICES
537 return vector->GlobalLength();
539 return vector->GlobalLength64();
548 return vector->MyLength();
557 dynamic_cast<const Epetra_MpiComm *
>(&(
vector->Comm()));
570 if (
vector->Map().LinearMap())
572# ifndef DEAL_II_WITH_64BIT_INDICES
573 is.add_range(
vector->Map().MinMyGID(),
vector->Map().MaxMyGID() + 1);
575 is.add_range(
vector->Map().MinMyGID64(),
576 vector->Map().MaxMyGID64() + 1);
579 else if (
vector->Map().NumMyElements() > 0)
582# ifndef DEAL_II_WITH_64BIT_INDICES
584 reinterpret_cast<unsigned int *
>(
vector->Map().MyGlobalElements());
598 const Epetra_FEVector &
616 const unsigned int precision,
617 const bool scientific,
631 out.precision(precision);
633 out.setf(std::ios::scientific, std::ios::floatfield);
635 out.setf(std::ios::fixed, std::ios::floatfield);
638 for (
int i = 0; i <
vector->MyLength(); ++i)
639 out << val[i] <<
' ';
641 for (
int i = 0; i <
vector->MyLength(); ++i)
642 out << val[i] << std::endl;
655 return sizeof(*this) +
virtual double mean_value() const override
virtual Vector & operator/=(const double factor) override
virtual double l2_norm() const override
Vector & operator=(const Vector &V)
MPI_Comm get_mpi_communicator() const
std::unique_ptr< Epetra_FEVector > vector
const Epetra_FEVector & trilinos_vector() const
virtual double l1_norm() const override
virtual ::IndexSet locally_owned_elements() const override
virtual double add_and_dot(const double a, const VectorSpaceVector< double > &V, const VectorSpaceVector< double > &W) override
virtual void scale(const VectorSpaceVector< double > &scaling_factors) override
virtual double operator*(const VectorSpaceVector< double > &V) const override
virtual void import_elements(const ReadWriteVector< double > &V, VectorOperation::values operation, std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > communication_pattern={}) override
virtual size_type size() const override
virtual void print(std::ostream &out, const unsigned int precision=3, const bool scientific=true, const bool across=true) const override
virtual Vector & operator-=(const VectorSpaceVector< double > &V) override
size_type locally_owned_size() const
virtual double linfty_norm() const override
virtual bool all_zero() const override
void create_epetra_comm_pattern(const IndexSet &source_index_set, const MPI_Comm mpi_comm)
virtual void add(const double a) override
::IndexSet source_stored_elements
virtual void equ(const double a, const VectorSpaceVector< double > &V) override
virtual std::size_t memory_consumption() const override
std::shared_ptr< const CommunicationPattern > epetra_comm_pattern
virtual Vector & operator*=(const double factor) override
virtual Vector & operator+=(const VectorSpaceVector< double > &V) override
void reinit(const IndexSet ¶llel_partitioner, const MPI_Comm communicator, const bool omit_zeroing_entries=false)
virtual void sadd(const double s, const double a, const VectorSpaceVector< double > &V) override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcVectorTypeNotCompatible()
static ::ExceptionBase & ExcIO()
static ::ExceptionBase & ExcZero()
static ::ExceptionBase & ExcTrilinosError(int arg1)
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertIsFinite(number)
static ::ExceptionBase & ExcDifferentParallelPartitioning()
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
T sum(const T &t, const MPI_Comm mpi_communicator)