DOLFIN
DOLFIN C++ interface
Public Types | Public Member Functions | Static Public Member Functions | List of all members
dolfin::TpetraMatrix Class Reference

#include <TpetraMatrix.h>

Inheritance diagram for dolfin::TpetraMatrix:
Inheritance graph
[legend]
Collaboration diagram for dolfin::TpetraMatrix:
Collaboration graph
[legend]

Public Types

typedef Tpetra::CrsMatrix< double, int, dolfin::la_indexmatrix_type
 Matrix type (scalar, local index, global index)
 
typedef Tpetra::CrsGraph< int, dolfin::la_indexgraph_type
 Graph type (local index, global index)
 
typedef Tpetra::Map< int, dolfin::la_indexmap_type
 Map type (local index, global index)
 

Public Member Functions

 TpetraMatrix ()
 Create empty matrix.
 
 TpetraMatrix (Teuchos::RCP< matrix_type > A)
 Create a wrapper around a Teuchos::RCP<matrix_type> pointer.
 
 TpetraMatrix (const TpetraMatrix &A)
 Copy constructor.
 
virtual ~TpetraMatrix ()
 Destructor.
 
void init (const TensorLayout &tensor_layout)
 Initialize zero tensor using tensor layout.
 
bool empty () const
 Return true if empty.
 
std::size_t size (std::size_t dim) const
 Return size of given dimension.
 
std::pair< std::int64_t, std::int64_t > local_range (std::size_t dim) const
 Return local ownership range.
 
std::size_t nnz () const
 Return number of non-zero entries in matrix (collective)
 
virtual void zero ()
 Set all entries to zero and keep any sparse structure.
 
virtual void apply (std::string mode)
 Finalize assembly of tensor. The mode parameter is ignored.
 
MPI_Comm mpi_comm () const
 Return MPI communicator.
 
virtual std::string str (bool verbose) const
 Return informal string representation (pretty-print)
 
virtual std::shared_ptr< GenericMatrixcopy () const
 Return copy of matrix.
 
virtual void init_vector (GenericVector &z, std::size_t dim) const
 
virtual void get (double *block, std::size_t m, const dolfin::la_index *rows, std::size_t n, const dolfin::la_index *cols) const
 Get block of values.
 
virtual void set (const double *block, std::size_t m, const dolfin::la_index *rows, std::size_t n, const dolfin::la_index *cols)
 Set block of values using global indices.
 
virtual void set_local (const double *block, std::size_t m, const dolfin::la_index *rows, std::size_t n, const dolfin::la_index *cols)
 Set block of values using local indices.
 
virtual void add (const double *block, std::size_t m, const dolfin::la_index *rows, std::size_t n, const dolfin::la_index *cols)
 Add block of values using global indices.
 
virtual void add_local (const double *block, std::size_t m, const dolfin::la_index *rows, std::size_t n, const dolfin::la_index *cols)
 Add block of values using local indices.
 
virtual void axpy (double a, const GenericMatrix &A, bool same_nonzero_pattern)
 Add multiple of given matrix (AXPY operation)
 
virtual void getrow (std::size_t row, std::vector< std::size_t > &columns, std::vector< double > &values) const
 Get non-zero values of given row.
 
virtual void setrow (std::size_t row, const std::vector< std::size_t > &columns, const std::vector< double > &values)
 Set values for given row.
 
virtual void zero (std::size_t m, const dolfin::la_index *rows)
 Set given rows (global row indices) to zero.
 
virtual void zero_local (std::size_t m, const dolfin::la_index *rows)
 Set given rows (local row indices) to zero.
 
virtual void ident (std::size_t m, const dolfin::la_index *rows)
 Set given rows (global row indices) to identity matrix.
 
virtual void ident_local (std::size_t m, const dolfin::la_index *rows)
 Set given rows (local row indices) to identity matrix.
 
virtual void mult (const GenericVector &x, GenericVector &y) const
 Compute matrix-vector product y = Ax.
 
virtual void transpmult (const GenericVector &x, GenericVector &y) const
 
virtual void get_diagonal (GenericVector &x) const
 Get diagonal of a matrix.
 
virtual void set_diagonal (const GenericVector &x)
 Set diagonal of a matrix.
 
virtual const TpetraMatrixoperator*= (double a)
 Multiply matrix by given number.
 
virtual const TpetraMatrixoperator/= (double a)
 Divide matrix by given number.
 
virtual const GenericMatrixoperator= (const GenericMatrix &A)
 Assignment operator.
 
virtual bool is_symmetric (double tol) const
 Test if matrix is symmetric.
 
