MatGetValues — PETSc 3.23.0 documentation

Skip to main content
`Ctrl`+`K`

# MatGetValues

Gets a block of local values from a matrix.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatGetValues(Mat mat, PetscInt m, const PetscInt idxm[], PetscInt n, const PetscInt idxn[], PetscScalar v[])

Not Collective; can only return values that are owned by the give process

## Input Parameters

- mat - the matrix

- v - a logically two-dimensional array for storing the values

- m - the number of rows

- idxm - the global indices of the rows

- n - the number of columns

- idxn - the global indices of the columns

## Notes

The user must allocate space (m*n `PetscScalar`s) for the values, `v`. The values, `v`, are then returned in a row-oriented format, analogous to that used by default in `MatSetValues()`.

`MatGetValues()` uses 0-based row and column numbers in Fortran as well as in C.

`MatGetValues()` requires that the matrix has been assembled with `MatAssemblyBegin()`/`MatAssemblyEnd()`. Thus, calls to `MatSetValues()` and `MatGetValues()` CANNOT be made in succession without intermediate matrix assembly.

Negative row or column indices will be ignored and those locations in `v` will be left unchanged.

For the standard row-based matrix formats, `idxm` can only contain rows owned by the requesting MPI process. That is, rows with global index greater than or equal to rstart and less than rend where rstart and rend are obtainable from `MatGetOwnershipRange`(mat,&rstart,&rend).

## See Also

Matrices, `Mat`, `MatGetRow()`, `MatCreateSubMatrices()`, `MatSetValues()`, `MatGetOwnershipRange()`, `MatGetValuesLocal()`, `MatGetValue()`

## Level

advanced

## Location

src/mat/interface/matrix.c

## Implementations

MatGetValues_MPIAIJ() in src/mat/impls/aij/mpi/mpiaij.c
MatGetValues_SeqAIJ() in src/mat/impls/aij/seq/aij.c
MatGetValues_MPIBAIJ() in src/mat/impls/baij/mpi/mpibaij.c
MatGetValues_SeqBAIJ() in src/mat/impls/baij/seq/baij.c
MatGetValues_MPIDense() in src/mat/impls/dense/mpi/mpidense.c
MatGetValues_SeqDense() in src/mat/impls/dense/seq/dense.c
MatGetValues_HYPRE() in src/mat/impls/hypre/mhypre.c
MatGetValues_MPISBAIJ() in src/mat/impls/sbaij/mpi/mpisbaij.c
MatGetValues_SeqSBAIJ() in src/mat/impls/sbaij/seq/sbaij.c
MatGetValues_MPISELL() in src/mat/impls/sell/mpi/mpisell.c
MatGetValues_SeqSELL() in src/mat/impls/sell/seq/sell.c

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