MatShellGetScalingShifts#
Gets members of a MATSHELL used internally for scaling and shifting the Mat or calling MatAXPY(), MatZeroRows(), or MatZeroRowsColumns() with it
Synopsis#
#include "petscmat.h"
PetscErrorCode MatShellGetScalingShifts(Mat A, PetscScalar *vshift, PetscScalar *vscale, Vec *dshift, Vec *left, Vec *right, Mat *axpy, IS *zrows, IS *zcols)
Logically Collective
Input Parameter#
A - the
MATSHELLshell matrix
Output Parameters#
vshift -
PetscScalarpointer (can beNULL), seeMatShift(), orMAT_SHELL_NOT_ALLOWEDif the internal shift should be 0vscale -
PetscScalarpointer (can beNULL), seeMatScale(), orMAT_SHELL_NOT_ALLOWEDif the internal scaling should be 1dshift -
Vecpointer (can beNULL), seeMatDiagonalSet(), orMAT_SHELL_NOT_ALLOWEDif the internal shift should beNULLleft -
Vecpointer (can beNULL), seeMatDiagonalScale(), orMAT_SHELL_NOT_ALLOWEDif the internal scaling should beNULLright -
Vecpointer (can beNULL), seeMatDiagonalScale(), orMAT_SHELL_NOT_ALLOWEDif the internal scaling should beNULLaxpy -
Matpointer (can beNULL), orMAT_SHELL_NOT_ALLOWEDifMatAXPY()should have not been called onAzrows -
Vecpointer (can beNULL), orMAT_SHELL_NOT_ALLOWEDifMatZeroRows()should have not been called onAzcols -
Vecpointer (can beNULL), orMAT_SHELL_NOT_ALLOWEDifMatZeroRowsColumns()should have not been called onA
Developer Notes#
This is mostly useful to check for corner-cases in MatType deriving from
MATSHELL, e.g, MATCOMPOSITE or MATTRANSPOSEVIRTUAL, since scaling and
shifts often require extra work which is not always implemented.
See Also#
Matrices, Mat, MATSHELL, MatCreateShell(), MatShift(), MatScale(), MatDiagonalSet(), MatDiagonalScale(), MatAXPY(), MatZeroRows(), MatZeroRowsColumns(), MatShellSetManageScalingShifts()
Level#
advanced
Location#
Implementations#
MatShellGetScalingShifts_Shell() in src/mat/impls/shell/shell.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages