/***************** Functions Called by the CVODE Solver ******************/ /* f routine. Compute f(t,y). */ static void f(integer N, real t, N_Vector y, N_Vector ydot, void *f_data) { real y1, y2, y3, yd1, yd3; y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3); yd1 = Ith(ydot,1) = -0.04*y1 + 1e4*y2*y3; yd3 = Ith(ydot,3) = 3e7*y2*y2; Ith(ydot,2) = -yd1 - yd3; } /* Jacobian routine. Compute J(t,y). */ static void Jac(integer N, DenseMat J, RhsFn f, void *f_data, real t, N_Vector y, N_Vector fy, N_Vector ewt, real h, real uround, void *jac_data, long int *nfePtr, N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3) { real y1, y2, y3; y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3); IJth(J,1,1) = -0.04; IJth(J,1,2) = 1e4*y3; IJth(J,1,3) = 1e4*y2; IJth(J,2,1) = 0.04; IJth(J,2,2) = -1e4*y3-6e7*y2; IJth(J,2,3) = -1e4*y2; IJth(J,3,2) = 6e7*y2; }