xref: /petsc/src/snes/tutorials/ex55.h (revision 0aeb1f43720b5e51be10578a59deb3bb06d68abc)
1c5566c22SJunchao Zhang #include <petscdmda.h>
2c5566c22SJunchao Zhang 
3c5566c22SJunchao Zhang /*
4c5566c22SJunchao Zhang    User-defined application context - contains data needed by the
5c5566c22SJunchao Zhang    application-provided call-back routines, FormJacobianLocal() and
6c5566c22SJunchao Zhang    FormFunctionLocal().
7c5566c22SJunchao Zhang */
8c5566c22SJunchao Zhang typedef struct AppCtx AppCtx;
9c5566c22SJunchao Zhang struct AppCtx {
10c5566c22SJunchao Zhang   PetscReal  param; /* test problem parameter */
11c5566c22SJunchao Zhang   PetscInt   m, n;  /* MMS3 parameters */
12*0aeb1f43SStefano Zampini   PetscCount ncoo;  /* support for coo setvalues only */
13c5566c22SJunchao Zhang   PetscErrorCode (*mms_solution)(AppCtx *, const DMDACoor2d *, PetscScalar *);
14c5566c22SJunchao Zhang   PetscErrorCode (*mms_forcing)(AppCtx *, const DMDACoor2d *, PetscScalar *);
15c5566c22SJunchao Zhang };
16c5566c22SJunchao Zhang 
17c5566c22SJunchao Zhang PETSC_EXTERN PetscErrorCode FormFunctionLocalVec(DMDALocalInfo *info, Vec x, Vec f, AppCtx *user);
18c5566c22SJunchao Zhang PETSC_EXTERN PetscErrorCode FormObjectiveLocalVec(DMDALocalInfo *info, Vec x, PetscReal *obj, AppCtx *user);
19c5566c22SJunchao Zhang PETSC_EXTERN PetscErrorCode FormJacobianLocalVec(DMDALocalInfo *info, Vec x, Mat jac, Mat jacpre, AppCtx *user);
20