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