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