petsc-3.12.5 2020-03-29
Report Typos and Errors

MatRARt

Creates the matrix product C = R * A * R^T

Synopsis

#include "petscmat.h" 
PetscErrorCode MatRARt(Mat A,Mat R,MatReuse scall,PetscReal fill,Mat *C)
Neighbor-wise Collective on Mat

Input Parameters

A - the matrix
R - the projection matrix
scall - either MAT_INITIAL_MATRIX or MAT_REUSE_MATRIX
fill - expected fill as ratio of nnz(C)/nnz(A), use PETSC_DEFAULT if you do not have a good estimate if the result is a dense matrix this is irrelevent

Output Parameters

C -the product matrix

Notes

C will be created and must be destroyed by the user with MatDestroy().

This routine is currently only implemented for pairs of AIJ matrices and classes which inherit from AIJ. Due to PETSc sparse matrix block row distribution among processes, parallel MatRARt is implemented via explicit transpose of R, which could be very expensive. We recommend using MatPtAP().

See Also

MatRARtSymbolic(), MatRARtNumeric(), MatMatMult(), MatPtAP()

Level

intermediate

Location

src/mat/interface/matrix.c

Implementations

MatRARt_MPIAIJ_MPIAIJ in src/mat/impls/aij/mpi/mpimatmatmatmult.c
MatRARt_SeqAIJ_SeqAIJ in src/mat/impls/aij/seq/matrart.c

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages