GenericMatrix.h¶
Note
The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded.
-
class
GenericMatrix¶ Parent class(es)
This class defines a common interface for matrices.
-
std::size_t
rank() const¶ Return tensor rank (number of dimensions)
-
std::size_t
size(std::size_t dim) const = 0¶ Return size of given dimension
-
std::pair<std::int64_t, std::int64_t>
local_range(std::size_t dim) const = 0¶ Return local ownership range
-
std::size_t
nnz() const = 0¶ Return number of non-zero entries in matrix (collective)
-
void
get(double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows) const¶ Get block of values
-
void
set(const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)¶ Set block of values using global indices
-
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
-
void
add(const double *block, const dolfin::la_index *num_rows, const dolfin::la_index *const *rows)¶ Add block of values using global indices
-
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
-
void
add(const double *block, const std::vector<ArrayView<const dolfin::la_index>> &rows)¶ Add block of values using global indices
-
void
add_local(const double *block, const std::vector<ArrayView<const dolfin::la_index>> &rows)¶ Add block of values using local indices
-
void
zero() = 0¶ Set all entries to zero and keep any sparse structure
-
void
apply(std::string mode) = 0¶ Finalize assembly of tensor
-
std::string
str(bool verbose) const = 0¶ Return informal string representation (pretty-print)
-
std::shared_ptr<GenericMatrix>
copy() const = 0¶ Return copy of matrix
-
void
init_vector(GenericVector &z, std::size_t dim) const = 0¶ Initialize vector z to be compatible with the matrix-vector product y = Ax. In the parallel case, both size and layout are important.
- @param z (GenericVector&)
- Vector to initialise
- @param dim (std::size_t)
- The dimension (axis): dim = 0 –> z = y, dim = 1 –> z = x
-
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
-
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
-
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
-
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
-
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
-
void
axpy(double a, const GenericMatrix &A, bool same_nonzero_pattern) = 0¶ Add multiple of given matrix (AXPY operation)
-
double
norm(std::string norm_type) const = 0¶ Return norm of matrix
-
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
-
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
-
void
zero(std::size_t m, const dolfin::la_index *rows) = 0¶ Set given rows (global row indices) to zero
-
void
zero_local(std::size_t m, const dolfin::la_index *rows) = 0¶ Set given rows (local row indices) to zero
-
void
ident(std::size_t m, const dolfin::la_index *rows) = 0¶ Set given rows (global row indices) to identity matrix
-
void
ident_local(std::size_t m, const dolfin::la_index *rows) = 0¶ Set given rows (local row indices) to identity matrix
-
void
transpmult(const GenericVector &x, GenericVector &y) const = 0¶ Matrix-vector product, y = A^T x. The y vector must either be zero-sized or have correct size and parallel layout.
-
void
get_diagonal(GenericVector &x) const = 0¶ Get diagonal of a matrix
-
void
set_diagonal(const GenericVector &x) = 0¶ Set diagonal of a matrix
-
const GenericMatrix &
operator*=(double a) = 0¶ Multiply matrix by given number
-
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
-
bool
is_symmetric(double tol) const¶ Test if matrix is symmetric
-
const GenericMatrix &
operator=(const GenericMatrix &x) = 0¶ Assignment operator
-
double
operator()(dolfin::la_index i, dolfin::la_index j) const¶ Get value of given entry
-
double
getitem(std::pair<dolfin::la_index, dolfin::la_index> ij) const¶ Get value of given entry
-
void
setitem(std::pair<dolfin::la_index, dolfin::la_index> ij, double value)¶ Set given entry to value. apply(“insert”) must be called before using using the object.
-
void
ident_zeros(double tol = DOLFIN_EPS)¶ Insert one on the diagonal for all zero rows
-
std::size_t