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

#include <EigenMatrix.h>

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

Public Types

typedef Eigen::SparseMatrix< double, Eigen::RowMajor, int > eigen_matrix_type
 Eigen Matrix type.
 

Public Member Functions

 EigenMatrix ()
 Create empty matrix.
 
 EigenMatrix (std::size_t M, std::size_t N)
 Create M x N matrix.
 
 EigenMatrix (const EigenMatrix &A)
 Copy constructor.
 
virtual ~EigenMatrix ()
 Destructor.
 
virtual void init (const TensorLayout &tensor_layout)
 Initialize zero tensor using tenor layout. More...
 
virtual bool empty () const
 Return true if empty. More...
 
virtual std::size_t size (std::size_t dim) const
 Return size of given dimension. More...
 
virtual std::pair< std::int64_t, std::int64_t > local_range (std::size_t dim) const
 Return local ownership range. More...
 
std::size_t nnz () const
 Return number of non-zero entries in matrix. More...
 
virtual void zero ()
 Set all entries to zero and keep any sparse structure. More...
 
virtual void apply (std::string mode)
 Finalize assembly of tensor. More...
 
virtual MPI_Comm mpi_comm () const
 Return MPI communicator. More...
 
virtual std::string str (bool verbose) const
 Return informal string representation (pretty-print) More...
 
virtual std::shared_ptr< GenericMatrixcopy () const
 Return copy of matrix. More...
 
virtual void resize (std::size_t M, std::size_t N)
 Resize matrix to M x N.
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void axpy (double a, const GenericMatrix &A, bool same_nonzero_pattern)
 Add multiple of given matrix (AXPY operation) More...
 
virtual double norm (std::string norm_type) const
 Return norm of matrix. More...
 
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. More...
 
virtual void setrow (std::size_t row_idx, const std::vector< std::size_t > &columns, const std::vector< double > &values)
 Set values for given row. More...
 
virtual void zero (std::size_t m, const dolfin::la_index *rows)
 Set given rows (global row indices) to zero. More...
 
virtual void zero_local (std::size_t m, const dolfin::la_index *rows)
 Set given rows (local row indices) to zero. More...
 
virtual void ident (std::size_t m, const dolfin::la_index *rows)
 Set given rows to identity matrix. More...
 
virtual void ident_local (std::size_t m, const dolfin::la_index *rows)
 Set given rows to identity matrix. More...
 
virtual void mult (const GenericVector &x, GenericVector &y) const
 Matrix-vector product, y = Ax. More...
 
virtual void transpmult (const GenericVector &x, GenericVector &y) const
 Matrix-vector product, y = A^T x. More...
 
virtual void get_diagonal (GenericVector &x) const
 Get diagonal of a matrix. More...
 
virtual void set_diagonal (const GenericVector &x)
 Set diagonal of a matrix. More...
 
virtual const EigenMatrixoperator*= (double a)
 Multiply matrix by given number. More...
 
virtual const EigenMatrixoperator/= (double a)
 Divide matrix by given number. More...
 
virtual const GenericMatrixoperator= (const GenericMatrix &A)
 Assignment operator. More...
 
virtual std::tuple< const int *, const int *, const double *, std::size_t > data () const
 
virtual GenericLinearAlgebraFactoryfactory () const
 Return linear algebra backend factory. More...
 
const eigen_matrix_typemat () const
 Return reference to Eigen matrix (const version)
 
eigen_matrix_typemat ()
 Return reference to Eigen matrix (non-const version)
 
void compress ()
 Compress matrix (eliminate all zeros from a sparse matrix)
 
double operator() (dolfin::la_index i, dolfin::la_index j) const
 Access value of given entry. More...
 
const EigenMatrixoperator= (const EigenMatrix &A)
 Assignment operator.
 
- Public Member Functions inherited from dolfin::GenericMatrix
virtual ~GenericMatrix ()
 Destructor.
 
virtual std::size_t rank () const
 Return tensor rank (number of dimensions) More...
 
virtual std::size_t size (std::size_t dim) const =0
 Return size of given dimension. More...
 
virtual std::pair< std::int64_t, std::int64_t > local_range (std::size_t dim) const =0
 Return local ownership range. More...
 
virtual std::size_t nnz () const =0
 Return number of non-zero entries in matrix (collective) More...
 
virtual void get (double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows) const
 Get block of values. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void add (const double *block, const std::vector< ArrayView< const dolfin::la_index > > &rows)
 Add block of values using global indices. More...
 
virtual void add_local (const double *block, const std::vector< ArrayView< const dolfin::la_index > > &rows)
 Add block of values using local indices. More...
 
virtual void zero ()=0
 Set all entries to zero and keep any sparse structure. More...
 
virtual void apply (std::string mode)=0
 Finalize assembly of tensor. More...
 
virtual std::string str (bool verbose) const =0
 Return informal string representation (pretty-print) More...
 
