Actual source code: ex55.h
1: #include <petscdmda.h>
3: /*
4: User-defined application context - contains data needed by the
5: application-provided call-back routines, FormJacobianLocal() and
6: FormFunctionLocal().
7: */
8: typedef struct AppCtx AppCtx;
9: struct AppCtx {
10: PetscReal param; /* test problem parameter */
11: PetscInt m, n; /* MMS3 parameters */
12: PetscErrorCode (*mms_solution)(AppCtx *, const DMDACoor2d *, PetscScalar *);
13: PetscErrorCode (*mms_forcing)(AppCtx *, const DMDACoor2d *, PetscScalar *);
14: };
16: PETSC_EXTERN PetscErrorCode FormFunctionLocalVec(DMDALocalInfo *info, Vec x, Vec f, AppCtx *user);
17: PETSC_EXTERN PetscErrorCode FormObjectiveLocalVec(DMDALocalInfo *info, Vec x, PetscReal *obj, AppCtx *user);
18: PETSC_EXTERN PetscErrorCode FormJacobianLocalVec(DMDALocalInfo *info, Vec x, Mat jac, Mat jacpre, AppCtx *user);