static void PrintFinalStats(void *cvode_mem) { long int nst, nfe, nsetups, nje, nfeLS, 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 = CVDenseGetNumJacEvals(cvode_mem, &nje); check_flag(&flag, "CVDenseGetNumJacEvals", 1); flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeLS); check_flag(&flag, "CVDenseGetNumRhsEvals", 1); flag = CVodeGetNumGEvals(cvode_mem, &nge); check_flag(&flag, "CVodeGetNumGEvals", 1); printf("\nFinal Statistics:\n"); printf("nst = %-6ld nfe = %-6ld nsetups = %-6ld nfeLS = %-6ld nje = %ld\n", nst, nfe, nsetups, nfeLS, 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 njeD, nfeD; 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 = CVodeGetNumSensRhsEvals(cvode_mem, &nfSe); check_flag(&flag, "CVodeGetNumSensRhsEvals", 1); flag = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS); check_flag(&flag, "CVodeGetNumRhsEvalsSens", 1); flag = CVodeGetNumSensLinSolvSetups(cvode_mem, &nsetupsS); check_flag(&flag, "CVodeGetNumSensLinSolvSetups", 1); flag = CVodeGetNumSensErrTestFails(cvode_mem, &netfS); check_flag(&flag, "CVodeGetNumSensErrTestFails", 1); flag = CVodeGetNumSensNonlinSolvIters(cvode_mem, &nniS); check_flag(&flag, "CVodeGetNumSensNonlinSolvIters", 1); flag = CVodeGetNumSensNonlinSolvConvFails(cvode_mem, &ncfnS); check_flag(&flag, "CVodeGetNumSensNonlinSolvConvFails", 1); } flag = CVDenseGetNumJacEvals(cvode_mem, &njeD); check_flag(&flag, "CVDenseGetNumJacEvals", 1); flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeD); check_flag(&flag, "CVDenseGetNumRhsEvals", 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("njeD = %5ld nfeD = %5ld\n", njeD, nfeD); }
static void PrintFinalStats(void *cvode_mem, int miter, realtype ero) { long int lenrw, leniw, nst, nfe, nsetups, nni, ncfn, netf; long int lenrwL, leniwL, nje, nfeL; int flag; flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw); check_flag(&flag, "CVodeGetWorkSpace", 1); 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); printf("\n Final statistics for this run:\n\n"); printf(" CVode real workspace length = %4ld \n", lenrw); printf(" CVode integer workspace length = %4ld \n", leniw); printf(" Number of steps = %4ld \n", nst); printf(" Number of f-s = %4ld \n", nfe); printf(" Number of setups = %4ld \n", nsetups); printf(" Number of nonlinear iterations = %4ld \n", nni); printf(" Number of nonlinear convergence failures = %4ld \n", ncfn); printf(" Number of error test failures = %4ld \n\n",netf); if (miter != FUNC) { switch(miter) { case DENSE_USER : case DENSE_DQ : flag = CVDenseGetNumJacEvals(cvode_mem, &nje); check_flag(&flag, "CVDenseGetNumJacEvals", 1); flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeL); check_flag(&flag, "CVDenseGetNumRhsEvals", 1); flag = CVDenseGetWorkSpace(cvode_mem, &lenrwL, &leniwL); check_flag(&flag, "CVDenseGetWorkSpace", 1); break; case BAND_USER : case BAND_DQ : flag = CVBandGetNumJacEvals(cvode_mem, &nje); check_flag(&flag, "CVBandGetNumJacEvals", 1); flag = CVBandGetNumRhsEvals(cvode_mem, &nfeL); check_flag(&flag, "CVBandGetNumRhsEvals", 1); flag = CVBandGetWorkSpace(cvode_mem, &lenrwL, &leniwL); check_flag(&flag, "CVBandGetWorkSpace", 1); break; case DIAG : nje = nsetups; flag = CVDiagGetNumRhsEvals(cvode_mem, &nfeL); check_flag(&flag, "CVDiagGetNumRhsEvals", 1); flag = CVDiagGetWorkSpace(cvode_mem, &lenrwL, &leniwL); check_flag(&flag, "CVDiagGetWorkSpace", 1); break; } printf(" Linear solver real workspace length = %4ld \n", lenrwL); printf(" Linear solver integer workspace length = %4ld \n", leniwL); printf(" Number of Jacobian evaluations = %4ld \n", nje); printf(" Number of f-s evaluations = %4ld \n\n", nfeL); } #if defined(SUNDIALS_EXTENDED_PRECISION) printf(" Error overrun = %.3Lf \n", ero); #else printf(" Error overrun = %.3f \n", ero); #endif }