petsc-3.8.4 2018-03-24
Report Typos and Errors

MatCreateLRC

Creates a new matrix object that behaves like A + U*C*V'

Synopsis

#include "petscmat.h" 
PetscErrorCode MatCreateLRC(Mat A,Mat U,Vec c,Mat V,Mat *N)
Collective on Mat

Input Parameters

A - the (sparse) matrix (can be NULL)
U, V - two dense rectangular (tall and skinny) matrices
c - a sequential vector containing the diagonal of C (can be NULL)

Output Parameter

N -the matrix that represents A + U*C*V'

Notes

The matrix A + U*C*V' is not formed! Rather the new matrix object performs the matrix-vector product 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 U*C*V'.

Use V=U (or V=NULL) for a symmetric low-rank correction, A + U*C*U'.

If c is NULL then the low-rank correction is just U*V'.

See Also

MatLRCGetMats()

Level:intermediate
Location:
src/mat/impls/lrc/lrc.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages

Examples

src/tao/pde_constrained/examples/tutorials/elliptic.c.html