# DMGetGlobalVector
Gets a PETSc vector that may be used with the `DM` global routines.
## Synopsis
```
#include "petscdm.h"
PetscErrorCode DMGetGlobalVector(DM dm, Vec *g)
```
Collective on dm
## Input Parameter
- ***dm -*** the dm
## Output Parameter
- ***g -*** the global vector
## Note
The vector values are NOT initialized and may have garbage in them, so you may need
to zero them.
The output parameter, g, is a regular PETSc vector that should be returned with
`DMRestoreGlobalVector()` DO NOT call `VecDestroy()` on it.
This is intended to be used for vectors you need for a short time, like within a single function call.
For vectors that you intend to keep around (for example in a C struct) or pass around large parts of your
code you should use `DMCreateGlobalVector()`.
VecStride*() operations can be useful when using `DM` with dof > 1
## See Also
`DM`, `DMCreateGlobalVector()`, `VecDuplicate()`, `VecDuplicateVecs()`,
`DMDACreate1d()`, `DMDACreate2d()`, `DMDACreate3d()`, `DMGlobalToLocalBegin()`,
`DMGlobalToLocalEnd()`, `DMLocalToGlobalBegin()`, `DMCreateLocalVector()`, `DMRestoreLocalVector()`
`VecStrideMax()`, `VecStrideMin()`, `VecStrideNorm()`
## Level
beginner
## Location
src/dm/interface/dmget.c
## Examples
src/dm/impls/plex/tutorials/ex1.c.html
src/dm/impls/plex/tutorials/ex1f90.F90.html
src/dm/impls/plex/tutorials/ex7.c.html
src/dm/impls/stag/tutorials/ex1.c.html
src/dm/impls/stag/tutorials/ex2.c.html
src/dm/impls/stag/tutorials/ex3.c.html
src/dm/impls/stag/tutorials/ex4.c.html
src/dm/tutorials/ex11f90.F90.html
src/dm/tutorials/ex12.c.html
src/dm/tutorials/ex14.c.html
src/dm/tutorials/ex51.c.html
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/interface/dmget.c)
[Index of all DM routines](index.md)
[Table of Contents for all manual pages](/docs/manualpages/index.md)
[Index of all manual pages](/docs/manualpages/singleindex.md)