Skip to main content
`Ctrl`+`K`

# DMLocalToGlobal

updates global vectors from local vectors

## Synopsis

    #include "petscdm.h"
    #include "petscdmlabel.h"
    #include "petscds.h"
    PetscErrorCode DMLocalToGlobal(DM dm, Vec l, InsertMode mode, Vec g)

Neighbor-wise Collective

## Input Parameters

- dm - the `DM` object

- l - the local vector

- mode - if `INSERT_VALUES` then no parallel communication is used, if `ADD_VALUES` then all ghost points from the same base point accumulate into that base point.

- g - the global vector

## Notes

The communication involved in this update can be overlapped with computation by using `DMLocalToGlobalBegin()` and `DMLocalToGlobalEnd()`.

In the `ADD_VALUES` case you normally would zero the receiving vector before beginning this operation.

`INSERT_VALUES` is not supported for `DMDA`; in that case simply compute the values directly into a global vector instead of a local one.

Use `DMLocalToGlobalHookAdd()` to add additional operations that are performed on the data during the update process

## See Also

DM Basics, `DM`, `DMLocalToGlobalBegin()`, `DMLocalToGlobalEnd()`, `DMCoarsen()`, `DMDestroy()`, `DMView()`, `DMCreateGlobalVector()`, `DMCreateInterpolation()`, `DMGlobalToLocal()`, `DMGlobalToLocalEnd()`, `DMGlobalToLocalBegin()`, `DMLocalToGlobalHookAdd()`, `DMGlobaToLocallHookAdd()`

## Level

beginner

## Location

src/dm/interface/dm.c

## Examples

src/dm/impls/stag/tutorials/ex1.c
src/dm/impls/stag/tutorials/ex6.c
src/dm/impls/stag/tutorials/ex3.c
src/snes/tutorials/ex11.c
src/dm/impls/stag/tutorials/ex4.c
src/dm/tutorials/ex2.c
src/snes/tutorials/ex16.c
src/dm/impls/stag/tutorials/ex2.c

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