Skip to main content
`Ctrl`+`K`

# VecGetArrayRead

Get read-only pointer to contiguous array containing this processor’s portion of the vector data.

## Synopsis

    #include "petscvec.h"
    PetscErrorCode VecGetArrayRead(Vec x, const PetscScalar *a[])

Not Collective

## Input Parameter

- x - the vector

## Output Parameter

- a - the array

## Notes

The array must be returned using a matching call to `VecRestoreArrayRead()`.

Unlike `VecGetArray()`, preserves cached information like vector norms.

Standard PETSc vectors use contiguous storage so that this routine does not perform a copy. Other vector implementations may require a copy, but such implementations should cache the contiguous representation so that only one copy is performed when this routine is called multiple times in sequence.

For vectors that may also have the array data in GPU memory, for example, `VECCUDA`, this call ensures the CPU array has the most recent array values by copying the data from the GPU memory if needed.

## See Also

Vectors and Parallel Data, `Vec`, `VecGetArray()`, `VecRestoreArray()`, `VecGetArrayPair()`, `VecRestoreArrayPair()`, `VecGetArrayAndMemType()`

## Level

beginner

## Location

src/vec/vec/interface/rvector.c

## Examples

src/dm/tutorials/swarm_ex3.c
src/dm/impls/plex/tutorials/ex8.c
src/ksp/ksp/tutorials/ex35.cxx
src/ksp/ksp/tutorials/ex71.c
src/dm/tutorials/ex22.c
src/ksp/ksp/tutorials/ex70.c
src/dm/impls/plex/tutorials/ex6.c
src/dm/field/tutorials/ex1.c
src/ksp/ksp/tutorials/ex36.cxx
src/dm/impls/plex/tutorials/ex15.c

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