Actual source code: isimpl.h
1: /*
2: Index sets for scatter-gather type operations in vectors
3: and matrices.
5: */
7: #if !defined(_IS_H)
8: #define _IS_H
10: #include petscis.h
12: struct _ISOps {
13: PetscErrorCode (*getsize)(IS,PetscInt*);
14: PetscErrorCode (*getlocalsize)(IS,PetscInt*);
15: PetscErrorCode (*getindices)(IS,PetscInt**);
16: PetscErrorCode (*restoreindices)(IS,PetscInt**);
17: PetscErrorCode (*invertpermutation)(IS,PetscInt,IS*);
18: PetscErrorCode (*sortindices)(IS);
19: PetscErrorCode (*sorted)(IS,PetscTruth *);
20: PetscErrorCode (*duplicate)(IS,IS *);
21: PetscErrorCode (*destroy)(IS);
22: PetscErrorCode (*view)(IS,PetscViewer);
23: PetscErrorCode (*identity)(IS,PetscTruth*);
24: };
26: #if defined(__cplusplus)
27: class ISOps {
28: public:
29: int getsize(PetscInt*) {return 0;};
30: };
31: #endif
33: struct _p_IS {
34: PETSCHEADER(struct _ISOps);
35: #if defined(__cplusplus)
36: ISOps *cops;
37: #endif
38: PetscTruth isperm; /* if is a permutation */
39: PetscInt max,min; /* range of possible values */
40: void *data;
41: PetscTruth isidentity;
42: };
45: #endif