static void PrintFinalStats(void *cvode_mem, booleantype sensi, booleantype err_con, int sensi_meth) { long int nst; long int nfe, nsetups, nni, ncfn, netf; long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS; int retval; retval = CVodeGetNumSteps(cvode_mem, &nst); check_retval(&retval, "CVodeGetNumSteps", 1, 0); retval = CVodeGetNumRhsEvals(cvode_mem, &nfe); check_retval(&retval, "CVodeGetNumRhsEvals", 1, 0); retval = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups); check_retval(&retval, "CVodeGetNumLinSolvSetups", 1, 0); retval = CVodeGetNumErrTestFails(cvode_mem, &netf); check_retval(&retval, "CVodeGetNumErrTestFails", 1, 0); retval = CVodeGetNumNonlinSolvIters(cvode_mem, &nni); check_retval(&retval, "CVodeGetNumNonlinSolvIters", 1, 0); retval = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn); check_retval(&retval, "CVodeGetNumNonlinSolvConvFails", 1, 0); if (sensi) { retval = CVodeGetSensNumRhsEvals(cvode_mem, &nfSe); check_retval(&retval, "CVodeGetSensNumRhsEvals", 1, 0); retval = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS); check_retval(&retval, "CVodeGetNumRhsEvalsSens", 1, 0); retval = CVodeGetSensNumLinSolvSetups(cvode_mem, &nsetupsS); check_retval(&retval, "CVodeGetSensNumLinSolvSetups", 1, 0); retval = CVodeGetSensNumErrTestFails(cvode_mem, &netfS); if (err_con) { retval = CVodeGetSensNumErrTestFails(cvode_mem, &netfS); check_retval(&retval, "CVodeGetSensNumErrTestFails", 1, 0); } else { netfS = 0; } if ((sensi_meth == CV_STAGGERED) || (sensi_meth == CV_STAGGERED1)) { retval = CVodeGetSensNumNonlinSolvIters(cvode_mem, &nniS); check_retval(&retval, "CVodeGetSensNumNonlinSolvIters", 1, 0); retval = CVodeGetSensNumNonlinSolvConvFails(cvode_mem, &ncfnS); check_retval(&retval, "CVodeGetSensNumNonlinSolvConvFails", 1, 0); } else { nniS = 0; ncfnS = 0; } } 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); } }
void ode_solver_print_stats(const ode_solver* solver, FILE* outF){ long int nst; long int nfe, nsetups, nni, ncfn, netf; long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS; long int nje, nfeLS; int flag; void* cvode_mem = solver->cvode_mem; flag = CVodeGetNumSteps(cvode_mem, &nst); flag = CVodeGetNumRhsEvals(cvode_mem, &nfe); flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups); flag = CVodeGetNumErrTestFails(cvode_mem, &netf); flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni); flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn); if (solver->yS != 0) { flag = CVodeGetSensNumRhsEvals(cvode_mem, &nfSe); flag = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS); flag = CVodeGetSensNumLinSolvSetups(cvode_mem, &nsetupsS); flag = CVodeGetSensNumErrTestFails(cvode_mem, &netfS); flag = CVodeGetSensNumNonlinSolvIters(cvode_mem, &nniS); flag = CVodeGetSensNumNonlinSolvConvFails(cvode_mem, &ncfnS); } flag = CVDlsGetNumJacEvals(cvode_mem, &nje); flag = CVDlsGetNumRhsEvals(cvode_mem, &nfeLS); fprintf(outF,"\n# Solver Statistics\n\n"); fprintf(outF,"# Steps = %5ld\n\n", nst); fprintf(outF,"# RhsEvals = %5ld\n", nfe); fprintf(outF,"# ErrTestFails = %5ld LinSolvSetups = %5ld\n", netf, nsetups); fprintf(outF,"# NonlinSolvIters = %5ld NonlinSolvConvFails = %5ld\n", nni, ncfn); if(solver->yS != 0) { fprintf(outF,"\n# Sensitivities Statistics\n"); fprintf(outF,"# SensRhsEvals = %5ld RhsEvals = %5ld\n", nfSe, nfeS); fprintf(outF,"# ErrTestFails = %5ld LinSolvSetups = %5ld\n", netfS, nsetupsS); fprintf(outF,"# NonlinSolvIters = %5ld NonlinSolvConvFails = %5ld\n", nniS, ncfnS); } fprintf(outF,"\n# Jacobian Statistics\n"); fprintf(outF,"# JacEvals = %5ld RhsEvals = %5ld\n", nje, nfeLS); }
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, nfeLS; int retval; retval = CVodeGetNumSteps(cvode_mem, &nst); check_retval(&retval, "CVodeGetNumSteps", 1); retval = CVodeGetNumRhsEvals(cvode_mem, &nfe); check_retval(&retval, "CVodeGetNumRhsEvals", 1); retval = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups); check_retval(&retval, "CVodeGetNumLinSolvSetups", 1); retval = CVodeGetNumErrTestFails(cvode_mem, &netf); check_retval(&retval, "CVodeGetNumErrTestFails", 1); retval = CVodeGetNumNonlinSolvIters(cvode_mem, &nni); check_retval(&retval, "CVodeGetNumNonlinSolvIters", 1); retval = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn); check_retval(&retval, "CVodeGetNumNonlinSolvConvFails", 1); if (sensi) { retval = CVodeGetSensNumRhsEvals(cvode_mem, &nfSe); check_retval(&retval, "CVodeGetSensNumRhsEvals", 1); retval = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS); check_retval(&retval, "CVodeGetNumRhsEvalsSens", 1); retval = CVodeGetSensNumLinSolvSetups(cvode_mem, &nsetupsS); check_retval(&retval, "CVodeGetSensNumLinSolvSetups", 1); retval = CVodeGetSensNumErrTestFails(cvode_mem, &netfS); check_retval(&retval, "CVodeGetSensNumErrTestFails", 1); retval = CVodeGetSensNumNonlinSolvIters(cvode_mem, &nniS); check_retval(&retval, "CVodeGetSensNumNonlinSolvIters", 1); retval = CVodeGetSensNumNonlinSolvConvFails(cvode_mem, &ncfnS); check_retval(&retval, "CVodeGetSensNumNonlinSolvConvFails", 1); } retval = CVDlsGetNumJacEvals(cvode_mem, &nje); check_retval(&retval, "CVDlsGetNumJacEvals", 1); retval = CVDlsGetNumRhsEvals(cvode_mem, &nfeLS); check_retval(&retval, "CVDlsGetNumRhsEvals", 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 nfeLS = %5ld\n", nje, nfeLS); }
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 nli, ncfl, npe, nps; 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 = CVSpilsGetNumLinIters(cvode_mem, &nli); check_flag(&flag, "CVSpilsGetNumLinIters", 1); flag = CVSpilsGetNumConvFails(cvode_mem, &ncfl); check_flag(&flag, "CVSpilsGetNumConvFails", 1); flag = CVSpilsGetNumPrecEvals(cvode_mem, &npe); check_flag(&flag, "CVSpilsGetNumPrecEvals", 1); flag = CVSpilsGetNumPrecSolves(cvode_mem, &nps); check_flag(&flag, "CVSpilsGetNumPrecSolves", 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("nli = %5ld ncfl = %5ld\n", nli, ncfl); printf("npe = %5ld nps = %5ld\n", npe, nps); }