Loading...
Searching...
No Matches
dolfin::PETScMatrix Class Reference

`#include <PETScMatrix.h>`

Inheritance diagram for dolfin::PETScMatrix:
[legend]
Collaboration diagram for dolfin::PETScMatrix:
[legend]

## Public Member Functions

| PETScMatrix ()
| Create empty matrix (on MPI_COMM_WORLD).
| PETScMatrix (MPI_Comm comm)
| Create empty matrix.
| PETScMatrix (Mat A)
| PETScMatrix (const PETScMatrix &A)
| Copy constructor.
virtual | ~PETScMatrix ()
| Destructor.
void | init (const TensorLayout &tensor_layout)
| Initialize zero tensor using tensor layout.
bool | is_nest ()
| Check is the matrix as nest type.
void | set_nest (std::vector< Mat > mats)
| Initialize or update a nested matrix from the list of its blocks.
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)
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< GenericMatrix > | copy () 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).
double | norm (std::string norm_type) const
| Return norm of matrix.
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 PETScMatrix & | operator*= (double a)
| Multiply matrix by given number.
virtual const PETScMatrix & | operator/= (double a)
| Divide matrix by given number.
virtual const GenericMatrix & | operator= (const GenericMatrix &A)
| Assignment operator.
virtual bool | is_symmetric (double tol) const
| Test if matrix is symmetric.
virtual GenericLinearAlgebraFactory & | factory () const
| Return linear algebra backend factory.
void | set_options_prefix (std::string options_prefix)
std::string | get_options_prefix () const
void | set_from_options ()
| Call PETSc function MatSetFromOptions on the PETSc Mat object.
const PETScMatrix & | operator= (const PETScMatrix &A)
| Assignment operator.
void | set_nullspace (const VectorSpaceBasis &nullspace)
void | set_near_nullspace (const VectorSpaceBasis &nullspace)
void | binary_dump (std::string file_name) const
| Dump matrix to PETSc binary format.
void | convert_to_aij ()
| Convert matrix to AIJ format.
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 GenericMatrix & | operator+= (const GenericMatrix &A)
| Add given matrix.
const GenericMatrix & | operator-= (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 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).
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 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
Public Member Functions inherited from dolfin::PETScBaseMatrix
| PETScBaseMatrix ()
| Constructor.
| PETScBaseMatrix (Mat A)
| Constructor.
| PETScBaseMatrix (const PETScBaseMatrix &A)
| Copy constructor.
| ~PETScBaseMatrix ()
| Destructor.
std::size_t | size (std::size_t dim) const
| Return number of rows (dim = 0) or columns (dim = 1).
std::pair< std::int64_t, std::int64_t > | size () const
std::pair< std::int64_t, std::int64_t > | local_range (std::size_t dim) const
| Return local range along dimension dim.
void | init_vector (GenericVector &z, std::size_t dim) const
Mat | mat () const
| Return PETSc Mat pointer.
MPI_Comm | mpi_comm () const
| Return the MPI communicator.
Public Member Functions inherited from dolfin::PETScObject
| PETScObject ()
| Constructor. Ensures that PETSc has been initialised.
virtual | ~PETScObject ()
| Destructor.

## Additional Inherited Members

Static Public Member Functions inherited from dolfin::PETScObject
static void | petsc_error (int error_code, std::string filename, std::string petsc_function)
| Print error message for PETSc calls that return an error.
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)
Protected Attributes inherited from dolfin::PETScBaseMatrix
Mat | _matA

## Detailed Description

This class provides a simple matrix class based on PETSc. It is a wrapper for a PETSc matrix pointer (Mat) implementing the GenericMatrix interface.

The interface is intentionally simple. For advanced usage, access the PETSc Mat pointer using the function mat() and use the standard PETSc interface.

## Constructor & Destructor Documentation

## PETScMatrix()

PETScMatrix::PETScMatrix | ( | Mat | A | ) |

explicit

Create a wrapper around a PETSc Mat pointer. The Mat object should have been created, e.g. via PETSc MatCreate.

## Member Function Documentation

## add()

void PETScMatrix::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()

