Actual source code: aoimpl.h
1: /*
2: This private file should not be included in users' code.
3: */
5: #ifndef __AOIMPL
8: #include <petscao.h>
10: /*
11: Defines the abstract AO operations
12: */
13: typedef struct _AOOps *AOOps;
14: struct _AOOps {
15: /* Generic Operations */
16: PetscErrorCode (*view)(AO, PetscViewer);
17: PetscErrorCode (*destroy)(AO);
18: /* AO-Specific Operations */
19: PetscErrorCode (*petsctoapplication)(AO, PetscInt, PetscInt[]);
20: PetscErrorCode (*applicationtopetsc)(AO, PetscInt, PetscInt[]);
21: PetscErrorCode (*petsctoapplicationpermuteint)(AO, PetscInt, PetscInt[]);
22: PetscErrorCode (*applicationtopetscpermuteint)(AO, PetscInt, PetscInt[]);
23: PetscErrorCode (*petsctoapplicationpermutereal)(AO, PetscInt, PetscReal[]);
24: PetscErrorCode (*applicationtopetscpermutereal)(AO, PetscInt, PetscReal[]);
25: };
27: struct _p_AO {
28: PETSCHEADER(struct _AOOps);
29: PetscInt N,n; /* global, local ao size */
30: IS isapp; /* index set that defines an application ordering provided by user */
31: IS ispetsc; /* index set that defines petsc ordering provided by user */
32: void *data; /* implementation-specific data */
33: };
38: #endif