# VecRestoreArray3dRead
Restores a vector after `VecGetArray3dRead()` has been called. 
## Synopsis
```
#include "petscvec.h"   
PetscErrorCode VecRestoreArray3dRead(Vec x, PetscInt m, PetscInt n, PetscInt p, PetscInt mstart, PetscInt nstart, PetscInt pstart, PetscScalar ***a[])
```
Logically Collective


## Input Parameters

- ***x -*** the vector
- ***m -*** first dimension of three dimensional array
- ***n -*** second dimension of the three dimensional array
- ***p -*** third dimension of the three dimensional array
- ***mstart -*** first index you will use in first coordinate direction (often 0)
- ***nstart -*** first index in the second coordinate direction (often 0)
- ***pstart -*** first index in the third coordinate direction (often 0)
- ***a -*** location of pointer to array obtained from `VecGetArray3dRead()`





## Notes
For regular PETSc vectors this routine does not involve any copies. For
any special vectors that do not store local vector data in a contiguous
array, this routine will copy the data back into the underlying
vector data structure from the array obtained with `VecGetArray()`.

This routine actually zeros out the a pointer.


## See Also
 [](chapter_vectors), `Vec`, `VecGetArray()`, `VecRestoreArray()`, `VecRestoreArrays()`, `VecRestoreArrayF90()`, `VecPlaceArray()`,
`VecGetArray2d()`, `VecGetArray3d()`, `VecRestoreArray3d()`, `DMDAVecGetArray()`, `DMDAVecRestoreArray()`
`VecGetArray1d()`, `VecRestoreArray1d()`, `VecGetArray4d()`, `VecRestoreArray4d()`, `VecGet`

## Level
developer

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/vec/interface/rvector.c.html#VecRestoreArray3dRead">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)  
