xref: /petsc/src/snes/tutorials/ex55.h (revision 0619917b5a674bb687c64e7daba2ab22be99af31)
1 #include <petscdmda.h>
2 
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   PetscCount ncoo;  /* support for coo setvalues only */
13   PetscErrorCode (*mms_solution)(AppCtx *, const DMDACoor2d *, PetscScalar *);
14   PetscErrorCode (*mms_forcing)(AppCtx *, const DMDACoor2d *, PetscScalar *);
15 };
16 
17 PETSC_EXTERN PetscErrorCode FormFunctionLocalVec(DMDALocalInfo *info, Vec x, Vec f, AppCtx *user);
18 PETSC_EXTERN PetscErrorCode FormObjectiveLocalVec(DMDALocalInfo *info, Vec x, PetscReal *obj, AppCtx *user);
19 PETSC_EXTERN PetscErrorCode FormJacobianLocalVec(DMDALocalInfo *info, Vec x, Mat jac, Mat jacpre, AppCtx *user);
20