Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

dolfin::Matrix Class Reference

#include <Matrix.h>

Inheritance diagram for dolfin::Matrix:

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

Collaboration graph
[legend]
List of all members.

Public Types

enum  Type { sparse, dense, generic }
 Matrix type, sparse or dense. More...


Public Member Functions

 Matrix (Type type=sparse)
 Create an empty matrix.

 Matrix (unsigned int m, unsigned int n, Type type=sparse)
 Create matrix with given dimensions.

 Matrix (const Matrix &A)
 Create a copy of a given matrix.

virtual ~Matrix ()
 Destructor.

virtual void init (unsigned int m, unsigned int n, Type type=sparse)
 --- Basic operations --- Initialize to a zero matrix with given dimensions

virtual void clear ()
 Clear all data.

virtual Type type () const
 Return matrix type, sparse or dense.

virtual unsigned int size (unsigned int dim) const
 Return number of rows (dim = 0) or columns (dim = 1) along dimension dim.

virtual unsigned int size () const
 Return number of non-zero elements (only sparse).

virtual unsigned int rowsize (unsigned int i) const
 Return number of non-zero elements on row i (only sparse).

virtual unsigned int bytes () const
 Return size of matrix in bytes (approximately).

virtual real operator() (unsigned int i, unsigned int j) const
 --- Operators --- Index operator

virtual Element operator() (unsigned int i, unsigned int j)
 Index operator.

virtual Row operator() (unsigned int i, Range j)
 Index operator.

virtual Row operator() (Index i, Range j)
 Index operator.

virtual Column operator() (Range i, unsigned int j)
 Index operator.

virtual Column operator() (Range i, Index j)
 Index operator.

virtual realoperator[] (unsigned int i) const
 Index operator (only dense, quick access).

virtual real operator() (unsigned int i, unsigned int &j, unsigned int pos) const
 Index operator (only sparse, quick access).

virtual void operator= (real a)
 Assignment from scalar (affects only already non-zero elements for sparse).

virtual void operator= (const Matrix &A)
 Assignment from a given matrix.

virtual void operator+= (const Matrix &A)
 Add a given matrix.

virtual void operator-= (const Matrix &A)
 Subtract a given matrix.

virtual void operator *= (real a)
 Multiplication with a given scalar.

virtual real norm () const
 --- Matrix operations --- Compute maximum norm

virtual real mult (const Vector &x, unsigned int i) const
 Matrix-vector multiplication, component i of Ax.

virtual void mult (const Vector &x, Vector &Ax) const
 Matrix-vector multiplication.

virtual void multt (const Vector &x, Vector &Ax) const
 Matrix-vector multiplication with transpose.

virtual void mult (const Matrix &B, Matrix &AB) const
 Matrix-matrix multiplication.

virtual real multrow (const Vector &x, unsigned int i) const
 Scalar product with row.

virtual real multcol (const Vector &x, unsigned int j) const
 Scalar product with column.

virtual void transp (Matrix &At) const
 Compute transpose.

virtual void solve (Vector &x, const Vector &b)
 Solve Ax = b (in-place LU for dense and Krylov for sparse).

virtual void inverse (Matrix &Ainv)
 Compute inverse (only dense).

virtual void hpsolve (Vector &x, const Vector &b) const
 Solve Ax = b with high precision (only dense, not in-place).

virtual void lu ()
 Compute LU factorization (only dense, in-place).

virtual void solveLU (Vector &x, const Vector &b) const
 Solve A x = b using a computed lu factorization (only dense).

virtual void inverseLU (Matrix &Ainv) const
 Compute inverse using a computed lu factorization (only dense).

virtual void hpsolveLU (const Matrix &LU, Vector &x, const Vector &b) const
 Solve A x = b high precision using computed lu factorization (only dense).

virtual void resize ()
 --- Special functions --- Clear unused elements (only sparse)

virtual void ident (unsigned int i)
 Set A(i,j) = d_{ij} on row i.

virtual void lump (Vector &a) const
 Compute lumped matrix and put result in the given vector.

virtual void addrow ()
 Add a new row.

virtual void addrow (const Vector &x)
 Add a new row given by a vector.

