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
MATSHELL
shell matrix
Output Parameters#
vshift -
PetscScalar
pointer (can beNULL
), seeMatShift()
, orMAT_SHELL_NOT_ALLOWED
if the internal shift should be 0vscale -
PetscScalar
pointer (can beNULL
), seeMatScale()
, orMAT_SHELL_NOT_ALLOWED
if the internal scaling should be 1dshift -
Vec
pointer (can beNULL
), seeMatDiagonalSet()
, orMAT_SHELL_NOT_ALLOWED
if the internal shift should beNULL
left -
Vec
pointer (can beNULL
), seeMatDiagonalScale()
, orMAT_SHELL_NOT_ALLOWED
if the internal scaling should beNULL
right -
Vec
pointer (can beNULL
), seeMatDiagonalScale()
, orMAT_SHELL_NOT_ALLOWED
if the internal scaling should beNULL
axpy -
Mat
pointer (can beNULL
), orMAT_SHELL_NOT_ALLOWED
ifMatAXPY()
should have not been called onA
zrows -
Vec
pointer (can beNULL
), orMAT_SHELL_NOT_ALLOWED
ifMatZeroRows()
should have not been called onA
zcols -
Vec
pointer (can beNULL
), orMAT_SHELL_NOT_ALLOWED
ifMatZeroRowsColumns()
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 MATVIRTUALTRANSPOSE
, 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