Actual source code: aoimpl.h

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

  5: #pragma once

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

 11: PETSC_INTERN PetscFunctionList AOList;

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

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

 38: extern PetscLogEvent AO_PetscToApplication, AO_ApplicationToPetsc;