Gets values from certain locations of a vector. Currently can only get values on the same processor on which they are owned


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

Not Collective

Input Parameters#

  • x - vector to get values from

  • ni - number of elements to get

  • ix - indices where to get them from (in global 1d numbering)

Output Parameter#

  • y - array of values


The user provides the allocated array y; it is NOT allocated in this routine

VecGetValues() gets y[i] = x[ix[i]], for i=0,…,ni-1.

VecAssemblyBegin() and VecAssemblyEnd() MUST be called before calling this if VecSetValues() or related routine has been called

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

If you call VecSetOption(x, VEC_IGNORE_NEGATIVE_INDICES,PETSC_TRUE), negative indices may be passed in ix. These rows are simply ignored.

See Also#

Vectors and Parallel Data, Vec, VecAssemblyBegin(), VecAssemblyEnd(), VecSetValues()






VecGetValues_MPI() in src/vec/vec/impls/mpi/pdvec.c
VecGetValues_Seq() in src/vec/vec/impls/seq/bvec2.c

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