DOLFIN
DOLFIN C++ interface
Loading...
Searching...
No Matches
dolfin::GenericMatrix Class Referenceabstract

This class defines a common interface for matrices. More...

#include <GenericMatrix.h>

Inheritance diagram for dolfin::GenericMatrix:
Collaboration diagram for dolfin::GenericMatrix:

Public Member Functions

virtual ~GenericMatrix ()
 Destructor.
 
virtual std::size_t rank () const
 Return tensor rank (number of dimensions)
 
virtual std::size_t size (std::size_t dim) const =0
 Return size of given dimension.
 
virtual std::pair< std::int64_t, std::int64_t > local_range (std::size_t dim) const =0
 Return local ownership range.
 
virtual std::size_t nnz () const =0
 Return number of non-zero entries in matrix (collective)
 
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.
 
virtual void zero ()=0
 Set all entries to zero and keep any sparse structure.
 
virtual void apply (std::string mode)=0
 Finalize assembly of tensor.
 
virtual std::string str (bool verbose) const =0
 Return informal string representation (pretty-print)
 
virtual std::shared_ptr< GenericMatrixcopy () const =0
 Return copy of matrix.
 
virtual void init_vector (GenericVector &z, std::size_t dim) const =0
 
virtual void get (double *block, std::size_t m, const dolfin::la_index *rows, std::size_t n, const dolfin::la_index *cols) const =0
 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)=0
 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)=0
 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)=0
 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)=0
 Add block of values using local indices.
 
virtual void axpy (double a, const GenericMatrix &A, bool same_nonzero_pattern)=0
 Add multiple of given matrix (AXPY operation)
 
virtual double norm (std::string norm_type) const =0
 Return norm of matrix.
 
virtual void getrow (std::size_t row, std::vector< std::size_t > &columns, std::vector< double > &values) const =0
 Get non-zero values of given row (global index) on local process.
 
virtual void setrow (std::size_t row, const std::vector< std::size_t > &columns, const std::vector< double > &values)=0
 Set values for given row (global index) on local process.
 
