1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
use c_void;
use crate;
// /* ----------------------------------------------------------------
// * Programmer(s): Daniel R. Reynolds @ UMBC
// * Alan Hindmarsh, Radu Serban and
// * Aaron Collier @ LLNL
// * ----------------------------------------------------------------
// * SUNDIALS Copyright Start
// * Copyright (c) 2025-2026, Lawrence Livermore National Security,
// * University of Maryland Baltimore County, and the SUNDIALS contributors.
// * Copyright (c) 2013-2025, Lawrence Livermore National Security
// * and Southern Methodist University.
// * Copyright (c) 2002-2013, Lawrence Livermore National Security.
// * All rights reserved.
// *
// * See the top-level LICENSE and NOTICE files for details.
// *
// * SPDX-License-Identifier: BSD-3-Clause
// * SUNDIALS Copyright End
// * ----------------------------------------------------------------
// * This is the header file for IDA's linear solver interface.
// * ----------------------------------------------------------------*/
// #ifndef _IDALS_H
// #define _IDALS_H
// #include <sundials/sundials_direct.h>
// #include <sundials/sundials_iterative.h>
// #include <sundials/sundials_linearsolver.h>
// #include <sundials/sundials_matrix.h>
// #include <sundials/sundials_nvector.h>
// #ifdef __cplusplus /* wrapper to enable C++ usage */
// extern "C" {
// #endif
// /*=================================================================
// IDALS Constants
// =================================================================*/
// #define IDALS_SUCCESS 0
// #define IDALS_MEM_NULL -1
// #define IDALS_LMEM_NULL -2
// #define IDALS_ILL_INPUT -3
// #define IDALS_MEM_FAIL -4
// #define IDALS_PMEM_NULL -5
// #define IDALS_JACFUNC_UNRECVR -6
// #define IDALS_JACFUNC_RECVR -7
// #define IDALS_SUNMAT_FAIL -8
// #define IDALS_SUNLS_FAIL -9
// /*=================================================================
// IDALS user-supplied function prototypes
// =================================================================*/
// typedef int (*IDALsJacFn)(sunrealtype t, sunrealtype c_j, N_Vector y,
// N_Vector yp, N_Vector r, SUNMatrix Jac, void* user_data,
// N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
pub type IDALsJacFn = unsafe extern "C" fn ;
// typedef int (*IDALsPrecSetupFn)(sunrealtype tt, N_Vector yy, N_Vector yp,
// N_Vector rr, sunrealtype c_j, void* user_data);
// typedef int (*IDALsPrecSolveFn)(sunrealtype tt, N_Vector yy, N_Vector yp,
// N_Vector rr, N_Vector rvec, N_Vector zvec,
// sunrealtype c_j, sunrealtype delta,
// void* user_data);
// typedef int (*IDALsJacTimesSetupFn)(sunrealtype tt, N_Vector yy, N_Vector yp,
// N_Vector rr, sunrealtype c_j,
// void* user_data);
// typedef int (*IDALsJacTimesVecFn)(sunrealtype tt, N_Vector yy, N_Vector yp,
// N_Vector rr, N_Vector v, N_Vector Jv,
// sunrealtype c_j, void* user_data,
// N_Vector tmp1, N_Vector tmp2);
unsafe extern "C"
// #ifdef __cplusplus
// }
// #endif
// #endif