MatRARt#
Creates the matrix product \(C = R * A * R^T\)
Synopsis#
Neighbor-wise Collective
Input Parameters#
A - the matrix
R - the projection matrix
scall - either
MAT_INITIAL_MATRIXorMAT_REUSE_MATRIXfill - expected fill as ratio of nnz(C)/nnz(A), use
PETSC_DETERMINEorPETSC_CURRENTif you do not have a good estimate if the result is a dense matrix this is irrelevant
Output Parameter#
C - the product matrix
Notes#
C will be created and must be destroyed by the user with MatDestroy().
This is a convenience routine that wraps the use of the MatProductCreate() with a MatProductType of MATPRODUCT_RARt
functionality into a single function call. For more involved matrix-matrix operations see MatProductCreate().
This routine is currently only implemented for pairs of MATAIJ matrices and classes
which inherit from MATAIJ. Due to PETSc sparse matrix block row distribution among processes,
the parallel MatRARt() is implemented computing the explicit transpose of R, which can be very expensive.
We recommend using MatPtAP() when possible.
The deprecated PETSC_DEFAULT in fill also means use the current value
See Also#
Matrices, Mat, MatProductCreate(), MatMatMult(), MatPtAP()
Level#
intermediate
Location#
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages