SBML_ODESOLVER_API void IntegratorInstance_printCVODESStatistics(integratorInstance_t *engine, FILE *f) { int flag; long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS; cvodeSolver_t *solver = engine->solver; /* print additional CVODES statistics ..TODO...*/ flag = CVodeGetNumSensRhsEvals(solver->cvode_mem, &nfSe); check_flag(&flag, "CVodeGetNumSensRhsEvals", 1, f); flag = CVodeGetNumRhsEvalsSens(solver->cvode_mem, &nfeS); check_flag(&flag, "CVodeGetNumRhsEvalsSens", 1, f); flag = CVodeGetNumSensLinSolvSetups(solver->cvode_mem, &nsetupsS); check_flag(&flag, "CVodeGetNumSensLinSolvSetups", 1, f); flag = CVodeGetNumSensErrTestFails(solver->cvode_mem, &netfS); check_flag(&flag, "CVodeGetNumSensErrTestFails", 1, f); flag = CVodeGetNumSensNonlinSolvIters(solver->cvode_mem, &nniS); check_flag(&flag, "CVodeGetNumSensNonlinSolvIters", 1, f); flag = CVodeGetNumSensNonlinSolvConvFails(solver->cvode_mem, &ncfnS); check_flag(&flag, "CVodeGetNumSensNonlinSolvConvFails", 1, f); fprintf(f, "## CVode Statistics:\n"); fprintf(f, "## nfSe = %5ld nfeS = %5ld\n", nfSe, nfeS); fprintf(f, "## netfs = %5ld nsetupsS = %5ld\n", netfS, nsetupsS); fprintf(f, "## nniS = %5ld ncfnS = %5ld\n", nniS, ncfnS); }
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); }