1*3ea99036SJacob Faibussowitsch #ifndef REACTION_DIFFUSION_H 2*3ea99036SJacob Faibussowitsch #define REACTION_DIFFUSION_H 3*3ea99036SJacob Faibussowitsch 460f0b76eSHong Zhang #include <petscts.h> 560f0b76eSHong Zhang 660f0b76eSHong Zhang /* Simple C struct that allows us to access the two velocity (x and y directions) values easily in the code */ 760f0b76eSHong Zhang typedef struct { 860f0b76eSHong Zhang PetscScalar u, v; 960f0b76eSHong Zhang } Field; 1060f0b76eSHong Zhang 1160f0b76eSHong Zhang /* Data structure to store the model parameters */ 1260f0b76eSHong Zhang typedef struct { 1360f0b76eSHong Zhang PetscReal D1, D2, gamma, kappa; 1460f0b76eSHong Zhang PetscBool aijpc; 1560f0b76eSHong Zhang Vec U; 1660f0b76eSHong Zhang Mat A; 1760f0b76eSHong Zhang TS ts; 1860f0b76eSHong Zhang } AppCtx; 1960f0b76eSHong Zhang 2060f0b76eSHong Zhang /* User-supplied functions for TS */ 2160f0b76eSHong Zhang PetscErrorCode RHSFunction(TS, PetscReal, Vec, Vec, void *); 2260f0b76eSHong Zhang PetscErrorCode RHSJacobian(TS, PetscReal, Vec, Mat, Mat, void *); 2360f0b76eSHong Zhang PetscErrorCode IFunction(TS, PetscReal, Vec, Vec, Vec, void *); 2460f0b76eSHong Zhang PetscErrorCode IJacobian(TS, PetscReal, Vec, Vec, PetscReal, Mat, Mat, void *); 25*3ea99036SJacob Faibussowitsch #endif 26