19 #ifndef __TPETRA_VECTOR_H 20 #define __TPETRA_VECTOR_H 28 #include <unordered_map> 31 #include <Teuchos_GlobalMPISession.hpp> 32 #include <Teuchos_oblackholestream.hpp> 33 #include <Tpetra_DefaultPlatform.hpp> 34 #include <Tpetra_MultiVector.hpp> 35 #include <Tpetra_Version.hpp> 37 #include <dolfin/common/types.h> 38 #include "GenericVector.h" 43 template<
typename T>
class Array;
60 typedef Tpetra::Map<int, dolfin::la_index, node_type>
map_type;
62 typedef Tpetra::MultiVector<double, int, dolfin::la_index, node_type>
86 virtual void apply(std::string mode);
92 virtual std::string
str(
bool verbose)
const;
97 virtual std::shared_ptr<GenericVector>
copy()
const;
100 virtual void init(std::size_t N);
103 virtual void init(std::pair<std::size_t, std::size_t> range);
107 virtual void init(std::pair<std::size_t, std::size_t> range,
108 const std::vector<std::size_t>& local_to_global_map,
109 const std::vector<la_index>& ghost_indices);
115 virtual bool empty()
const;
118 virtual std::size_t
size()
const;
124 virtual std::pair<std::int64_t, std::int64_t>
local_range()
const;
131 virtual void get(
double* block, std::size_t m,
136 virtual void get_local(
double* block, std::size_t m,
140 virtual void set(
const double* block, std::size_t m,
144 virtual void set_local(
const double* block, std::size_t m,
148 virtual void add(
const double* block, std::size_t m,
152 virtual void add_local(
const double* block, std::size_t m,
156 virtual void get_local(std::vector<double>& values)
const;
159 virtual void set_local(
const std::vector<double>& values);
169 const std::vector<dolfin::la_index>& indices)
const;
173 virtual void gather(std::vector<double>& x,
174 const std::vector<dolfin::la_index>& indices)
const;
190 virtual double norm(std::string norm_type)
const;
193 virtual double min()
const;
196 virtual double max()
const;
199 virtual double sum()
const;
242 Teuchos::RCP<vector_type>
vec()
const;
248 static void mapdump(Teuchos::RCP<const map_type> xmap,
249 const std::string desc);
252 void mapdump(
const std::string desc);
259 void _init(std::pair<std::int64_t, std::int64_t> range,
260 const std::vector<dolfin::la_index>& local_to_global);
264 Teuchos::RCP<vector_type> _x;
267 Teuchos::RCP<vector_type> _x_ghosted;
270 Teuchos::RCP<const Teuchos::MpiComm<int>> _comm;
virtual double max() const
Return maximum value of vector.
Definition: TpetraVector.cpp:485
virtual std::string str(bool verbose) const
Return informal string representation (pretty-print)
Definition: TpetraVector.cpp:129
virtual void add(const double *block, std::size_t m, const dolfin::la_index *rows)
Add block of values using global indices.
Definition: TpetraVector.cpp:293
virtual void init(const TensorLayout &tensor_layout)
Definition: GenericVector.h:58
virtual const GenericVector & operator=(const GenericVector &x)
Assignment operator.
Definition: TpetraVector.cpp:588
virtual void gather_on_zero(std::vector< double > &x) const
Definition: TpetraVector.cpp:407
virtual bool empty() const
Return true if vector is empty.
Definition: TpetraVector.cpp:171
TpetraVector(MPI_Comm comm=MPI_COMM_WORLD)
Create empty vector.
Definition: TpetraVector.cpp:37
Tpetra::Map< int, dolfin::la_index, node_type > map_type
TpetraVector map type (local index, global index)
Definition: TpetraVector.h:60
virtual bool owns_index(std::size_t i) const
Determine whether global vector index is owned by this process.
Definition: TpetraVector.cpp:199
virtual double sum() const
Return sum of values of vector.
Definition: TpetraVector.cpp:494
virtual double inner(const GenericVector &v) const
Return inner product with given vector.
Definition: TpetraVector.cpp:445
virtual void update_ghost_values()
Update ghost values in vector.
Definition: TpetraVector.cpp:225
virtual double min() const
Return minimum value of vector.
Definition: TpetraVector.cpp:476
virtual GenericLinearAlgebraFactory & factory() const
Return linear algebra backend factory.
Definition: TpetraVector.cpp:634
virtual const TpetraVector & operator*=(double a)
Multiply vector by given number.
Definition: TpetraVector.cpp:533
Tpetra::MultiVector::node_type node_type
Node type.
Definition: TpetraVector.h:58
Definition: TpetraMatrix.h:58
Tpetra::MultiVector< double, int, dolfin::la_index, node_type > vector_type
TpetraVector vector type (scalar, local index, global index, node)
Definition: TpetraVector.h:63
virtual MPI_Comm mpi_comm() const
Return MPI communicator.
Definition: TpetraVector.cpp:117
virtual const TpetraVector & operator+=(const GenericVector &x)
Add given vector.
Definition: TpetraVector.cpp:557
virtual const TpetraVector & operator/=(double a)
Divide vector by given number.
Definition: TpetraVector.cpp:548
Base class for LinearAlgebra factories.
Definition: GenericLinearAlgebraFactory.h:46
virtual void abs()
Replace all entries in the vector by their absolute values.
Definition: TpetraVector.cpp:438
virtual std::pair< std::int64_t, std::int64_t > local_range() const
Return ownership range of a vector.
Definition: TpetraVector.cpp:192
virtual void zero()
Set all entries to zero and keep any sparse structure.
Definition: TpetraVector.cpp:73
virtual std::size_t size() const
Return size of vector.
Definition: TpetraVector.cpp:176
virtual void gather(GenericVector &y, const std::vector< dolfin::la_index > &indices) const
Definition: TpetraVector.cpp:369
virtual std::shared_ptr< GenericVector > copy() const
Return copy of vector.
Definition: TpetraVector.cpp:143
virtual const TpetraVector & operator-=(const GenericVector &x)
Subtract given vector.
Definition: TpetraVector.cpp:574
Definition: TpetraVector.h:53
virtual ~TpetraVector()
Create vector wrapper of Tpetra Vec pointer.
Definition: TpetraVector.cpp:68
static void mapdump(Teuchos::RCP< const map_type > xmap, const std::string desc)
output map for debugging
Definition: TpetraVector.cpp:688
PetscInt la_index
Index type for compatibility with linear algebra backend(s)
Definition: types.h:32
virtual std::size_t local_size() const
Return local size of vector.
Definition: TpetraVector.cpp:184
Teuchos::RCP< vector_type > vec() const
Return pointer to Tpetra vector object.
Definition: TpetraVector.cpp:678
virtual void get_local(double *block, std::size_t m, const dolfin::la_index *rows) const
Get block of values using local indices.
Definition: TpetraVector.cpp:245
virtual void add_local(const double *block, std::size_t m, const dolfin::la_index *rows)
Add block of values using local indices.
Definition: TpetraVector.cpp:309
virtual void init(std::size_t N)
Initialize vector to global size N.
Definition: TpetraVector.cpp:148
This class defines a common interface for vectors.
Definition: GenericVector.h:47
virtual void apply(std::string mode)
Finalize assembly of tensor.
Definition: TpetraVector.cpp:79
virtual void set_local(const double *block, std::size_t m, const dolfin::la_index *rows)
Set block of values using local indices.
Definition: TpetraVector.cpp:280
virtual void axpy(double a, const GenericVector &x)
Add multiple of given vector (AXPY operation)
Definition: TpetraVector.cpp:430
virtual double norm(std::string norm_type) const
Return norm of vector.
Definition: TpetraVector.cpp:459