virtual void initrow (unsigned int i, unsigned int rowsize)
 Specify number of non-zero elements on row i (only sparse).

virtual bool endrow (unsigned int i, unsigned int pos) const
 True if we have reached the end of the row (only sparse).

virtual void settransp (const Matrix &A)
 Set this matrix to the transpose of the given matrix.

virtual real rowmax (unsigned int i) const
 Compute maximum element in given row.

virtual real colmax (unsigned int i) const
 Compute maximum element in given row.

virtual real rowmin (unsigned int i) const
 Compute minimum element in given row.

virtual real colmin (unsigned int i) const
 Compute minimum element in given column.

virtual real rowsum (unsigned int i) const
 Compute sum of given row.

virtual real colsum (unsigned int i) const
 Compute sum of given row.

virtual real rownorm (unsigned int i, unsigned int type) const
 Compute norm of given row: 0 for inf, 1 for l1, and 2 for l2.

virtual real colnorm (unsigned int i, unsigned int type) const
 Compute norm of given column: 0 for inf, 1 for l1, and 2 for l2.

virtual void show () const
 --- Output --- Display entire matrix


Friends

class DirectSolver
class Element
LogStreamoperator<< (LogStream &stream, const Matrix &A)
 Condensed information in one line.


Detailed Description

Matrix with given number of rows and columns that can be either sparse (default) or dense.

Some of the operations only work on one type of matrix, like the LU factorization which is implemented only for a dense matrix. Such functions are marked by

(only dense) or (only sparse)

Using a sparse function on a dense matrix (or the opposite) will give a warning or an error.


Member Enumeration Documentation

enum dolfin::Matrix::Type
 

Matrix type, sparse or dense.

Enumeration values:
sparse 
dense 
generic 


Constructor & Destructor Documentation

Matrix::Matrix Type  type = sparse  ) 
 

Create an empty matrix.

Matrix::Matrix unsigned int  m,
unsigned int  n,
Type  type = sparse
 

Create matrix with given dimensions.

Matrix::Matrix const Matrix A  ) 
 

Create a copy of a given matrix.

Matrix::~Matrix  )  [virtual]
 

Destructor.


Member Function Documentation

void Matrix::addrow const Vector x  )  [virtual]
 

Add a new row given by a vector.

void Matrix::addrow  )  [virtual]
 

Add a new row.

unsigned int Matrix::bytes  )  const [virtual]
 

Return size of matrix in bytes (approximately).

void Matrix::clear  )  [virtual]
 

Clear all data.

real Matrix::colmax unsigned int  i  )  const [virtual]
 

Compute maximum element in given row.

real Matrix::colmin unsigned int  i  )  const [virtual]
 

Compute minimum element in given column.

real Matrix::colnorm unsigned int  i,
unsigned int  type
const [virtual]
 

Compute norm of given column: 0 for inf, 1 for l1, and 2 for l2.

real Matrix::colsum unsigned int  i  )  const [virtual]
 

Compute sum of given row.

bool Matrix::endrow unsigned int  i,
unsigned int  pos
const [virtual]
 

True if we have reached the end of the row (only sparse).

void Matrix::hpsolve Vector x,
const Vector b
const [virtual]
 

Solve Ax = b with high precision (only dense, not in-place).

void Matrix::hpsolveLU const Matrix LU,
Vector x,
const Vector b
const [virtual]
 

Solve A x = b high precision using computed lu factorization (only dense).

void Matrix::ident unsigned int  i  )  [virtual]
 

Set A(i,j) = d_{ij} on row i.

void Matrix::init unsigned int  m,
unsigned int  n,
Type  type = sparse
[virtual]
 

--- Basic operations --- Initialize to a zero matrix with given dimensions

void Matrix::initrow unsigned int  i,
unsigned int  rowsize
[virtual]
 

Specify number of non-zero elements on row i (only sparse).

void Matrix::inverse Matrix Ainv  )  [virtual]
 

Compute inverse (only dense).

void Matrix::inverseLU Matrix Ainv  )  const [virtual]
 

Compute inverse using a computed lu factorization (only dense).

void Matrix::lu  )  [virtual]
 

Compute LU factorization (only dense, in-place).

void Matrix::lump Vector a  )  const [virtual]
 

