14 std::vector<double*> dfdy;
15 std::vector<double> jacvec;
16 std::vector<double*> LU;
17 std::vector<double> LUw;
18 std::vector<int> luidx;
21 int sparse_stuff_initialized;
29 std::vector<int> col_group;
30 std::vector<int> col_wi;
32 std::unique_ptr<sp_mat> spJ;
33 std::vector<double> xjac;
34 std::unique_ptr<sp_num> Numerical;
39 std::vector<double> dfdy_data_vec;
40 std::vector<double> LU_data_vec;
43struct numjac_workspace {
44 std::vector<double> yscale;
45 std::vector<double> del;
46 std::vector<double> Difmax;
47 std::vector<double> absFdelRm;
48 std::vector<double> absFvalue;
49 std::vector<double> absFvalueRm;
50 std::vector<double> Fscale;
51 std::vector<double> ffdel;
52 std::vector<double> yydel;
53 std::vector<double> tmp;
55 std::vector<double*> ydel_Fdel;
57 std::vector<int> logj;
58 std::vector<int> Rowmax;
61 std::vector<double> ydel_Fdel_data_vec;
64void initialize_jacobian(
struct jacobian* jac,
int neq);
65void uninitialize_jacobian(
struct jacobian* jac);
66void initialize_numjac_workspace(
struct numjac_workspace* nj_ws,
int neq);
67void uninitialize_numjac_workspace(
struct numjac_workspace* nj_ws);
68void calc_C(
struct jacobian* jac);
69void interp_from_dif(
double tinterp,
81void new_linearisation(
struct jacobian* jac,
double hinvGak,
int neq);
82void adjust_stepsize(
double** dif,
double abshdivabshlast,
int neq,
int k);
83void eqvec(
double* datavec,
double* emptyvec,
int n);
84void lubksb(
double** a,
int n,
int* indx,
double b[]);
85bool ludcmp(
double** a,
int n,
int* indx,
double* d,
double* vv);
86void fzero_Newton(
void (*func)(
double* x,
int x_size,
void* param,
double* F),
95void numjac(
void (*derivs)(
double x,
double* y,
double* dy,
void* parameters_and_workspace),
100 struct numjac_workspace* nj_ws,
104 void* parameters_and_workspace_for_derivs);
107 void (*derivs)(
double x,
double* y,
double* dy,
void* parameters_and_workspace),
113 void* parameters_and_workspace_for_derivs,
115 double minimum_variation,
116 void (*timescale_and_approximation)(
double x,
117 void* parameters_and_workspace,
119 double timestep_over_timescale,
122 void (*
output)(
double x,
double y[],
double dy[],
int index_x,
void* parameters_and_workspace),
123 void (*print_variables)(
double x,
double y[],
double dy[],
void* parameters_and_workspace));