# VecGetArray2d
Returns a pointer to a 2d contiguous array that contains this processor's portion of the vector data.  You MUST call `VecRestoreArray2d()` when you no longer need access to the array. 
## Synopsis
```
#include "petscvec.h"   
PetscErrorCode VecGetArray2d(Vec x, PetscInt m, PetscInt n, PetscInt mstart, PetscInt nstart, PetscScalar **a[])
```
Logically Collective


## Input Parameters

- ***x -*** the vector
- ***m -*** first dimension of two dimensional array
- ***n -*** second dimension of two dimensional array
- ***mstart -*** first index you will use in first coordinate direction (often 0)
- ***nstart -*** first index in the second coordinate direction (often 0)



## Output Parameter

- ***a -*** location to put pointer to the array





## Notes
For a vector obtained from `DMCreateLocalVector()` mstart and nstart are likely
obtained from the corner indices obtained from `DMDAGetGhostCorners()` while for
`DMCreateGlobalVector()` they are the corner indices from `DMDAGetCorners()`. In both cases
the arguments from `DMDAGet[Ghost]Corners()` are reversed in the call to `VecGetArray2d()`.

For standard PETSc vectors this is an inexpensive call; it does not copy the vector values.


## See Also
 [](chapter_vectors), `Vec`, `VecGetArray()`, `VecRestoreArray()`, `VecGetArrays()`, `VecGetArrayF90()`, `VecPlaceArray()`,
`VecRestoreArray2d()`, `DMDAVecGetArray()`, `DMDAVecRestoreArray()`, `VecGetArray3d()`, `VecRestoreArray3d()`,
`VecGetArray1d()`, `VecRestoreArray1d()`, `VecGetArray4d()`, `VecRestoreArray4d()`

## Level
developer

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/vec/interface/rvector.c.html#VecGetArray2d">src/vec/vec/interface/rvector.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/vec/vec/interface/rvector.c)


[Index of all Vec routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
