Actual source code: dmadaptorimpl.h

  1: #ifndef _DMADAPTORIMPL_H
  2: #define _DMADAPTORIMPL_H

  4: #include <petscdmadaptor.h>
  5: #include <petsc/private/petscimpl.h>

  7: typedef struct _DMAdaptorOps *DMAdaptorOps;
  8: struct _DMAdaptorOps {
  9:   PetscErrorCode (*setfromoptions)(DMAdaptor);
 10:   PetscErrorCode (*setup)(DMAdaptor);
 11:   PetscErrorCode (*view)(DMAdaptor, PetscViewer);
 12:   PetscErrorCode (*destroy)(DMAdaptor);
 13:   PetscErrorCode (*transfersolution)(DMAdaptor, DM, Vec, DM, Vec, void *);
 14:   PetscErrorCode (*computeerrorindicator)(DMAdaptor, PetscInt, PetscInt, const PetscScalar *, const PetscScalar *, const PetscFVCellGeom *, PetscReal *, void *);
 15: };

 17: struct _p_DMAdaptor {
 18:   PETSCHEADER(struct _DMAdaptorOps);
 19:   /* Inputs */
 20:   DM        idm;                   /* Initial grid */
 21:   SNES      snes;                  /* Solver */
 22:   VecTagger refineTag, coarsenTag; /* Criteria for adaptivity */
 23:   /*   control */
 24:   DMAdaptationCriterion adaptCriterion;
 25:   PetscBool             femType;
 26:   PetscInt              numSeq;           /* Number of sequential adaptations */
 27:   PetscInt              Nadapt;           /* Target number of vertices */
 28:   PetscReal             refinementFactor; /* N_adapt = r^dim N_orig */
 29:   /*   FVM support */
 30:   PetscBool          computeGradient;
 31:   DM                 cellDM, gradDM;
 32:   Vec                cellGeom, faceGeom, cellGrad; /* Local vectors */
 33:   const PetscScalar *cellGeomArray, *cellGradArray;
 34:   /* Outputs */
 35:   PetscBool monitor;
 36:   /* Auxiliary objects */
 37:   PetscLimiter limiter;
 38:   PetscErrorCode (**exactSol)(PetscInt, PetscReal, const PetscReal[], PetscInt, PetscScalar[], void *);
 39:   void **exactCtx;
 40: };

 42: #endif