DOLFIN
DOLFIN C++ interface
|
This class defines a common interface for matrices. More...
#include <GenericMatrix.h>
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< GenericMatrix > | copy () 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 GenericMatrix & | operator*= (double a)=0 |
Multiply matrix by given number. | |
virtual const GenericMatrix & | operator/= (double a)=0 |
Divide matrix by given number. | |
const GenericMatrix & | operator+= (const GenericMatrix &A) |
Add given matrix. | |
const GenericMatrix & | operator-= (const GenericMatrix &A) |
Subtract given matrix. | |
virtual bool | is_symmetric (double tol) const |
Test if matrix is symmetric. | |
virtual const GenericMatrix & | operator= (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. | |
![]() | |
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 GenericLinearAlgebraFactory & | factory () const =0 |
Return linear algebra backend factory. | |
![]() | |
virtual const LinearAlgebraObject * | instance () const |
Return concrete instance / unwrap (const version) | |
virtual LinearAlgebraObject * | instance () |
Return concrete instance / unwrap (non-const version) | |
virtual std::shared_ptr< const LinearAlgebraObject > | shared_instance () const |
Return concrete shared ptr instance / unwrap (const version) | |
virtual std::shared_ptr< LinearAlgebraObject > | shared_instance () |
Return concrete shared ptr instance / unwrap (non-const version) | |
virtual MPI_Comm | mpi_comm () const =0 |
Return MPI communicator. | |
![]() | |
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 Variable & | operator= (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 void | mult (const GenericVector &x, GenericVector &y) const =0 |
Compute matrix-vector product y = Ax. | |
Additional Inherited Members | |
![]() | |
Parameters | parameters |
Parameters. | |
![]() | |
virtual void | init_layout (const GenericVector &x, const GenericVector &y, GenericLinearOperator *wrapper) |
This class defines a common interface for matrices.
|
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.
z | (GenericVector&) Vector to initialise |
dim | (std::size_t) The dimension (axis): dim = 0 –> z = y, dim = 1 –> z = x |
Implemented in dolfin::PETScMatrix, dolfin::TpetraMatrix, dolfin::EigenMatrix, and dolfin::Matrix.
|
inlinevirtual |
Set given entry to value. apply("insert") must be called before using using the object.
|
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::PETScMatrix, dolfin::Matrix, dolfin::TpetraMatrix, and dolfin::EigenMatrix.