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