static void PrintFinalStats(void *cpode_mem) { realtype h0u; long int nst, nfe, nsetups, nje, nfeLS, nni, ncfn, netf, nge; int flag; flag = CPodeGetActualInitStep(cpode_mem, &h0u); flag = CPodeGetNumSteps(cpode_mem, &nst); flag = CPodeGetNumFctEvals(cpode_mem, &nfe); flag = CPodeGetNumLinSolvSetups(cpode_mem, &nsetups); flag = CPodeGetNumErrTestFails(cpode_mem, &netf); flag = CPodeGetNumNonlinSolvIters(cpode_mem, &nni); flag = CPodeGetNumNonlinSolvConvFails(cpode_mem, &ncfn); flag = CPDlsGetNumJacEvals(cpode_mem, &nje); flag = CPDlsGetNumFctEvals(cpode_mem, &nfeLS); flag = CPodeGetNumGEvals(cpode_mem, &nge); printf("\nFinal Statistics:\n"); printf("h0u = %g\n",h0u); 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); }
void GetSol(void *cpode_mem, N_Vector yy0, realtype tol, realtype tout, booleantype proj, N_Vector yref) { N_Vector yy, yp; realtype t, x, y, xd, yd, g; int flag; long int nst, nfe, nsetups, nje, nfeLS, ncfn, netf; if (proj) { printf(" YES "); CPodeSetProjFrequency(cpode_mem, 1); } else { CPodeSetProjFrequency(cpode_mem, 0); printf(" NO "); } yy = N_VNew_Serial(4); yp = N_VNew_Serial(4); flag = CPodeReInit(cpode_mem, (void *)f, NULL, 0.0, yy0, NULL, CP_SS, tol, &tol); flag = CPode(cpode_mem, tout, &t, yy, yp, CP_NORMAL_TSTOP); x = Ith(yy,1); y = Ith(yy,2); g = ABS(x*x + y*y - 1.0); N_VLinearSum(1.0, yy, -1.0, yref, yy); N_VAbs(yy, yy); x = Ith(yy,1); y = Ith(yy,2); xd = Ith(yy,3); yd = Ith(yy,4); printf("%9.2e %9.2e %9.2e %9.2e | %9.2e |", Ith(yy,1),Ith(yy,2),Ith(yy,3),Ith(yy,4),g); CPodeGetNumSteps(cpode_mem, &nst); CPodeGetNumFctEvals(cpode_mem, &nfe); CPodeGetNumLinSolvSetups(cpode_mem, &nsetups); CPodeGetNumErrTestFails(cpode_mem, &netf); CPodeGetNumNonlinSolvConvFails(cpode_mem, &ncfn); CPDlsGetNumJacEvals(cpode_mem, &nje); CPDlsGetNumFctEvals(cpode_mem, &nfeLS); printf(" %6ld %6ld+%-4ld %4ld (%3ld) | %3ld %3ld\n", nst, nfe, nfeLS, nsetups, nje, ncfn, netf); N_VDestroy_Serial(yy); N_VDestroy_Serial(yp); return; }
static void PrintFinalStats(void *cvode_mem) { int flag; long int nst, nfe, nsetups, netf, nni, ncfn, nje, nfeLS; flag = CPodeGetNumSteps(cvode_mem, &nst); flag = CPodeGetNumFctEvals(cvode_mem, &nfe); flag = CPodeGetNumLinSolvSetups(cvode_mem, &nsetups); flag = CPodeGetNumErrTestFails(cvode_mem, &netf); flag = CPodeGetNumNonlinSolvIters(cvode_mem, &nni); flag = CPodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn); flag = CPDlsGetNumJacEvals(cvode_mem, &nje); flag = CPDlsGetNumFctEvals(cvode_mem, &nfeLS); 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 = %ld\n \n", nni, ncfn, netf); return; }