virtual GenericLinearAlgebraFactoryfactory () const
 Return linear algebra backend factory.
 
double norm (std::string norm_type) const
 Return norm of matrix.
 
const TpetraMatrixoperator= (const TpetraMatrix &A)
 Assignment operator.
 
Teuchos::RCP< matrix_typemat ()
 Return Teuchos reference counted pointer to raw matrix.
 
Teuchos::RCP< const matrix_typemat () const
 Return Teuchos reference counted pointer to raw matrix (const)
 
- Public Member Functions inherited from dolfin::GenericMatrix
virtual ~GenericMatrix ()
 Destructor.
 
virtual std::size_t rank () const
 Return tensor rank (number of dimensions)
 
virtual void get (double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows) const
 Get block of values.
 
virtual void set (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Set block of values using global indices.
 
virtual void set_local (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Set block of values using local indices.
 
virtual void add (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Add block of values using global indices.
 
virtual void add_local (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)
 Add block of values using local indices.
 
virtual void add (const double *block, const std::vector< ArrayView< const dolfin::la_index >> &rows)
 Add block of values using global indices.
 
virtual void add_local (const double *block, const std::vector< ArrayView< const dolfin::la_index >> &rows)
 Add block of values using local indices.
 
const GenericMatrixoperator+= (const GenericMatrix &A)
 Add given matrix.
 
const GenericMatrixoperator-= (const GenericMatrix &A)
 Subtract given matrix.
 
virtual double operator() (dolfin::la_index i, dolfin::la_index j) const
 Get value of given entry.
 
virtual double getitem (std::pair< dolfin::la_index, dolfin::la_index > ij) const
 Get value of given entry.
 
virtual void setitem (std::pair< dolfin::la_index, dolfin::la_index > ij, double value)
 
virtual void ident_zeros (double tol=DOLFIN_EPS)
 Insert one on the diagonal for all zero rows.
 
- Public Member Functions inherited from dolfin::GenericTensor
virtual ~GenericTensor ()
 Destructor.
 
- Public Member Functions inherited from dolfin::LinearAlgebraObject
virtual const LinearAlgebraObjectinstance () const
 Return concrete instance / unwrap (const version)
 
virtual LinearAlgebraObjectinstance ()
 Return concrete instance / unwrap (non-const version)
 
virtual std::shared_ptr< const LinearAlgebraObjectshared_instance () const
 Return concrete shared ptr instance / unwrap (const version)
 
virtual std::shared_ptr< LinearAlgebraObjectshared_instance ()
 Return concrete shared ptr instance / unwrap (non-const version)
 
- Public Member Functions inherited from dolfin::Variable
 Variable ()
 Create unnamed variable.
 
 Variable (const std::string name, const std::string label)
 Create variable with given name and label.
 
 Variable (const Variable &variable)
 Copy constructor.
 
virtual ~Variable ()
 Destructor.
 
const Variableoperator= (const Variable &variable)
 Assignment operator.
 
void rename (const std::string name, const std::string label)
 Rename variable.
 
std::string name () const
 Return name.
 
std::string label () const
 Return label (description)
 
std::size_t id () const
 

Static Public Member Functions

static void graphdump (const Teuchos::RCP< const graph_type > graph)
 Print out a graph, for debugging.
 

Additional Inherited Members

- Public Attributes inherited from dolfin::Variable
Parameters parameters
 Parameters.
 
- Protected Member Functions inherited from dolfin::GenericLinearOperator
virtual void init_layout (const GenericVector &x, const GenericVector &y, GenericLinearOperator *wrapper)
 

Detailed Description

This class provides a simple matrix class based on Tpetra. It is a wrapper for a Tpetra matrix pointer (Teuchos::RCP<matrix_type>) implementing the GenericMatrix interface.

The interface is intentionally simple. For advanced usage, access the Tpetra::RCP<matrix_type> pointer using the function mat() and use the standard Tpetra interface.

Member Function Documentation

◆ init_vector()

void TpetraMatrix::init_vector ( GenericVector z,
std::size_t  dim 
) const
virtual

Initialize vector z to be compatible with the matrix-vector product y = Ax. In the parallel case, both size and layout are important.

Parameters
z(GenericVector&) Vector to initialise
dim(std::size_t) The dimension (axis): dim = 0 –> z = y, dim = 1 –> z = x

Implements dolfin::GenericMatrix.

◆ transpmult()

void TpetraMatrix::transpmult ( const GenericVector x,
GenericVector y 
) const
virtual

Matrix-vector product, y = A^T x. The y vector must either be zero-sized or have correct size and parallel layout.

Implements dolfin::GenericMatrix.


The documentation for this class was generated from the following files: