MatCreateLRC#
Creates a new matrix object that behaves like A + UCV’ of type MATLRC
Synopsis#
#include "petscmat.h"
PetscErrorCode MatCreateLRC(Mat A, Mat U, Vec c, Mat V, Mat *N)
Collective
Input Parameters#
A - the (sparse) matrix (can be
NULL
)U - dense rectangular (tall and skinny) matrix
V - dense rectangular (tall and skinny) matrix
c - a vector containing the diagonal of C (can be
NULL
)
Output Parameter#
N - the matrix that represents A + UCV’
Notes#
The matrix A + UCV’ is not formed! Rather the new matrix
object performs the matrix-vector product MatMult()
, by first multiplying by
A and then adding the other term.
C
is a diagonal matrix (represented as a vector) of order k,
where k is the number of columns of both U
and V
.
If A
is NULL
then the new object behaves like a low-rank matrix UCV’.
Use V
=U
(or V
=NULL
) for a symmetric low-rank correction, A + UCU’.
If c
is NULL
then the low-rank correction is just U*V’.
If a sequential c
vector is used for a parallel matrix,
PETSc assumes that the values of the vector are consistently set across processors.
See Also#
Matrices, Mat
, MATLRC
, MatLRCGetMats()
Level#
intermediate
Location#
Examples#
src/tao/pde_constrained/tutorials/elliptic.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages