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