void PETScMatrix::add_local | ( | 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 local indices.

Implements dolfin::GenericMatrix.

## apply()

void PETScMatrix::apply | ( | std::string | mode | ) |

virtual

Finalize assembly of tensor. The following values are recognized for the mode parameter:

add - corresponds to PETSc MatAssemblyBegin+End(MAT_FINAL_ASSEMBLY) insert - corresponds to PETSc MatAssemblyBegin+End(MAT_FINAL_ASSEMBLY) flush - corresponds to PETSc MatAssemblyBegin+End(MAT_FLUSH_ASSEMBLY)

Implements dolfin::GenericMatrix.

## axpy()

void PETScMatrix::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 > PETScMatrix::copy | ( |  | ) | const

virtual

Return copy of matrix.

Implements dolfin::GenericMatrix.

## empty()

bool PETScMatrix::empty | ( |  | ) | const

virtual

Return true if empty.

Implements dolfin::GenericTensor.

## factory()

GenericLinearAlgebraFactory & PETScMatrix::factory | ( |  | ) | const

virtual

Return linear algebra backend factory.

Implements dolfin::GenericTensor.

## get()

void PETScMatrix::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 PETScMatrix::get_diagonal | ( | GenericVector & | x | ) | const

virtual

Get diagonal of a matrix.

Implements dolfin::GenericMatrix.

## get_options_prefix()

std::string PETScMatrix::get_options_prefix | ( |  | ) | const

Returns the prefix used by PETSc when searching the options database

## getrow()

void PETScMatrix::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 PETScMatrix::ident | ( | std::size_t | m,
|  | const dolfin::la_index * | rows )

virtual

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

Implements dolfin::GenericMatrix.

## ident_local()

void PETScMatrix::ident_local | ( | std::size_t | m,
|  | const dolfin::la_index * | rows )

virtual

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

Implements dolfin::GenericMatrix.

## init()

void PETScMatrix::init | ( | const TensorLayout & | tensor_layout | ) |

virtual

Initialize zero tensor using tensor layout.

Implements dolfin::GenericTensor.

## init_vector()

virtual void dolfin::PETScMatrix::init_vector | ( | GenericVector & | z,
|  | std::size_t | dim ) const

inline 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.

## is_symmetric()

bool PETScMatrix::is_symmetric | ( | double | tol | ) | const

virtual

Test if matrix is symmetric.

Reimplemented from dolfin::GenericMatrix.

## local_range()

std::pair< std::int64_t, std::int64_t > dolfin::PETScMatrix::local_range | ( | std::size_t | dim | ) | const

inline virtual

Return local ownership range.

Implements dolfin::GenericMatrix.

## mpi_comm()

MPI_Comm PETScMatrix::mpi_comm | ( |  | ) | const

virtual

Return MPI communicator.

Implements dolfin::LinearAlgebraObject.

## mult()

void PETScMatrix::mult | ( | const GenericVector & | x,
|  | GenericVector & | y ) const

virtual

Compute matrix-vector product y = Ax.

Implements dolfin::GenericLinearOperator.

Reimplemented in dolfin::PETScNestMatrix.

## nnz()

std::size_t PETScMatrix::nnz | ( |  | ) | const

virtual

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

Implements dolfin::GenericMatrix.

## norm()

double PETScMatrix::norm | ( | std::string | norm_type | ) | const

virtual

Return norm of matrix.

Implements dolfin::GenericMatrix.

## operator*=()

const PETScMatrix & PETScMatrix::operator*= | ( | double | a | ) |

virtual

Multiply matrix by given number.

Implements dolfin::GenericMatrix.

## operator/=()

const PETScMatrix & PETScMatrix::operator/= | ( | double | a | ) |

virtual

Divide matrix by given number.

Implements dolfin::GenericMatrix.

## operator=()

const GenericMatrix & PETScMatrix::operator= | ( | const GenericMatrix & | A | ) |

virtual

Assignment operator.

Implements dolfin::GenericMatrix.

## set()

void PETScMatrix::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 PETScMatrix::set_diagonal | ( | const GenericVector & | x | ) |

virtual

Set diagonal of a matrix.

Implements dolfin::GenericMatrix.

## set_local()

void PETScMatrix::set_local | ( | 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 local indices.

Implements dolfin::GenericMatrix.

## set_near_nullspace()

void PETScMatrix::set_near_nullspace | ( | const VectorSpaceBasis & | nullspace | ) |

Attach near nullspace to matrix (used by preconditioners, such as smoothed aggregation algerbraic multigrid)

## set_nullspace()

void PETScMatrix::set_nullspace | ( | const VectorSpaceBasis & | nullspace | ) |

Attach nullspace to matrix (typically used by Krylov solvers when solving singular systems)

## set_options_prefix()

void PETScMatrix::set_options_prefix | ( | std::string | options_prefix | ) |

Sets the prefix used by PETSc when searching the options database

## setrow()

void PETScMatrix::setrow | ( | std::size_t | row,
|  | 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 dolfin::PETScMatrix::size | ( | std::size_t | dim | ) | const

inline virtual

Return size of given dimension.

Implements dolfin::GenericMatrix.

Reimplemented in dolfin::PETScNestMatrix.

## str()

std::string PETScMatrix::str | ( | bool | verbose | ) | const

virtual

Return informal string representation (pretty-print).

Implements dolfin::GenericMatrix.

Reimplemented in dolfin::PETScNestMatrix.

## transpmult()

void PETScMatrix::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.

## zero() [1/2]

void PETScMatrix::zero | ( |  | ) |

virtual

Set all entries to zero and keep any sparse structure.

Implements dolfin::GenericMatrix.

## zero() [2/2]

void PETScMatrix::zero | ( | std::size_t | m,
|  | const dolfin::la_index * | rows )

virtual

Set given rows (global row indices) to zero.

Implements dolfin::GenericMatrix.

## zero_local()

void PETScMatrix::zero_local | ( | std::size_t | m,
|  | const dolfin::la_index * | rows )

virtual

Set given rows (local row indices) to zero.

Implements dolfin::GenericMatrix.

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

- /build/dolfin-lFBzDh/dolfin-2019.2.0~legacy20240219.1c52e83/dolfin/la/PETScMatrix.h
- /build/dolfin-lFBzDh/dolfin-2019.2.0~legacy20240219.1c52e83/dolfin/la/PETScMatrix.cpp