int CVAspilsPrecSetup(realtype t, N_Vector yB, N_Vector fyB, booleantype jokB, booleantype *jcurPtrB, realtype gammaB, void *cvadj_mem, N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B) { CVadjMem ca_mem; CVodeMem cvB_mem; CVSpilsMemB cvspilsB_mem; int retval, flag; ca_mem = (CVadjMem) cvadj_mem; cvB_mem = ca_mem->cvb_mem; cvspilsB_mem = (CVSpilsMemB) lmemB; /* Forward solution from interpolation */ flag = getY(ca_mem, t, ytmp); if (flag != CV_SUCCESS) { CVProcessError(cvB_mem, -1, "CVSPILS", "CVAspilsPrecSetup", MSGS_BAD_T); return(-1); } /* Call user's adjoint precondB routine */ retval = pset_B(t, ytmp, yB, fyB, jokB, jcurPtrB, gammaB, P_data_B, tmp1B, tmp2B, tmp3B); return(retval); }
static int cvSpilsPrecSetupBWrapper(realtype t, N_Vector yB, N_Vector fyB, booleantype jokB, booleantype *jcurPtrB, realtype gammaB, void *cvode_mem, N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B) { 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", "cvSpilsPrecSetupBWrapper", MSGS_BAD_TINTERP); return(-1); } /* Call user's adjoint precondB routine */ retval = pset_B(t, ytmp, yB, fyB, jokB, jcurPtrB, gammaB, cvB_mem->cv_user_data, tmp1B, tmp2B, tmp3B); return(retval); }