virtual std::shared_ptr< GenericMatrixcopy () const =0
 Return copy of matrix. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void axpy (double a, const GenericMatrix &A, bool same_nonzero_pattern)=0
 Add multiple of given matrix (AXPY operation) More...
 
virtual double norm (std::string norm_type) const =0
 Return norm of matrix. More...
 
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. More...
 
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. More...
 
virtual void zero (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (global row indices) to zero. More...
 
virtual void zero_local (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (local row indices) to zero. More...
 
virtual void ident (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (global row indices) to identity matrix. More...
 
virtual void ident_local (std::size_t m, const dolfin::la_index *rows)=0
 Set given rows (local row indices) to identity matrix. More...
 
virtual void transpmult (const GenericVector &x, GenericVector &y) const =0
 
virtual void get_diagonal (GenericVector &x) const =0
 Get diagonal of a matrix. More...
 
virtual void set_diagonal (const GenericVector &x)=0
 Set diagonal of a matrix. More...
 
virtual const GenericMatrixoperator*= (double a)=0
 Multiply matrix by given number. More...
 
virtual const GenericMatrixoperator/= (double a)=0
 Divide matrix by given number. More...
 
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. More...
 
virtual const GenericMatrixoperator= (const GenericMatrix &x)=0
 Assignment operator. More...
 
virtual double operator() (dolfin::la_index i, dolfin::la_index j) const
 Get value of given entry. More...
 
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. More...
 
virtual bool empty () const =0
 Return true if empty. More...
 
virtual std::size_t rank () const =0
 Return tensor rank (number of dimensions) More...
 
virtual std::size_t size (std::size_t dim) const =0
 Return size of given dimension. More...
 
virtual std::pair< std::int64_t, std::int64_t > local_range (std::size_t dim) const =0
 Return local ownership range. More...
 
virtual void get (double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows) const =0
 Get block of values. More...
 
virtual void set (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)=0
 Set block of values using global indices. More...
 
virtual void set_local (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)=0
 Set block of values using local indices. More...
 
virtual void add (const double *block, const std::vector< ArrayView< const dolfin::la_index > > &rows)=0
 Add block of values using global indices. More...
 
virtual void add_local (const double *block, const std::vector< ArrayView< const dolfin::la_index > > &rows)=0
 Add block of values using local indices. More...
 
virtual void add (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)=0
 Add block of values using global indices. More...
 
virtual void add_local (const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)=0
 Add block of values using local indices. More...
 
virtual void zero ()=0
 Set all entries to zero and keep any sparse structure. More...
 
virtual void apply (std::string mode)=0
 Finalize assembly of tensor. More...
 
virtual std::string str (bool verbose) const =0
 Return MPI communicator. More...
 
virtual GenericLinearAlgebraFactoryfactory () const =0
 Return linear algebra backend factory. More...
 
- Public Member Functions inherited from dolfin::LinearAlgebraObject
virtual const LinearAlgebraObjectinstance () const
 Return concrete instance / unwrap (const version) More...
 
virtual LinearAlgebraObjectinstance ()
 Return concrete instance / unwrap (non-const version) More...
 
virtual std::shared_ptr< const LinearAlgebraObjectshared_instance () const
 Return concrete shared ptr instance / unwrap (const version) More...
 
virtual std::shared_ptr< LinearAlgebraObjectshared_instance ()
 Return concrete shared ptr instance / unwrap (non-const version) More...
 
virtual MPI_Comm mpi_comm () const =0
 Return MPI communicator. More...
 
- 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
 
virtual std::string str (bool verbose) const
 Return informal string representation (pretty-print) More...
 
virtual std::size_t size (std::size_t dim) const =0
 Return size of given dimension. More...
 
virtual void mult (const GenericVector &x, GenericVector &y) const =0
 Compute matrix-vector product y = Ax. More...
 
virtual std::string str (bool verbose) const =0
 Return informal string representation (pretty-print) More...
 

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 sparse matrix class based on Eigen. It is a simple wrapper for Eigen::SparseMatrix implementing the GenericMatrix interface.

The interface is intentionally simple. For advanced usage, access the underlying Eigen matrix and use the standard Eigen interface which is documented at http://eigen.tuxfamily.org

Member Function Documentation

◆ add()

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

Add block of values using global indices.

Implements dolfin::GenericMatrix.

◆ add_local()

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

Add block of values using local indices.

Implements dolfin::GenericMatrix.

◆ apply()

void EigenMatrix::apply ( std::string  mode)
virtual

Finalize assembly of tensor.

Implements dolfin::GenericMatrix.

◆ axpy()

void EigenMatrix::axpy ( double  a,
const GenericMatrix A,
bool  same_nonzero_pattern 
)
virtual

Add multiple of given matrix (AXPY operation)

Implements dolfin::GenericMatrix.

◆ copy()

std::shared_ptr< GenericMatrix > EigenMatrix::copy ( ) const
virtual

Return copy of matrix.

Implements dolfin::GenericMatrix.

◆ data()

std::tuple< const int *, const int *, const double *, std::size_t > EigenMatrix::data ( ) const
virtual

Return pointers to underlying compressed storage data See GenericMatrix for documentation.

◆ empty()

virtual bool dolfin::EigenMatrix::empty ( ) const
inlinevirtual

Return true if empty.

Implements dolfin::GenericTensor.

◆ factory()

GenericLinearAlgebraFactory & EigenMatrix::factory ( ) const
virtual

Return linear algebra backend factory.

Implements dolfin::GenericTensor.

◆ get()

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

Get block of values.

Implements dolfin::GenericMatrix.

◆ get_diagonal()

void EigenMatrix::get_diagonal ( GenericVector x) const
virtual

Get diagonal of a matrix.

Implements dolfin::GenericMatrix.

◆ getrow()

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

Get non-zero values of given row.

Implements dolfin::GenericMatrix.

◆ ident()

void EigenMatrix::ident ( std::size_t  m,
const dolfin::la_index rows 
)
virtual

Set given rows to identity matrix.

Implements dolfin::GenericMatrix.

◆ ident_local()

virtual void dolfin::EigenMatrix::ident_local ( std::size_t  m,
const dolfin::la_index rows 
)
inlinevirtual

Set given rows to identity matrix.

Implements dolfin::GenericMatrix.

◆ init()

void EigenMatrix::init ( const TensorLayout tensor_layout)
virtual

Initialize zero tensor using tenor layout.

Implements dolfin::GenericTensor.

◆ init_vector()

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

Initialise vector z to be compatible with the matrix-vector product y = Ax.

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

Implements dolfin::GenericMatrix.

◆ local_range()

virtual std::pair< std::int64_t, std::int64_t > dolfin::EigenMatrix::local_range ( std::size_t  dim) const
inlinevirtual

Return local ownership range.

Implements dolfin::GenericMatrix.

◆ mpi_comm()

virtual MPI_Comm dolfin::EigenMatrix::mpi_comm ( ) const
inlinevirtual

Return MPI communicator.

Implements dolfin::LinearAlgebraObject.

◆ mult()

void EigenMatrix::mult ( const GenericVector x,
GenericVector y 
) const
virtual

Matrix-vector product, y = Ax.

Implements dolfin::GenericLinearOperator.

◆ nnz()

std::size_t EigenMatrix::nnz ( ) const
virtual

Return number of non-zero entries in matrix.

Implements dolfin::GenericMatrix.

◆ norm()

double EigenMatrix::norm ( std::string  norm_type) const
virtual

Return norm of matrix.

Implements dolfin::GenericMatrix.

◆ operator()()

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

Access value of given entry.

Reimplemented from dolfin::GenericMatrix.

◆ operator*=()

const EigenMatrix & EigenMatrix::operator*= ( double  a)
virtual

Multiply matrix by given number.

Implements dolfin::GenericMatrix.

◆ operator/=()

const EigenMatrix & EigenMatrix::operator/= ( double  a)
virtual

Divide matrix by given number.

Implements dolfin::GenericMatrix.

◆ operator=()

const GenericMatrix & EigenMatrix::operator= ( const GenericMatrix A)
virtual

Assignment operator.

Implements dolfin::GenericMatrix.

◆ set()

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

Set block of values using global indices.

Implements dolfin::GenericMatrix.

◆ set_diagonal()

void EigenMatrix::set_diagonal ( const GenericVector x)
virtual

Set diagonal of a matrix.

Implements dolfin::GenericMatrix.

◆ set_local()

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

Set block of values using local indices.

Implements dolfin::GenericMatrix.

◆ setrow()

void EigenMatrix::setrow ( std::size_t  row_idx,
const std::vector< std::size_t > &  columns,
const std::vector< double > &  values 
)
virtual

Set values for given row.

Implements dolfin::GenericMatrix.

◆ size()

std::size_t EigenMatrix::size ( std::size_t  dim) const
virtual

Return size of given dimension.

Implements dolfin::GenericMatrix.

◆ str()

std::string EigenMatrix::str ( bool  verbose) const
virtual

Return informal string representation (pretty-print)

Implements dolfin::GenericMatrix.

◆ transpmult()

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

Matrix-vector product, y = A^T x.

Implements dolfin::GenericMatrix.

◆ zero() [1/2]

void EigenMatrix::zero ( )
virtual

Set all entries to zero and keep any sparse structure.

Implements dolfin::GenericMatrix.

◆ zero() [2/2]

void EigenMatrix::zero ( std::size_t  m,
const dolfin::la_index rows 
)
virtual

Set given rows (global row indices) to zero.

Implements dolfin::GenericMatrix.

◆ zero_local()

virtual void dolfin::EigenMatrix::zero_local ( std::size_t  m,
const dolfin::la_index rows 
)
inlinevirtual

Set given rows (local row indices) to zero.

Implements dolfin::GenericMatrix.


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