virtual void zero (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (global row indices) to zero.
 
virtual void zero_local (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (local row indices) to zero.
 
virtual void ident (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (global row indices) to identity matrix.
 
virtual void ident_local (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (local row indices) to identity matrix.
 
virtual void transpmult (const GenericVector &x, GenericVector &y) const =0
 
virtual void get_diagonal (GenericVector &x) const =0
 Get diagonal of a matrix.
 
virtual void set_diagonal (const GenericVector &x)=0
 Set diagonal of a matrix.
 
virtual const GenericMatrixoperator*= (double a)=0
 Multiply matrix by given number.
 
virtual const GenericMatrixoperator/= (double a)=0
 Divide matrix by given number.
 
const GenericMatrixoperator+= (const GenericMatrix &A)
 Add given matrix.
 
const GenericMatrixoperator-= (const GenericMatrix &A)
 Subtract given matrix.
 
virtual bool is_symmetric (double tol) const
 Test if matrix is symmetric.
 
virtual const GenericMatrixoperator= (const GenericMatrix &x)=0
 Assignment operator.
 
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.
 
virtual void init (const TensorLayout &tensor_layout)=0
 Initialize zero tensor using tensor layout.
 
virtual bool empty () const =0
 Return true if empty.
 
virtual GenericLinearAlgebraFactoryfactory () const =0
 Return linear algebra backend factory.
 
- 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)
 
virtual MPI_Comm mpi_comm () const =0
 Return MPI communicator.
 
- 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
 
- Public Member Functions inherited from dolfin::GenericLinearOperator
virtual void mult (const GenericVector &x, GenericVector &y) const =0
 Compute matrix-vector product y = Ax.
 

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 defines a common interface for matrices.

Member Function Documentation

◆ add() [1/3]

virtual void dolfin::GenericMatrix::add ( const double * block,
const dolfin::la_index * num_rows,
const dolfin::la_index *const * rows )
inlinevirtual

Add block of values using global indices.

Implements dolfin::GenericTensor.

◆ add() [2/3]

virtual void dolfin::GenericMatrix::add ( const double * block,
const std::vector< ArrayView< const dolfin::la_index > > & rows )
inlinevirtual

Add block of values using global indices.

Implements dolfin::GenericTensor.

◆ add() [3/3]

virtual void dolfin::GenericMatrix::add ( const double * block,
std::size_t m,
const dolfin::la_index * rows,
std::size_t n,
const dolfin::la_index * cols )
pure virtual

Add block of values using global indices.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ add_local() [1/3]

virtual void dolfin::GenericMatrix::add_local ( const double * block,
const dolfin::la_index * num_rows,
const dolfin::la_index *const * rows )
inlinevirtual

Add block of values using local indices.

Implements dolfin::GenericTensor.

◆ add_local() [2/3]

virtual void dolfin::GenericMatrix::add_local ( const double * block,
const std::vector< ArrayView< const dolfin::la_index > > & rows )
inlinevirtual

Add block of values using local indices.

Implements dolfin::GenericTensor.

◆ add_local() [3/3]

virtual void dolfin::GenericMatrix::add_local ( const double * block,
std::size_t m,
const dolfin::la_index * rows,
std::size_t n,
const dolfin::la_index * cols )
pure virtual

Add block of values using local indices.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ apply()

virtual void dolfin::GenericMatrix::apply ( std::string mode)
pure virtual

Finalize assembly of tensor.

Implements dolfin::GenericTensor.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ axpy()

virtual void dolfin::GenericMatrix::axpy ( double a,
const GenericMatrix & A,
bool same_nonzero_pattern )
pure virtual

Add multiple of given matrix (AXPY operation)

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ copy()

virtual std::shared_ptr< GenericMatrix > dolfin::GenericMatrix::copy ( ) const
pure virtual

Return copy of matrix.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ get() [1/2]

virtual void dolfin::GenericMatrix::get ( double * block,
const dolfin::la_index * num_rows,
const dolfin::la_index *const * rows ) const
inlinevirtual

Get block of values.

Implements dolfin::GenericTensor.

◆ get() [2/2]

virtual void dolfin::GenericMatrix::get ( double * block,
std::size_t m,
const dolfin::la_index * rows,
std::size_t n,
const dolfin::la_index * cols ) const
pure virtual

Get block of values.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ get_diagonal()

virtual void dolfin::GenericMatrix::get_diagonal ( GenericVector & x) const
pure virtual

Get diagonal of a matrix.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ getrow()

virtual void dolfin::GenericMatrix::getrow ( std::size_t row,
std::vector< std::size_t > & columns,
std::vector< double > & values ) const
pure virtual

Get non-zero values of given row (global index) on local process.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ ident()

virtual void dolfin::GenericMatrix::ident ( std::size_t m,
const dolfin::la_index * rows )
pure virtual

Set given rows (global row indices) to identity matrix.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ ident_local()

virtual void dolfin::GenericMatrix::ident_local ( std::size_t m,
const dolfin::la_index * rows )
pure virtual

Set given rows (local row indices) to identity matrix.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ init_vector()

virtual void dolfin::GenericMatrix::init_vector ( GenericVector & z,
std::size_t dim ) const
pure 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

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ is_symmetric()

virtual bool dolfin::GenericMatrix::is_symmetric ( double tol) const
inlinevirtual

Test if matrix is symmetric.

Reimplemented in dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ local_range()

virtual std::pair< std::int64_t, std::int64_t > dolfin::GenericMatrix::local_range ( std::size_t dim) const
pure virtual

Return local ownership range.

Implements dolfin::GenericTensor.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ nnz()

virtual std::size_t dolfin::GenericMatrix::nnz ( ) const
pure virtual

Return number of non-zero entries in matrix (collective)

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ norm()

virtual double dolfin::GenericMatrix::norm ( std::string norm_type) const
pure virtual

Return norm of matrix.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ operator()()

virtual double dolfin::GenericMatrix::operator() ( dolfin::la_index i,
dolfin::la_index j ) const
inlinevirtual

Get value of given entry.

Reimplemented in dolfin::EigenMatrix.

◆ operator*=()

virtual const GenericMatrix & dolfin::GenericMatrix::operator*= ( double a)
pure virtual

Multiply matrix by given number.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ operator/=()

virtual const GenericMatrix & dolfin::GenericMatrix::operator/= ( double a)
pure virtual

Divide matrix by given number.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ operator=()

virtual const GenericMatrix & dolfin::GenericMatrix::operator= ( const GenericMatrix & x)
pure virtual

Assignment operator.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ rank()

virtual std::size_t dolfin::GenericMatrix::rank ( ) const
inlinevirtual

Return tensor rank (number of dimensions)

Implements dolfin::GenericTensor.

◆ set() [1/2]

virtual void dolfin::GenericMatrix::set ( const double * block,
const dolfin::la_index * num_rows,
const dolfin::la_index *const * rows )
inlinevirtual

Set block of values using global indices.

Implements dolfin::GenericTensor.

◆ set() [2/2]

virtual void dolfin::GenericMatrix::set ( const double * block,
std::size_t m,
const dolfin::la_index * rows,
std::size_t n,
const dolfin::la_index * cols )
pure virtual

Set block of values using global indices.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ set_diagonal()

virtual void dolfin::GenericMatrix::set_diagonal ( const GenericVector & x)
pure virtual

Set diagonal of a matrix.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ set_local() [1/2]

virtual void dolfin::GenericMatrix::set_local ( const double * block,
const dolfin::la_index * num_rows,
const dolfin::la_index *const * rows )
inlinevirtual

Set block of values using local indices.

Implements dolfin::GenericTensor.

◆ set_local() [2/2]

virtual void dolfin::GenericMatrix::set_local ( const double * block,
std::size_t m,
const dolfin::la_index * rows,
std::size_t n,
const dolfin::la_index * cols )
pure virtual

Set block of values using local indices.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ setitem()

virtual void dolfin::GenericMatrix::setitem ( std::pair< dolfin::la_index, dolfin::la_index > ij,
double value )
inlinevirtual

Set given entry to value. apply("insert") must be called before using using the object.

◆ setrow()

virtual void dolfin::GenericMatrix::setrow ( std::size_t row,
const std::vector< std::size_t > & columns,
const std::vector< double > & values )
pure virtual

Set values for given row (global index) on local process.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ size()

virtual std::size_t dolfin::GenericMatrix::size ( std::size_t dim) const
pure virtual

◆ str()

virtual std::string dolfin::GenericMatrix::str ( bool verbose) const
pure virtual

Return informal string representation (pretty-print)

Implements dolfin::GenericTensor.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, dolfin::PETScNestMatrix, and dolfin::TpetraMatrix.

◆ transpmult()

virtual void dolfin::GenericMatrix::transpmult ( const GenericVector & x,
GenericVector & y ) const
pure virtual

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

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ zero() [1/2]

virtual void dolfin::GenericMatrix::zero ( )
pure virtual

Set all entries to zero and keep any sparse structure.

Implements dolfin::GenericTensor.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ zero() [2/2]

virtual void dolfin::GenericMatrix::zero ( std::size_t m,
const dolfin::la_index * rows )
pure virtual

Set given rows (global row indices) to zero.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.

◆ zero_local()

virtual void dolfin::GenericMatrix::zero_local ( std::size_t m,
const dolfin::la_index * rows )
pure virtual

Set given rows (local row indices) to zero.

Implemented in dolfin::EigenMatrix, dolfin::Matrix, dolfin::PETScMatrix, and dolfin::TpetraMatrix.


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