petsc-dev 2014-04-23
Report Typos and Errors


Creates a VecScatter from a list of messages it must send and receive.


#include "petscvec.h" 
PetscErrorCode VecScatterCreateLocal(VecScatter ctx,PetscInt nsends,const PetscInt sendSizes[],const PetscInt sendProcs[],const PetscInt sendIdx[],PetscInt nrecvs,const PetscInt recvSizes[],const PetscInt recvProcs[],const PetscInt recvIdx[],PetscInt bs)
Collective on VecScatter

Input Parameters

VecScatter - obtained with VecScatterCreateEmpty()
nsends -
sendSizes -
sendProcs -
sendIdx - indices where the sent entries are obtained from (in local, on process numbering), this is one long array of size \sum_{i=0,i<nsends} sendSizes[i]
nrecvs - number of receives to expect
recvSizes -
recvProcs - processes who are sending to me
recvIdx - indices of where received entries are to be put, (in local, on process numbering), this is one long array of size \sum_{i=0,i<nrecvs} recvSizes[i]
bs - size of block

Notes: sendSizes[] and recvSizes[] cannot have any 0 entries. If you want to support having 0 entries you need to change the code below to "compress out" the sendProcs[] and recvProcs[] entries that have 0 entries.

Probably does not handle sends to self properly. It should remove those from the counts that are used in allocating space inside of the from struct

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