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