Actual source code: aoimpl.h

      1: /*
      2:    This private file should not be included in users' code.
      3: */

      8: #include <petscao.h>
      9: #include <petsc/private/petscimpl.h>
     10: #include <petscviewer.h>

     12: PETSC_EXTERN PetscBool AORegisterAllCalled;
     13: PETSC_EXTERN PetscErrorCode AORegisterAll(void);

     15: /*
     16:     Defines the abstract AO operations
     17: */
     18: typedef struct _AOOps *AOOps;
     19: struct _AOOps {
     20:   /* Generic Operations */
     21:   PetscErrorCode (*view)(AO, PetscViewer);
     22:   PetscErrorCode (*destroy)(AO);
     23:   /* AO-Specific Operations */
     24:   PetscErrorCode (*petsctoapplication)(AO, PetscInt, PetscInt[]);
     25:   PetscErrorCode (*applicationtopetsc)(AO, PetscInt, PetscInt[]);
     26:   PetscErrorCode (*petsctoapplicationpermuteint)(AO, PetscInt, PetscInt[]);
     27:   PetscErrorCode (*applicationtopetscpermuteint)(AO, PetscInt, PetscInt[]);
     28:   PetscErrorCode (*petsctoapplicationpermutereal)(AO, PetscInt, PetscReal[]);
     29:   PetscErrorCode (*applicationtopetscpermutereal)(AO, PetscInt, PetscReal[]);
     30: };

     32: struct _p_AO {
     33:   PETSCHEADER(struct _AOOps);
     34:   PetscInt N,n;                  /* global, local ao size */
     35:   IS       isapp;                /* index set that defines an application ordering provided by user */
     36:   IS       ispetsc;              /* index set that defines petsc ordering provided by user */
     37:   void     *data;                /* implementation-specific data */
     38: };

     40: extern PetscLogEvent AO_PetscToApplication, AO_ApplicationToPetsc;

     43: #endif