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