Skip to main content
`Ctrl`+`K`

# VecSetValuesLocal

Inserts or adds values into certain locations of a vector, using a local ordering of the nodes.

## Synopsis

    #include "petscvec.h"
    PetscErrorCode VecSetValuesLocal(Vec x, PetscInt ni, const PetscInt ix[], const PetscScalar y[], InsertMode iora)

Not Collective

## Input Parameters

- x - vector to insert in

- ni - number of elements to add

- ix - indices where to add

- y - array of values. Pass `NULL` to set all zeroes.

- iora - either `INSERT_VALUES` replaces existing entries with new values, `ADD_VALUES` adds values to any existing entries

## Notes

`VecSetValuesLocal()` sets x[ix[i]] = y[i], for i=0,…,ni-1.

Calls to `VecSetValuesLocal()` with the `INSERT_VALUES` and `ADD_VALUES` options cannot be mixed without intervening calls to the assembly routines.

These values may be cached, so `VecAssemblyBegin()` and `VecAssemblyEnd()` MUST be called after all calls to `VecSetValuesLocal()` have been completed.

`VecSetValuesLocal()` uses 0-based indices in Fortran as well as in C.

## Fortran Note

If any of `ix` and `y` are scalars pass them using, for example,

      call VecSetValuesLocal(mat, one, [ix], [y], INSERT_VALUES, ierr)

## See Also

Vectors and Parallel Data, `Vec`, `VecAssemblyBegin()`, `VecAssemblyEnd()`, `VecSetValues()`, `VecSetLocalToGlobalMapping()`, `VecSetValuesBlockedLocal()`

## Level

intermediate

## Location

src/vec/vec/interface/rvector.c

## Examples

src/vec/vec/tutorials/ex8f.F90
src/ksp/ksp/tutorials/ex35.cxx
src/vec/vec/tutorials/ex8.c
src/tao/unconstrained/tutorials/eptorsion2.c
src/ksp/ksp/tutorials/ex36.cxx
src/tao/unconstrained/tutorials/eptorsion2f.F90

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