Actual source code: ex55.h
1: #pragma once
2: #include <petscdmda.h>
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: };
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);