1 |
/* |
2 |
for cases where we don't have SUNDIALS_VERSION_MINOR defined, guess version 2.2 |
3 |
*/ |
4 |
#ifndef SUNDIALS_VERSION_MINOR |
5 |
# ifdef __GNUC__ |
6 |
# warning "GUESSING SUNDIALS VERSION 2.2" |
7 |
# endif |
8 |
# define SUNDIALS_VERSION_MINOR 2 |
9 |
#endif |
10 |
#ifndef SUNDIALS_VERSION_MAJOR |
11 |
# define SUNDIALS_VERSION_MAJOR 2 |
12 |
#endif |
13 |
|
14 |
/* SUNDIALS 2.4.0 introduces new DlsMat in place of DenseMat */ |
15 |
#if SUNDIALS_VERSION_MAJOR==2 && SUNDIALS_VERSION_MINOR==4 |
16 |
# define IDA_MTX_T DlsMat |
17 |
# define IDADENSE_SUCCESS IDADLS_SUCCESS |
18 |
# define IDADENSE_MEM_NULL IDADLS_MEM_NULL |
19 |
# define IDADENSE_ILL_INPUT IDADLS_ILL_INPUT |
20 |
# define IDADENSE_MEM_FAIL IDADLS_MEM_FAIL |
21 |
#else |
22 |
# define IDA_MTX_T DenseMat |
23 |
#endif |
24 |
|
25 |
|
26 |
/* residual function forward declaration */ |
27 |
int integrator_ida_fex(realtype tt, N_Vector yy, N_Vector yp, N_Vector rr, void *res_data); |
28 |
|
29 |
int integrator_ida_jvex(realtype tt, N_Vector yy, N_Vector yp, N_Vector rr |
30 |
, N_Vector v, N_Vector Jv, realtype c_j |
31 |
, void *jac_data, N_Vector tmp1, N_Vector tmp2 |
32 |
); |
33 |
|
34 |
/* dense jacobian evaluation for IDADense dense direct linear solver */ |
35 |
#if SUNDIALS_VERSION_MAJOR==2 && SUNDIALS_VERSION_MINOR>=4 |
36 |
int integrator_ida_djex(int Neq, realtype tt, realtype c_j |
37 |
, N_Vector yy, N_Vector yp, N_Vector rr |
38 |
, IDA_MTX_T Jac, void *jac_data |
39 |
, N_Vector tmp1, N_Vector tmp2, N_Vector tmp3 |
40 |
); |
41 |
#else |
42 |
int integrator_ida_djex(long int Neq, realtype tt |
43 |
, N_Vector yy, N_Vector yp, N_Vector rr |
44 |
, realtype c_j, void *jac_data, IDA_MTX_T Jac |
45 |
, N_Vector tmp1, N_Vector tmp2, N_Vector tmp3 |
46 |
); |
47 |
#endif |
48 |
|
49 |
/* sparse jacobian evaluation for ASCEND's sparse direct solver */ |
50 |
IntegratorSparseJacFn integrator_ida_sjex; |
51 |
|
52 |
/* boundary-detection function */ |
53 |
int integrator_ida_rootfn(realtype tt, N_Vector yy, N_Vector yp, realtype *gout, void *g_data); |
54 |
|