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