xref: /petsc/src/ts/tutorials/advection-diffusion-reaction/reaction_diffusion.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1*a4963045SJacob Faibussowitsch #pragma once
23ea99036SJacob Faibussowitsch 
360f0b76eSHong Zhang #include <petscts.h>
460f0b76eSHong Zhang 
560f0b76eSHong Zhang /* Simple C struct that allows us to access the two velocity (x and y directions) values easily in the code */
660f0b76eSHong Zhang typedef struct {
760f0b76eSHong Zhang   PetscScalar u, v;
860f0b76eSHong Zhang } Field;
960f0b76eSHong Zhang 
1060f0b76eSHong Zhang /* Data structure to store the model parameters */
1160f0b76eSHong Zhang typedef struct {
1260f0b76eSHong Zhang   PetscReal D1, D2, gamma, kappa;
1360f0b76eSHong Zhang   PetscBool aijpc;
1460f0b76eSHong Zhang   Vec       U;
1560f0b76eSHong Zhang   Mat       A;
1660f0b76eSHong Zhang   TS        ts;
1760f0b76eSHong Zhang } AppCtx;
1860f0b76eSHong Zhang 
1960f0b76eSHong Zhang /* User-supplied functions for TS */
2060f0b76eSHong Zhang PetscErrorCode RHSFunction(TS, PetscReal, Vec, Vec, void *);
2160f0b76eSHong Zhang PetscErrorCode RHSJacobian(TS, PetscReal, Vec, Mat, Mat, void *);
2260f0b76eSHong Zhang PetscErrorCode IFunction(TS, PetscReal, Vec, Vec, Vec, void *);
2360f0b76eSHong Zhang PetscErrorCode IJacobian(TS, PetscReal, Vec, Vec, PetscReal, Mat, Mat, void *);
24