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 bool empty() const
Return true if vector is empty. 
Definition: TpetraVector.cpp:171
 
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 MPI_Comm mpi_comm() const
Return MPI communicator. 
Definition: TpetraVector.cpp:117
 
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 double inner(const GenericVector &v) const
Return inner product with given vector. 
Definition: TpetraVector.cpp:445
 
virtual std::size_t size() const
Return size of vector. 
Definition: TpetraVector.cpp:176
 
virtual std::string str(bool verbose) const
Return informal string representation (pretty-print) 
Definition: TpetraVector.cpp:129
 
TpetraVector(MPI_Comm comm=MPI_COMM_WORLD)
Create empty vector. 
Definition: TpetraVector.cpp:37
 
virtual double norm(std::string norm_type) const
Return norm of vector. 
Definition: TpetraVector.cpp:459
 
Tpetra::Map< int, dolfin::la_index, node_type > map_type
TpetraVector map type (local index, global index) 
Definition: TpetraVector.h:60
 
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 std::size_t local_size() const
Return local size of vector. 
Definition: TpetraVector.cpp:184
 
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
 
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
 
Teuchos::RCP< vector_type > vec() const
Return pointer to Tpetra vector object. 
Definition: TpetraVector.cpp:678
 
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 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 void zero()
Set all entries to zero and keep any sparse structure. 
Definition: TpetraVector.cpp:73
 
virtual const TpetraVector & operator-=(const GenericVector &x)
Subtract given vector. 
Definition: TpetraVector.cpp:574
 
Definition: TpetraVector.h:53
 
virtual bool owns_index(std::size_t i) const
Determine whether global vector index is owned by this process. 
Definition: TpetraVector.cpp:199
 
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
 
virtual GenericLinearAlgebraFactory & factory() const
Return linear algebra backend factory. 
Definition: TpetraVector.cpp:634
 
virtual double sum() const
Return sum of values of vector. 
Definition: TpetraVector.cpp:494
 
PetscInt la_index
Index type for compatibility with linear algebra backend(s) 
Definition: types.h:32
 
virtual void gather(GenericVector &y, const std::vector< dolfin::la_index > &indices) const
Definition: TpetraVector.cpp:369
 
virtual std::pair< std::int64_t, std::int64_t > local_range() const
Return ownership range of a vector. 
Definition: TpetraVector.cpp:192
 
virtual std::shared_ptr< GenericVector > copy() const
Return copy of vector. 
Definition: TpetraVector.cpp:143
 
virtual void gather_on_zero(std::vector< double > &x) const
Definition: TpetraVector.cpp:407
 
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