static void PrintFinalStats(void *cvode_mem) { long int nst, nfe, nsetups, nje, nni, ncfn, netf, nge; int flag; flag = CVodeGetNumSteps(cvode_mem, &nst); check_flag(&flag, "CVodeGetNumSteps", 1); flag = CVodeGetNumRhsEvals(cvode_mem, &nfe); check_flag(&flag, "CVodeGetNumRhsEvals", 1); flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups); check_flag(&flag, "CVodeGetNumLinSolvSetups", 1); flag = CVodeGetNumErrTestFails(cvode_mem, &netf); check_flag(&flag, "CVodeGetNumErrTestFails", 1); flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni); check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1); flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn); check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1); flag = CVSlsGetNumJacEvals(cvode_mem, &nje); check_flag(&flag, "CVSlsGetNumJacEvals", 1); flag = CVodeGetNumGEvals(cvode_mem, &nge); check_flag(&flag, "CVodeGetNumGEvals", 1); printf("\nFinal Statistics:\n"); printf("nst = %-6ld nfe = %-6ld nsetups = %-6ld nje = %ld\n", nst, nfe, nsetups, nje); printf("nni = %-6ld ncfn = %-6ld netf = %-6ld nge = %ld\n \n", nni, ncfn, netf, nge); }
static void PrintFinalStats(void *cvode_mem, booleantype sensi) { long int nst; long int nfe, nsetups, nni, ncfn, netf; long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS; long int nje; int flag; flag = CVodeGetNumSteps(cvode_mem, &nst); check_flag(&flag, "CVodeGetNumSteps", 1); flag = CVodeGetNumRhsEvals(cvode_mem, &nfe); check_flag(&flag, "CVodeGetNumRhsEvals", 1); flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups); check_flag(&flag, "CVodeGetNumLinSolvSetups", 1); flag = CVodeGetNumErrTestFails(cvode_mem, &netf); check_flag(&flag, "CVodeGetNumErrTestFails", 1); flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni); check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1); flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn); check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1); if (sensi) { flag = CVodeGetSensNumRhsEvals(cvode_mem, &nfSe); check_flag(&flag, "CVodeGetSensNumRhsEvals", 1); flag = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS); check_flag(&flag, "CVodeGetNumRhsEvalsSens", 1); flag = CVodeGetSensNumLinSolvSetups(cvode_mem, &nsetupsS); check_flag(&flag, "CVodeGetSensNumLinSolvSetups", 1); flag = CVodeGetSensNumErrTestFails(cvode_mem, &netfS); check_flag(&flag, "CVodeGetSensNumErrTestFails", 1); flag = CVodeGetSensNumNonlinSolvIters(cvode_mem, &nniS); check_flag(&flag, "CVodeGetSensNumNonlinSolvIters", 1); flag = CVodeGetSensNumNonlinSolvConvFails(cvode_mem, &ncfnS); check_flag(&flag, "CVodeGetSensNumNonlinSolvConvFails", 1); } flag = CVSlsGetNumJacEvals(cvode_mem, &nje); check_flag(&flag, "CVDlsGetNumJacEvals", 1); printf("\nFinal Statistics\n\n"); printf("nst = %5ld\n\n", nst); printf("nfe = %5ld\n", nfe); printf("netf = %5ld nsetups = %5ld\n", netf, nsetups); printf("nni = %5ld ncfn = %5ld\n", nni, ncfn); if(sensi) { printf("\n"); printf("nfSe = %5ld nfeS = %5ld\n", nfSe, nfeS); printf("netfs = %5ld nsetupsS = %5ld\n", netfS, nsetupsS); printf("nniS = %5ld ncfnS = %5ld\n", nniS, ncfnS); } printf("\n"); printf("nje = %5ld\n", nje); }
CAMLprim value sunml_cvode_superlumt_get_num_jac_evals(value vcvode_mem) { CAMLparam1(vcvode_mem); long int r = 0; #if SUNDIALS_LIB_VERSION < 300 void *cvode_mem = CVODE_MEM_FROM_ML (vcvode_mem); int flag = CVSlsGetNumJacEvals(cvode_mem, &r); CHECK_FLAG("CVSlsGetNumJacEvals", flag); #else caml_raise_constant(SUNDIALS_EXN(NotImplementedBySundialsVersion)); #endif CAMLreturn(Val_long(r)); }