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