void FCVDenseJac(long int N, DenseMat J, realtype t, N_Vector y, N_Vector fy, void *jac_data, N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3) { N_Vector ewt; realtype *ydata, *fydata, *jacdata, *ewtdata, *v1data, *v2data, *v3data; realtype h; ewt = N_VClone(y); CVodeGetErrWeights(CV_cvodemem, ewt); CVodeGetLastStep(CV_cvodemem, &h); ydata = N_VGetArrayPointer(y); fydata = N_VGetArrayPointer(fy); v1data = N_VGetArrayPointer(vtemp1); v2data = N_VGetArrayPointer(vtemp2); v3data = N_VGetArrayPointer(vtemp3); ewtdata = N_VGetArrayPointer(ewt); jacdata = DENSE_COL(J,0); FCV_DJAC(&N, &t, ydata, fydata, jacdata, ewtdata, &h, v1data, v2data, v3data); N_VDestroy(ewt); }
int FCVDenseJac(int N, realtype t, N_Vector y, N_Vector fy, DlsMat J, void *user_data, N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3) { int ier; realtype *ydata, *fydata, *jacdata, *v1data, *v2data, *v3data; realtype h; FCVUserData CV_userdata; CVodeGetLastStep(CV_cvodemem, &h); ydata = N_VGetArrayPointer(y); fydata = N_VGetArrayPointer(fy); v1data = N_VGetArrayPointer(vtemp1); v2data = N_VGetArrayPointer(vtemp2); v3data = N_VGetArrayPointer(vtemp3); jacdata = DENSE_COL(J,0); CV_userdata = (FCVUserData) user_data; FCV_DJAC(&N, &t, ydata, fydata, jacdata, &h, CV_userdata->ipar, CV_userdata->rpar, v1data, v2data, v3data, &ier); return(ier); }