Actual source code: petscconvestimpl.h
1: #pragma once
3: #include <petscconvest.h>
4: #include <petsc/private/petscimpl.h>
6: typedef struct _PetscConvEstOps *PetscConvEstOps;
7: struct _PetscConvEstOps {
8: PetscErrorCode (*setfromoptions)(PetscConvEst);
9: PetscErrorCode (*setup)(PetscConvEst);
10: PetscErrorCode (*view)(PetscConvEst, PetscViewer);
11: PetscErrorCode (*destroy)(PetscConvEst);
12: PetscErrorCode (*setsolver)(PetscConvEst, PetscObject);
13: PetscErrorCode (*initguess)(PetscConvEst, PetscInt, DM, Vec);
14: PetscErrorCode (*computeerror)(PetscConvEst, PetscInt, DM, Vec, PetscReal[]);
15: PetscErrorCode (*getconvrate)(PetscConvEst, PetscReal[]);
16: };
18: struct _p_PetscConvEst {
19: PETSCHEADER(struct _PetscConvEstOps);
20: /* Inputs */
21: DM idm; /* Initial grid */
22: PetscObject solver; /* Solver */
23: PetscReal r; /* The refinement factor (spatial check requires r = 2) */
24: PetscInt Nr; /* The number of refinements */
25: PetscInt Nf; /* The number of fields in the DM */
26: PetscBool noRefine; /* Debugging flag to disable refinement */
27: PetscErrorCode (**initGuess)(PetscInt, PetscReal, const PetscReal[], PetscInt, PetscScalar[], void *);
28: PetscErrorCode (**exactSol)(PetscInt, PetscReal, const PetscReal[], PetscInt, PetscScalar[], void *);
29: void **ctxs;
30: /* Outputs */
31: PetscLogEvent event;
32: PetscBool monitor;
33: PetscInt *dofs;
34: PetscReal *errors;
35: };