Actual source code: ex55.h

  1: #include <petscdmda.h>

  3: /*
  4:    User-defined application context - contains data needed by the
  5:    application-provided call-back routines, FormJacobianLocal() and
  6:    FormFunctionLocal().
  7: */
  8: typedef struct AppCtx AppCtx;
  9: struct AppCtx {
 10:   PetscReal param; /* test problem parameter */
 11:   PetscInt  m, n;  /* MMS3 parameters */
 12:   PetscErrorCode (*mms_solution)(AppCtx *, const DMDACoor2d *, PetscScalar *);
 13:   PetscErrorCode (*mms_forcing)(AppCtx *, const DMDACoor2d *, PetscScalar *);
 14: };

 16: PETSC_EXTERN PetscErrorCode FormFunctionLocalVec(DMDALocalInfo *info, Vec x, Vec f, AppCtx *user);
 17: PETSC_EXTERN PetscErrorCode FormObjectiveLocalVec(DMDALocalInfo *info, Vec x, PetscReal *obj, AppCtx *user);
 18: PETSC_EXTERN PetscErrorCode FormJacobianLocalVec(DMDALocalInfo *info, Vec x, Mat jac, Mat jacpre, AppCtx *user);