本文整理汇总了C++中CVProcessError函数的典型用法代码示例。如果您正苦于以下问题:C++ CVProcessError函数的具体用法?C++ CVProcessError怎么用?C++ CVProcessError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CVProcessError函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CVSpilsSetJacTimesVecFnB
int CVSpilsSetJacTimesVecFnB(void *cvadj_mem, CVSpilsJacTimesVecFnB jtimesB,
void *jac_dataB)
{
CVadjMem ca_mem;
CVSpilsMemB cvspilsB_mem;
CVodeMem cvB_mem;
int flag;
if (cvadj_mem == NULL) {
CVProcessError(NULL, CVSPILS_ADJMEM_NULL, "CVSPILS", "CVSpilsSetJacTimesVecFnB", MSGS_CAMEM_NULL);
return(CVSPILS_ADJMEM_NULL);
}
ca_mem = (CVadjMem) cvadj_mem;
cvB_mem = ca_mem->cvb_mem;
if (lmemB == NULL) {
CVProcessError(cvB_mem, CVSPILS_LMEMB_NULL, "CVSPILS", "CVSpilsSetJacTimesVecFnB", MSGS_LMEMB_NULL);
return(CVSPILS_LMEMB_NULL);
}
cvspilsB_mem = (CVSpilsMemB) lmemB;
jtimes_B = jtimesB;
jac_data_B = jac_dataB;
flag = CVSpilsSetJacTimesVecFn(cvB_mem, CVAspilsJacTimesVec, cvadj_mem);
return(flag);
}
开发者ID:cran,项目名称:Rsundials,代码行数:29,代码来源:cvodes_spils.c
示例2: CVBBDPrecGetNumGfnEvals
int CVBBDPrecGetNumGfnEvals(void *cvode_mem, long int *ngevalsBBDP)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
CVBBDPrecData pdata;
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVBBDPRE", "CVBBDPrecGetNumGfnEvals", MSGBBD_MEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (cv_mem->cv_lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVBBDPRE", "CVBBDPrecGetNumGfnEvals", MSGBBD_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) cv_mem->cv_lmem;
if (cvspils_mem->s_P_data == NULL) {
CVProcessError(cv_mem, CVSPILS_PMEM_NULL, "CVBBDPRE", "CVBBDPrecGetNumGfnEvals", MSGBBD_PMEM_NULL);
return(CVSPILS_PMEM_NULL);
}
pdata = (CVBBDPrecData) cvspils_mem->s_P_data;
*ngevalsBBDP = pdata->nge;
return(CVSPILS_SUCCESS);
}
开发者ID:A1kmm,项目名称:modml-solver,代码行数:28,代码来源:cvode_bbdpre.c
示例3: CVSpilsSetPreconditionerB
int CVSpilsSetPreconditionerB(void *cvadj_mem, CVSpilsPrecSetupFnB psetB,
CVSpilsPrecSolveFnB psolveB, void *P_dataB)
{
CVadjMem ca_mem;
CVSpilsMemB cvspilsB_mem;
CVodeMem cvB_mem;
int flag;
if (cvadj_mem == NULL) {
CVProcessError(NULL, CVSPILS_ADJMEM_NULL, "CVSPILS", "CVSpilsSetPreconditionerB", MSGS_CAMEM_NULL);
return(CVSPILS_ADJMEM_NULL);
}
ca_mem = (CVadjMem) cvadj_mem;
cvB_mem = ca_mem->cvb_mem;
if (lmemB == NULL) {
CVProcessError(cvB_mem, CVSPILS_LMEMB_NULL, "CVSPILS", "CVSpilsSetPreconditonerB", MSGS_LMEMB_NULL);
return(CVSPILS_LMEMB_NULL);
}
cvspilsB_mem = (CVSpilsMemB) lmemB;
pset_B = psetB;
psolve_B = psolveB;
P_data_B = P_dataB;
flag = CVSpilsSetPreconditioner(cvB_mem, CVAspilsPrecSetup, CVAspilsPrecSolve, cvadj_mem);
return(flag);
}
开发者ID:cran,项目名称:Rsundials,代码行数:30,代码来源:cvodes_spils.c
示例4: CVSpilsSetDelt
int CVSpilsSetDelt(void *cvode_mem, realtype delt)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVSPILS", "CVSpilsSetDelt", MSGS_CVMEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVSPILS", "CVSpilsSetDelt", MSGS_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) lmem;
/* Check for legal delt */
if(delt < ZERO) {
CVProcessError(cv_mem, CVSPILS_ILL_INPUT, "CVSPILS", "CVSpilsSetDelt", MSGS_BAD_DELT);
return(CVSPILS_ILL_INPUT);
}
cvspils_mem->s_delt = (delt == ZERO) ? CVSPILS_DELT : delt;
return(CVSPILS_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:28,代码来源:cvodes_spils.c
示例5: CVSpilsSetPreconditioner
int CVSpilsSetPreconditioner(void *cvode_mem, CVSpilsPrecSetupFn pset,
CVSpilsPrecSolveFn psolve, void *P_data)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVSPILS", "CVSpilsSetPreconditioner", MSGS_CVMEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVSPILS", "CVSpilsSetPreconditioner", MSGS_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) lmem;
cvspils_mem->s_pset = pset;
cvspils_mem->s_psolve = psolve;
if (psolve != NULL) cvspils_mem->s_P_data = P_data;
return(CVSPILS_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:25,代码来源:cvodes_spils.c
示例6: CVSpilsSetGSType
int CVSpilsSetGSType(void *cvode_mem, int gstype)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVSPILS", "CVSpilsSetGSType", MSGS_CVMEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVSPILS", "CVSpilsSetGSType", MSGS_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) lmem;
if (ils_type != SPILS_SPGMR) {
CVProcessError(cv_mem, CVSPILS_ILL_INPUT, "CVSPILS", "CVSpilsSetGSType", MSGS_BAD_LSTYPE);
return(CVSPILS_ILL_INPUT);
}
/* Check for legal gstype */
if ((gstype != MODIFIED_GS) && (gstype != CLASSICAL_GS)) {
CVProcessError(cv_mem, CVSPILS_ILL_INPUT, "CVSPILS", "CVSpilsSetGSType", MSGS_BAD_GSTYPE);
return(CVSPILS_ILL_INPUT);
}
cvspils_mem->s_gstype = gstype;
return(CVSPILS_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:33,代码来源:cvodes_spils.c
示例7: CVSpilsSetMaxl
int CVSpilsSetMaxl(void *cvode_mem, int maxl)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
int mxl;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVSPILS", "CVSpilsSetMaxl", MSGS_CVMEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(NULL, CVSPILS_LMEM_NULL, "CVSPILS", "CVSpilsSetMaxl", MSGS_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) lmem;
if (ils_type == SPILS_SPGMR) {
CVProcessError(cv_mem, CVSPILS_ILL_INPUT, "CVSPILS", "CVSpilsSetMaxl", MSGS_BAD_LSTYPE);
return(CVSPILS_ILL_INPUT);
}
mxl = (maxl <= 0) ? CVSPILS_MAXL : maxl;
cvspils_mem->s_maxl = mxl;
/* spbcg_mem->l_max = mxl; */
return(CVSPILS_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:31,代码来源:cvodes_spils.c
示例8: CVBandPrecGetNumRhsEvals
int CVBandPrecGetNumRhsEvals(void *cvode_mem, long int *nfevalsBP)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
CVBandPrecData pdata;
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVBANDPRE", "CVBandPrecGetNumRhsEvals", MSGBP_MEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (cv_mem->cv_lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVBANDPRE", "CVBandPrecGetNumRhsEvals", MSGBP_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) cv_mem->cv_lmem;
if (cvspils_mem->s_P_data == NULL) {
CVProcessError(cv_mem, CVSPILS_PMEM_NULL, "CVBANDPRE", "CVBandPrecGetNumRhsEvals", MSGBP_PMEM_NULL);
return(CVSPILS_PMEM_NULL);
}
pdata = (CVBandPrecData) cvspils_mem->s_P_data;
*nfevalsBP = pdata->nfeBP;
return(CVSPILS_SUCCESS);
}
开发者ID:delalond,项目名称:STEPS,代码行数:28,代码来源:cvode_bandpre.c
示例9: CVadjGetDataPointPolynomial
int CVadjGetDataPointPolynomial(void *cvadj_mem, long int which,
realtype *t, int *order, N_Vector y)
{
CVadjMem ca_mem;
DtpntMem *dt_mem;
PolynomialDataMem content;
if (cvadj_mem == NULL) {
CVProcessError(NULL, CV_ADJMEM_NULL, "CVODEA", "CVadjGetDataPointPolynomial", MSGAM_NULL_CAMEM);
return(CV_ADJMEM_NULL);
}
ca_mem = (CVadjMem) cvadj_mem;
dt_mem = ca_mem->dt_mem;
if (interpType != CV_POLYNOMIAL) {
CVProcessError(NULL, CV_ILL_INPUT, "CVODEA", "CVadjGetDataPointPolynomial", MSGAM_WRONG_INTERP);
return(CV_ILL_INPUT);
}
*t = dt_mem[which]->t;
content = (PolynomialDataMem) (dt_mem[which]->content);
if (y != NULL)
N_VScale(ONE, content->y, y);
*order = content->order;
return(CV_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:30,代码来源:cvodea_io.c
示例10: CVadjGetDataPointHermite
int CVadjGetDataPointHermite(void *cvadj_mem, long int which,
realtype *t, N_Vector y, N_Vector yd)
{
CVadjMem ca_mem;
DtpntMem *dt_mem;
HermiteDataMem content;
if (cvadj_mem == NULL) {
CVProcessError(NULL, CV_ADJMEM_NULL, "CVODEA", "CVadjGetDataPointHermite", MSGAM_NULL_CAMEM);
return(CV_ADJMEM_NULL);
}
ca_mem = (CVadjMem) cvadj_mem;
dt_mem = ca_mem->dt_mem;
if (interpType != CV_HERMITE) {
CVProcessError(NULL, CV_ILL_INPUT, "CVODEA", "CVadjGetDataPointHermite", MSGAM_WRONG_INTERP);
return(CV_ILL_INPUT);
}
*t = dt_mem[which]->t;
content = (HermiteDataMem) (dt_mem[which]->content);
if (y != NULL)
N_VScale(ONE, content->y, y);
if (yd != NULL)
N_VScale(ONE, content->yd, yd);
return(CV_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:31,代码来源:cvodea_io.c
示例11: CVBBDPrecGetWorkSpace
int CVBBDPrecGetWorkSpace(void *cvode_mem, long int *lenrwBBDP, long int *leniwBBDP)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
CVBBDPrecData pdata;
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVBBDPRE", "CVBBDPrecGetWorkSpace", MSGBBD_MEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (cv_mem->cv_lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVBBDPRE", "CVBBDPrecGetWorkSpace", MSGBBD_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) cv_mem->cv_lmem;
if (cvspils_mem->s_P_data == NULL) {
CVProcessError(cv_mem, CVSPILS_PMEM_NULL, "CVBBDPRE", "CVBBDPrecGetWorkSpace", MSGBBD_PMEM_NULL);
return(CVSPILS_PMEM_NULL);
}
pdata = (CVBBDPrecData) cvspils_mem->s_P_data;
*lenrwBBDP = pdata->rpwsize;
*leniwBBDP = pdata->ipwsize;
return(CVSPILS_SUCCESS);
}
开发者ID:A1kmm,项目名称:modml-solver,代码行数:29,代码来源:cvode_bbdpre.c
示例12: CVSpilsSetPrecType
int CVSpilsSetPrecType(void *cvode_mem, int pretype)
{
CVodeMem cv_mem;
CVSpilsMem cvspils_mem;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVSPILS_MEM_NULL, "CVSPILS", "CVSpilsSetPrecType", MSGS_CVMEM_NULL);
return(CVSPILS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(cv_mem, CVSPILS_LMEM_NULL, "CVSPILS", "CVSpilsSetPrecType", MSGS_LMEM_NULL);
return(CVSPILS_LMEM_NULL);
}
cvspils_mem = (CVSpilsMem) lmem;
/* Check for legal pretype */
if ((pretype != PREC_NONE) && (pretype != PREC_LEFT) &&
(pretype != PREC_RIGHT) && (pretype != PREC_BOTH)) {
CVProcessError(cv_mem, CVSPILS_ILL_INPUT, "CVSPILS", "CVSpilsSetPrecType", MSGS_BAD_PRETYPE);
return(CVSPILS_ILL_INPUT);
}
cvspils_mem->s_pretype = pretype;
return(CVSPILS_SUCCESS);
}
开发者ID:cran,项目名称:Rsundials,代码行数:29,代码来源:cvodes_spils.c
示例13: CVBandSetJacFnB
int CVBandSetJacFnB(void *cvadj_mem, CVBandJacFnB bjacB, void *jac_dataB)
{
CVadjMem ca_mem;
CVBandMemB cvbandB_mem;
CVodeMem cvB_mem;
int flag;
if (cvadj_mem == NULL) {
CVProcessError(NULL, CVBAND_ADJMEM_NULL, "CVBAND", "CVBandSetJacFnB", MSGB_CAMEM_NULL);
return(CVBAND_ADJMEM_NULL);
}
ca_mem = (CVadjMem) cvadj_mem;
cvB_mem = ca_mem->cvb_mem;
if (lmemB == NULL) {
CVProcessError(cvB_mem, CVBAND_LMEMB_NULL, "CVBAND", "CVBandSetJacFnB", MSGB_LMEMB_NULL);
return(CVBAND_LMEMB_NULL);
}
cvbandB_mem = (CVBandMemB) lmemB;
bjac_B = bjacB;
jac_data_B = jac_dataB;
flag = CVBandSetJacFn(cvB_mem, CVAbandJac, cvadj_mem);
return(flag);
}
开发者ID:DachengXiao,项目名称:MM-PIHM-EnKF,代码行数:28,代码来源:cvodes_band.c
示例14: CVDlsGetWorkSpace
/*
* CVDlsGetWorkSpace returns the length of workspace allocated for the
* CVDLS linear solver.
*/
int CVDlsGetWorkSpace(void *cvode_mem, long int *lenrwLS, long int *leniwLS)
{
CVodeMem cv_mem;
CVDlsMem cvdls_mem;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVDLS_MEM_NULL, "CVDLS", "CVDlsGetWorkSpace", MSGD_CVMEM_NULL);
return(CVDLS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(cv_mem, CVDLS_LMEM_NULL, "CVDLS", "CVDlsGetWorkSpace", MSGD_LMEM_NULL);
return(CVDLS_LMEM_NULL);
}
cvdls_mem = (CVDlsMem) lmem;
if (mtype == SUNDIALS_DENSE) {
*lenrwLS = 2*n*n;
*leniwLS = n;
} else if (mtype == SUNDIALS_BAND) {
*lenrwLS = n*(smu + mu + 2*ml + 2);
*leniwLS = n;
}
return(CVDLS_SUCCESS);
}
开发者ID:AngeloTorelli,项目名称:CompuCell3D,代码行数:32,代码来源:cvode_direct.c
示例15: CVodeSetMaxStep
int CVodeSetMaxStep(void *cvode_mem, realtype hmax)
{
realtype hmax_inv;
CVodeMem cv_mem;
if (cvode_mem==NULL) {
CVProcessError(NULL, CV_MEM_NULL, "CVODE", "CVodeSetMaxStep", MSGCV_NO_MEM);
return (CV_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (hmax < 0) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetMaxStep", MSGCV_NEG_HMAX);
return(CV_ILL_INPUT);
}
/* Passing 0 sets hmax = infinity */
if (hmax == ZERO) {
cv_mem->cv_hmax_inv = HMAX_INV_DEFAULT;
return(CV_SUCCESS);
}
hmax_inv = ONE/hmax;
if (hmax_inv * cv_mem->cv_hmin > ONE) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetMaxStep", MSGCV_BAD_HMIN_HMAX);
return(CV_ILL_INPUT);
}
cv_mem->cv_hmax_inv = hmax_inv;
return(CV_SUCCESS);
}
开发者ID:A1kmm,项目名称:modml-solver,代码行数:33,代码来源:cvode_io.c
示例16: CVodeSetStopTime
int CVodeSetStopTime(void *cvode_mem, realtype tstop)
{
CVodeMem cv_mem;
if (cvode_mem==NULL) {
CVProcessError(NULL, CV_MEM_NULL, "CVODE", "CVodeSetStopTime", MSGCV_NO_MEM);
return (CV_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
/* If CVode was called at least once, test if tstop is legal
* (i.e. if it was not already passed).
* If CVodeSetStopTime is called before the first call to CVode,
* tstop will be checked in CVode. */
if (cv_mem->cv_nst > 0) {
if ( (tstop - cv_mem->cv_tn) * cv_mem->cv_h < ZERO ) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetStopTime", MSGCV_BAD_TSTOP, cv_mem->cv_tn);
return(CV_ILL_INPUT);
}
}
cv_mem->cv_tstop = tstop;
cv_mem->cv_tstopset = TRUE;
return(CV_SUCCESS);
}
开发者ID:A1kmm,项目名称:modml-solver,代码行数:28,代码来源:cvode_io.c
示例17: CVDlsSetDenseJacFn
/*
* CVDlsSetDenseJacFn specifies the dense Jacobian function.
*/
int CVDlsSetDenseJacFn(void *cvode_mem, CVDlsDenseJacFn jac)
{
CVodeMem cv_mem;
CVDlsMem cvdls_mem;
/* Return immediately if cvode_mem is NULL */
if (cvode_mem == NULL) {
CVProcessError(NULL, CVDLS_MEM_NULL, "CVDLS", "CVDlsSetDenseJacFn", MSGD_CVMEM_NULL);
return(CVDLS_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (lmem == NULL) {
CVProcessError(cv_mem, CVDLS_LMEM_NULL, "CVDLS", "CVDlsSetDenseJacFn", MSGD_LMEM_NULL);
return(CVDLS_LMEM_NULL);
}
cvdls_mem = (CVDlsMem) lmem;
if (jac != NULL) {
jacDQ = FALSE;
djac = jac;
} else {
jacDQ = TRUE;
}
return(CVDLS_SUCCESS);
}
开发者ID:AngeloTorelli,项目名称:CompuCell3D,代码行数:30,代码来源:cvode_direct.c
示例18: CVodeSetMinStep
int CVodeSetMinStep(void *cvode_mem, realtype hmin)
{
CVodeMem cv_mem;
if (cvode_mem==NULL) {
CVProcessError(NULL, CV_MEM_NULL, "CVODE", "CVodeSetMinStep", MSGCV_NO_MEM);
return(CV_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (hmin<0) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetMinStep", MSGCV_NEG_HMIN);
return(CV_ILL_INPUT);
}
/* Passing 0 sets hmin = zero */
if (hmin == ZERO) {
cv_mem->cv_hmin = HMIN_DEFAULT;
return(CV_SUCCESS);
}
if (hmin * cv_mem->cv_hmax_inv > ONE) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetMinStep", MSGCV_BAD_HMIN_HMAX);
return(CV_ILL_INPUT);
}
cv_mem->cv_hmin = hmin;
return(CV_SUCCESS);
}
开发者ID:A1kmm,项目名称:modml-solver,代码行数:31,代码来源:cvode_io.c
示例19: CVodeSetMaxOrd
int CVodeSetMaxOrd(void *cvode_mem, int maxord)
{
CVodeMem cv_mem;
int qmax_alloc;
if (cvode_mem==NULL) {
CVProcessError(NULL, CV_MEM_NULL, "CVODE", "CVodeSetMaxOrd", MSGCV_NO_MEM);
return(CV_MEM_NULL);
}
cv_mem = (CVodeMem) cvode_mem;
if (maxord <= 0) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetMaxOrd", MSGCV_NEG_MAXORD);
return(CV_ILL_INPUT);
}
/* Cannot increase maximum order beyond the value that
was used when allocating memory */
qmax_alloc = cv_mem->cv_qmax_alloc;
if (maxord > qmax_alloc) {
CVProcessError(cv_mem, CV_ILL_INPUT, "CVODE", "CVodeSetMaxOrd", MSGCV_BAD_MAXORD);
return(CV_ILL_INPUT);
}
cv_mem->cv_qmax = maxord;
return(CV_SUCCESS);
}
开发者ID:A1kmm,项目名称:modml-solver,代码行数:30,代码来源:cvode_io.c
示例20: CVDiagSetup
static int CVDiagSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
N_Vector vtemp2, N_Vector vtemp3)
{
realtype r;
N_Vector ftemp, y;
booleantype invOK;
CVDiagMem cvdiag_mem;
int retval;
cvdiag_mem = (CVDiagMem) lmem;
/* Rename work vectors for use as temporary values of y and f */
ftemp = vtemp1;
y = vtemp2;
/* Form y with perturbation = FRACT*(func. iter. correction) */
r = FRACT * rl1;
N_VLinearSum(h, fpred, -ONE, zn[1], ftemp);
N_VLinearSum(r, ftemp, ONE, ypred, y);
/* Evaluate f at perturbed y */
retval = f(tn, y, M, f_data);
nfeDI++;
if (retval < 0) {
CVProcessError(cv_mem, CVDIAG_RHSFUNC_UNRECVR, "CVDIAG", "CVDiagSetup", MSGDG_RHSFUNC_FAILED);
last_flag = CVDIAG_RHSFUNC_UNRECVR;
return(-1);
}
if (retval > 0) {
last_flag = CVDIAG_RHSFUNC_RECVR;
return(1);
}
/* Construct M = I - gamma*J with J = diag(deltaf_i/deltay_i) */
N_VLinearSum(ONE, M, -ONE, fpred, M);
N_VLinearSum(FRACT, ftemp, -h, M, M);
N_VProd(ftemp, ewt, y);
/* Protect against deltay_i being at roundoff level */
N_VCompare(uround, y, bit);
N_VAddConst(bit, -ONE, bitcomp);
N_VProd(ftemp, bit, y);
N_VLinearSum(FRACT, y, -ONE, bitcomp, y);
N_VDiv(M, y, M);
N_VProd(M, bit, M);
N_VLinearSum(ONE, M, -ONE, bitcomp, M);
/* Invert M with test for zero components */
invOK = N_VInvTest(M, M);
if (!invOK) {
last_flag = CVDIAG_INV_FAIL;
return(1);
}
/* Set jcur = TRUE, save gamma in gammasv, and return */
*jcurPtr = TRUE;
gammasv = gamma;
last_flag = CVDIAG_SUCCESS;
return(0);
}
开发者ID:AidanRocke,项目名称:CelegansNeuromechanicalGaitModulation,代码行数:60,代码来源:cvode_diag.c
注:本文中的CVProcessError函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论