Compute lumped matrix and put result in the given vector.

void Matrix::mult const Matrix B,
Matrix AB
const [virtual]
 

Matrix-matrix multiplication.

void Matrix::mult const Vector x,
Vector Ax
const [virtual]
 

Matrix-vector multiplication.

Reimplemented in MyMatrix.

real Matrix::mult const Vector x,
unsigned int  i
const [virtual]
 

Matrix-vector multiplication, component i of Ax.

real Matrix::multcol const Vector x,
unsigned int  j
const [virtual]
 

Scalar product with column.

real Matrix::multrow const Vector x,
unsigned int  i
const [virtual]
 

Scalar product with row.

void Matrix::multt const Vector x,
Vector Ax
const [virtual]
 

Matrix-vector multiplication with transpose.

real Matrix::norm  )  const [virtual]
 

--- Matrix operations --- Compute maximum norm

void Matrix::operator *= real  a  )  [virtual]
 

Multiplication with a given scalar.

real Matrix::operator() unsigned int  i,
unsigned int &  j,
unsigned int  pos
const [virtual]
 

Index operator (only sparse, quick access).

Matrix::Column Matrix::operator() Range  i,
Index  j
[virtual]
 

Index operator.

Matrix::Column Matrix::operator() Range  i,
unsigned int  j
[virtual]
 

Index operator.

Matrix::Row Matrix::operator() Index  i,
Range  j
[virtual]
 

Index operator.

Matrix::Row Matrix::operator() unsigned int  i,
Range  j
[virtual]
 

Index operator.

Matrix::Element Matrix::operator() unsigned int  i,
unsigned int  j
[virtual]
 

Index operator.

real Matrix::operator() unsigned int  i,
unsigned int  j
const [virtual]
 

--- Operators --- Index operator

void Matrix::operator+= const Matrix A  )  [virtual]
 

Add a given matrix.

void Matrix::operator-= const Matrix A  )  [virtual]
 

Subtract a given matrix.

void Matrix::operator= const Matrix A  )  [virtual]
 

Assignment from a given matrix.

void Matrix::operator= real  a  )  [virtual]
 

Assignment from scalar (affects only already non-zero elements for sparse).

real * Matrix::operator[] unsigned int  i  )  const [virtual]
 

Index operator (only dense, quick access).

void Matrix::resize  )  [virtual]
 

--- Special functions --- Clear unused elements (only sparse)

real Matrix::rowmax unsigned int  i  )  const [virtual]
 

Compute maximum element in given row.

real Matrix::rowmin unsigned int  i  )  const [virtual]
 

Compute minimum element in given row.

real Matrix::rownorm unsigned int  i,
unsigned int  type
const [virtual]
 

Compute norm of given row: 0 for inf, 1 for l1, and 2 for l2.

unsigned int Matrix::rowsize unsigned int  i  )  const [virtual]
 

Return number of non-zero elements on row i (only sparse).

real Matrix::rowsum unsigned int  i  )  const [virtual]
 

Compute sum of given row.

void Matrix::settransp const Matrix A  )  [virtual]
 

Set this matrix to the transpose of the given matrix.

void Matrix::show  )  const [virtual]
 

--- Output --- Display entire matrix

unsigned int Matrix::size  )  const [virtual]
 

Return number of non-zero elements (only sparse).

unsigned int Matrix::size unsigned int  dim  )  const [virtual]
 

Return number of rows (dim = 0) or columns (dim = 1) along dimension dim.

void Matrix::solve Vector x,
const Vector b
[virtual]
 

Solve Ax = b (in-place LU for dense and Krylov for sparse).

void Matrix::solveLU Vector x,
const Vector b
const [virtual]
 

Solve A x = b using a computed lu factorization (only dense).

void Matrix::transp Matrix At  )  const [virtual]
 

Compute transpose.

Matrix::Type Matrix::type  )  const [virtual]
 

Return matrix type, sparse or dense.


Friends And Related Function Documentation

friend class DirectSolver [friend]
 

friend class Element [friend]
 

LogStream& operator<< LogStream stream,
const Matrix A
[friend]
 

Condensed information in one line.


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


Documentation automatically generated with Doxygen on 10 Sep 2004.