Skip to main content
`Ctrl`+`K`

# VecGetArray

Returns a pointer to a contiguous array that contains this MPI processes’s portion of the vector data

## Synopsis

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

Logically Collective

## Input Parameter

- x - the vector

## Output Parameter

- a - location to put pointer to the array

## Notes

For the standard PETSc vectors, `VecGetArray()` returns a pointer to the local data array and does not use any copies. If the underlying vector data is not stored in a contiguous array this routine will copy the data to a contiguous array and return a pointer to that. You MUST call `VecRestoreArray()` when you no longer need access to the array.

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.

## Fortran Note

      PetscScalar, pointer :: a(:)

## See Also

Vectors and Parallel Data, `Vec`, `VecRestoreArray()`, `VecGetArrayRead()`, `VecGetArrays()`, `VecPlaceArray()`, `VecGetArray2d()`, `VecGetArrayPair()`, `VecRestoreArrayPair()`, `VecGetArrayWrite()`, `VecRestoreArrayWrite()`, `VecGetArrayAndMemType()`

## Level

beginner

## Location

src/vec/vec/interface/rvector.c

## Examples

src/ksp/ksp/tutorials/ex69.c
src/ksp/ksp/tutorials/ex72.c
src/ksp/ksp/tutorials/ex49.c
src/ksp/ksp/tutorials/ex56.c
src/dm/field/tutorials/ex1.c
src/ksp/ksp/tutorials/ex71.c
src/ksp/ksp/tutorials/ex11.c
src/ksp/ksp/tutorials/ex68.c
src/dm/tutorials/ex6.c
src/dm/tutorials/ex5.c

## Implementations

VecGetArray_Nest() in src/vec/vec/impls/nest/vecnest.c
VecGetArray_SeqKokkos() in src/vec/vec/impls/seq/kokkos/veckok.kokkos.cxx
VecGetArray_SeqViennaCL() in src/vec/vec/impls/seq/seqviennacl/vecviennacl.cxx

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