MatSetSizes#
Sets the local and global sizes, and checks to determine compatibility
Synopsis#
#include "petscmat.h"
PetscErrorCode MatSetSizes(Mat A, PetscInt m, PetscInt n, PetscInt M, PetscInt N)
Collective
Input Parameters#
A - the matrix
m - number of local rows (or
PETSC_DECIDE
)n - number of local columns (or
PETSC_DECIDE
)M - number of global rows (or
PETSC_DETERMINE
)N - number of global columns (or
PETSC_DETERMINE
)
Notes#
m
(n
) and M
(N
) cannot be both PETSC_DECIDE
If one processor calls this with M
(N
) of PETSC_DECIDE
then all processors must, otherwise the program will hang.
If PETSC_DECIDE
is not used for the arguments ‘m’ and ‘n’, then the
user must ensure that they are chosen to be compatible with the
vectors. To do this, one first considers the matrix-vector product
‘y = A x’. The m
that is used in the above routine must match the
local size used in the vector creation routine VecCreateMPI()
for ‘y’.
Likewise, the n
used must match that used as the local size in
VecCreateMPI()
for ‘x’.
If m
and n
are not PETSC_DECIDE
, then the values determine the PetscLayout
of the matrix and the ranges returned by
MatGetOwnershipRange()
, MatGetOwnershipRanges()
, MatGetOwnershipRangeColumn()
, and MatGetOwnershipRangesColumn()
.
You cannot change the sizes once they have been set.
The sizes must be set before MatSetUp()
or MatXXXSetPreallocation() is called.
See Also#
Matrices, Mat
, MatGetSize()
, PetscSplitOwnership()
, MatGetOwnershipRange()
, MatGetOwnershipRanges()
,
MatGetOwnershipRangeColumn()
, MatGetOwnershipRangesColumn()
, PetscLayout
, VecSetSizes()
Level#
beginner
Location#
Examples#
src/ksp/ksp/tutorials/ex5.c
src/ksp/ksp/tutorials/ex53.c
src/ksp/ksp/tutorials/ex60.c
src/ksp/ksp/tutorials/ex64.c
src/ksp/ksp/tutorials/ex85.c
src/ksp/ksp/tutorials/ex16.c
src/ksp/ksp/tutorials/ex12.c
src/ksp/ksp/tutorials/ex77.c
src/ksp/ksp/tutorials/ex76f.F90
src/ksp/ksp/tutorials/ex11.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages