static int cvDlsBandJacBSWrapper(long int nB, long int mupperB, long int mlowerB, realtype t, N_Vector yB, N_Vector fyB, DlsMat JB, void *cvode_mem, N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B) { CVodeMem cv_mem; CVadjMem ca_mem; CVodeBMem cvB_mem; CVDlsMemB cvdlsB_mem; int retval, flag; cv_mem = (CVodeMem) cvode_mem; ca_mem = cv_mem->cv_adj_mem; cvB_mem = ca_mem->ca_bckpbCrt; cvdlsB_mem = (CVDlsMemB) (cvB_mem->cv_lmem); /* Forward solution from interpolation */ if (IMinterpSensi) flag = IMget(cv_mem, t, ytmp, yStmp); else flag = IMget(cv_mem, t, ytmp, NULL); if (flag != CV_SUCCESS) { cvProcessError(cv_mem, -1, "CVSDLS", "cvDlsBandJacBSWrapper", MSGD_BAD_TINTERP); return(-1); } /* Call user's adjoint band bjacBS routine (of type CVDlsBandJacFnBS) */ retval = bjacBS(nB, mupperB, mlowerB, t, ytmp, yStmp, yB, fyB, JB, cvB_mem->cv_user_data, tmp1B, tmp2B, tmp3B); return(retval); }
static int cvSpilsJacTimesVecBWrapper(N_Vector vB, N_Vector JvB, realtype t, N_Vector yB, N_Vector fyB, void *cvode_mem, N_Vector tmpB) { CVodeMem cv_mem; CVadjMem ca_mem; CVodeBMem cvB_mem; CVSpilsMemB cvspilsB_mem; int retval, flag; cv_mem = (CVodeMem) cvode_mem; ca_mem = cv_mem->cv_adj_mem; cvB_mem = ca_mem->ca_bckpbCrt; cvspilsB_mem = (CVSpilsMemB) (cvB_mem->cv_lmem); /* Forward solution from interpolation */ flag = IMget(cv_mem, t, ytmp, NULL); if (flag != CV_SUCCESS) { cvProcessError(cv_mem, -1, "CVSPILS", "cvSpilsJacTimesVecBWrapper", MSGS_BAD_TINTERP); return(-1); } /* Call user's adjoint jtimesB routine */ retval = jtimes_B(vB, JvB, t, ytmp, yB, fyB, cvB_mem->cv_user_data, tmpB); return(retval); }
static int cvSpilsPrecSolveBWrapper(realtype t, N_Vector yB, N_Vector fyB, N_Vector rB, N_Vector zB, realtype gammaB, realtype deltaB, int lrB, void *cvode_mem, N_Vector tmpB) { CVodeMem cv_mem; CVadjMem ca_mem; CVodeBMem cvB_mem; CVSpilsMemB cvspilsB_mem; int retval, flag; cv_mem = (CVodeMem) cvode_mem; ca_mem = cv_mem->cv_adj_mem; cvB_mem = ca_mem->ca_bckpbCrt; cvspilsB_mem = (CVSpilsMemB) (cvB_mem->cv_lmem); /* Forward solution from interpolation */ flag = IMget(cv_mem, t, ytmp, NULL); if (flag != CV_SUCCESS) { cvProcessError(cv_mem, -1, "CVSPILS", "cvSpilsPrecSolveBWrapper", MSGS_BAD_TINTERP); return(-1); } /* Call user's adjoint psolveB routine */ retval = psolve_B(t, ytmp, yB, fyB, rB, zB, gammaB, deltaB, lrB, cvB_mem->cv_user_data, tmpB); return(retval); }
static int cvDlsDenseJacBWrapper(int nB, realtype t, N_Vector yB, N_Vector fyB, DlsMat JB, void *cvode_mem, N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B) { CVodeMem cv_mem; CVadjMem ca_mem; CVodeBMem cvB_mem; CVDlsMemB cvdlsB_mem; int retval, flag; cv_mem = (CVodeMem) cvode_mem; ca_mem = cv_mem->cv_adj_mem; cvB_mem = ca_mem->ca_bckpbCrt; cvdlsB_mem = (CVDlsMemB) (cvB_mem->cv_lmem); /* Forward solution from interpolation */ flag = IMget(cv_mem, t, ytmp, NULL); if (flag != CV_SUCCESS) { cvProcessError(cv_mem, -1, "CVSDLS", "cvDlsDenseJacBWrapper", MSGD_BAD_TINTERP); return(-1); } /* Call user's adjoint dense djacB routine (of type CVDlsDenseJacFnB) */ retval = djacB(nB, t, ytmp, yB, fyB, JB, cvB_mem->cv_user_data, tmp1B, tmp2B, tmp3B); return(retval); }
static int cvCfnWrapper(int NlocalB, realtype t, N_Vector yB, void *cvode_mem) { CVodeMem cv_mem; CVadjMem ca_mem; CVodeBMem cvB_mem; CVBBDPrecDataB cvbbdB_mem; int retval, flag; cv_mem = (CVodeMem) cvode_mem; ca_mem = cv_mem->cv_adj_mem; cvB_mem = ca_mem->ca_bckpbCrt; cvbbdB_mem = (CVBBDPrecDataB) (cvB_mem->cv_pmem); if (cfn_B == NULL) return(0); /* Forward solution from interpolation */ flag = IMget(cv_mem, t, ytmp, NULL); if (flag != CV_SUCCESS) { cvProcessError(cv_mem, -1, "CVBBDPRE", "cvCfnWrapper", MSGBBD_BAD_TINTERP); return(-1); } /* Call user's adjoint cfnB routine */ retval = cfn_B(NlocalB, t, ytmp, yB, cvB_mem->cv_user_data); return(retval); }