xref: /petsc/src/ts/tutorials/advection-diffusion-reaction/reaction_diffusion.h (revision 3ea99036a5fedea4d39e7e77471d0ab500c249d7)
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