1*f26ada1bSBarry Smith /* $Id: is.h,v 1.17 1995/10/24 21:55:05 bsmith Exp bsmith $ */ 22eac72dbSBarry Smith 32eac72dbSBarry Smith /* 4*f26ada1bSBarry Smith An index set is essentially a subset of the integers. They are used 5*f26ada1bSBarry Smith for defining scatters and gathers. 62eac72dbSBarry Smith */ 72eac72dbSBarry Smith #if !defined(__IS_PACKAGE) 82eac72dbSBarry Smith #define __IS_PACKAGE 92eac72dbSBarry Smith #include "petsc.h" 102eac72dbSBarry Smith 119e25ed09SBarry Smith #define IS_COOKIE PETSC_COOKIE+2 12f0479e8cSBarry Smith 132eac72dbSBarry Smith typedef struct _IS* IS; 142eac72dbSBarry Smith 15de7da479SBarry Smith extern int ISCreateSeq(MPI_Comm,int,int *,IS *); 16de7da479SBarry Smith extern int ISCreateStrideSeq(MPI_Comm,int,int,int,IS *); 17de7da479SBarry Smith extern int ISAddStrideSeq(IS*,int,int,int); 1820563c6bSBarry Smith extern int ISStrideGetInfo(IS,int *,int*); 192eac72dbSBarry Smith 20aabeff55SBarry Smith extern int ISSetPermutation(IS); 21aabeff55SBarry Smith extern int ISIsPermutation(IS); 2208480c60SBarry Smith extern int ISSetIdentity(IS); 2308480c60SBarry Smith extern int ISIsIdentity(IS); 2408480c60SBarry Smith 25aabeff55SBarry Smith extern int ISGetIndices(IS,int **); 26aabeff55SBarry Smith extern int ISRestoreIndices(IS,int **); 27aabeff55SBarry Smith extern int ISGetSize(IS,int *); 28aabeff55SBarry Smith extern int ISGetLocalSize(IS,int *); 29aabeff55SBarry Smith extern int ISDestroy(IS); 30aabeff55SBarry Smith extern int ISInvertPermutation(IS,IS*); 31aabeff55SBarry Smith extern int ISView(IS,Viewer); 32aabeff55SBarry Smith 3364119d58SLois Curfman McInnes typedef enum {IS_SEQ=0, IS_STRIDE_SEQ=2} IndexSetType; 3430913a5eSBarry Smith 352eac72dbSBarry Smith #endif 36