CAMLprim value sundials_ml_ida_get_last_order(value ida_solver, value klast) { CAMLparam2(ida_solver, klast); int _klast; const int ret = IDAGetLastOrder(IDA_MEM(ida_solver), &_klast); Store_field(klast, 0, Val_int(_klast)); CAMLreturn(Val_int(ret)); }
static void PrintOutput(void *mem, realtype t, N_Vector y) { realtype *yval; int retval, kused; long int nst; realtype hused; yval = NV_DATA_S(y); retval = IDAGetLastOrder(mem, &kused); check_flag(&retval, "IDAGetLastOrder", 1); retval = IDAGetNumSteps(mem, &nst); check_flag(&retval, "IDAGetNumSteps", 1); retval = IDAGetLastStep(mem, &hused); check_flag(&retval, "IDAGetLastStep", 1); #if defined(SUNDIALS_EXTENDED_PRECISION) printf("%10.4Le %12.4Le %12.4Le %12.4Le | %3ld %1d %12.4Le\n", t, yval[0], yval[1], yval[2], nst, kused, hused); #elif defined(SUNDIALS_DOUBLE_PRECISION) printf("%10.4e %12.4e %12.4e %12.4e | %3ld %1d %12.4e\n", t, yval[0], yval[1], yval[2], nst, kused, hused); #else printf("%10.4e %12.4e %12.4e %12.4e | %3ld %1d %12.4e\n", t, yval[0], yval[1], yval[2], nst, kused, hused); #endif }
static void PrintOutput(void *ida_mem, N_Vector c, realtype t) { int i, kused, retval; long int nst; realtype *c_bl, *c_tr, hused; retval = IDAGetLastOrder(ida_mem, &kused); check_retval(&retval, "IDAGetLastOrder", 1); retval = IDAGetNumSteps(ida_mem, &nst); check_retval(&retval, "IDAGetNumSteps", 1); retval = IDAGetLastStep(ida_mem, &hused); check_retval(&retval, "IDAGetLastStep", 1); c_bl = IJ_Vptr(c,0,0); c_tr = IJ_Vptr(c,MX-1,MY-1); #if defined(SUNDIALS_EXTENDED_PRECISION) printf("%8.2Le %12.4Le %12.4Le | %3ld %1d %12.4Le\n", t, c_bl[0], c_tr[0], nst, kused, hused); for (i=1;i<NUM_SPECIES;i++) printf(" %12.4Le %12.4Le |\n",c_bl[i],c_tr[i]); #elif defined(SUNDIALS_DOUBLE_PRECISION) printf("%8.2e %12.4e %12.4e | %3ld %1d %12.4e\n", t, c_bl[0], c_tr[0], nst, kused, hused); for (i=1;i<NUM_SPECIES;i++) printf(" %12.4e %12.4e |\n",c_bl[i],c_tr[i]); #else printf("%8.2e %12.4e %12.4e | %3ld %1d %12.4e\n", t, c_bl[0], c_tr[0], nst, kused, hused); for (i=1;i<NUM_SPECIES;i++) printf(" %12.4e %12.4e |\n",c_bl[i],c_tr[i]); #endif printf("\n"); }
static void PrintOutput(void *mem, realtype t, N_Vector uu) { int ier; realtype umax, hused; long int nst, nni, nje, nre; int kused; umax = N_VMaxNorm(uu); ier = IDAGetLastOrder(mem, &kused); check_flag(&ier, "IDAGetLastOrder", 1); ier = IDAGetNumSteps(mem, &nst); check_flag(&ier, "IDAGetNumSteps", 1); ier = IDAGetNumNonlinSolvIters(mem, &nni); check_flag(&ier, "IDAGetNumNonlinSolvIters", 1); ier = IDAGetNumResEvals(mem, &nre); check_flag(&ier, "IDAGetNumResEvals", 1); ier = IDAGetLastStep(mem, &hused); check_flag(&ier, "IDAGetLastStep", 1); ier = IDASlsGetNumJacEvals(mem, &nje); check_flag(&ier, "IDASlsGetNumJacEvals", 1); #if defined(SUNDIALS_EXTENDED_PRECISION) printf(" %5.2Lf %13.5Le %d %3ld %3ld %3ld %4ld %9.2Le \n", t, umax, kused, nst, nni, nje, nre, hused); #elif defined(SUNDIALS_DOUBLE_PRECISION) printf(" %5.2f %13.5e %d %3ld %3ld %3ld %4ld %9.2e \n", t, umax, kused, nst, nni, nje, nre, hused); #else printf(" %5.2f %13.5e %d %3ld %3ld %3ld %4ld %9.2e \n", t, umax, kused, nst, nni, nje, nre, hused); #endif }
int Cvode::order() { int i = 0; if (use_daspk_) { if (daspk_->mem_) { IDAGetLastOrder(daspk_->mem_, &i); } }else{ if (mem_) { CVodeGetLastOrder(mem_, &i); } } return i; }
static void PrintOutput(void *mem, N_Vector cc, realtype tt, UserData webdata, MPI_Comm comm) { MPI_Status status; realtype *cdata, clast[2], hused; long int nst; int i, kused, flag, thispe, npelast, ilast;; thispe = webdata->thispe; npelast = webdata->npes - 1; cdata = N_VGetArrayPointer_Parallel(cc); /* Send conc. at top right mesh point from PE npes-1 to PE 0. */ if (thispe == npelast) { ilast = NUM_SPECIES*MXSUB*MYSUB - 2; if (npelast != 0) MPI_Send(&cdata[ilast], 2, PVEC_REAL_MPI_TYPE, 0, 0, comm); else { clast[0] = cdata[ilast]; clast[1] = cdata[ilast+1]; } } /* On PE 0, receive conc. at top right from PE npes - 1. Then print performance data and sampled solution values. */ if (thispe == 0) { if (npelast != 0) MPI_Recv(&clast[0], 2, PVEC_REAL_MPI_TYPE, npelast, 0, comm, &status); flag = IDAGetLastOrder(mem, &kused); check_flag(&flag, "IDAGetLastOrder", 1, thispe); flag = IDAGetNumSteps(mem, &nst); check_flag(&flag, "IDAGetNumSteps", 1, thispe); flag = IDAGetLastStep(mem, &hused); check_flag(&flag, "IDAGetLastStep", 1, thispe); #if defined(SUNDIALS_EXTENDED_PRECISION) printf("%8.2Le %12.4Le %12.4Le | %3ld %1d %12.4Le\n", tt, cdata[0], clast[0], nst, kused, hused); for (i=1;i<NUM_SPECIES;i++) printf(" %12.4Le %12.4Le |\n",cdata[i],clast[i]); #elif defined(SUNDIALS_DOUBLE_PRECISION) printf("%8.2e %12.4e %12.4e | %3ld %1d %12.4e\n", tt, cdata[0], clast[0], nst, kused, hused); for (i=1;i<NUM_SPECIES;i++) printf(" %12.4e %12.4e |\n",cdata[i],clast[i]); #else printf("%8.2e %12.4e %12.4e | %3ld %1d %12.4e\n", tt, cdata[0], clast[0], nst, kused, hused); for (i=1;i<NUM_SPECIES;i++) printf(" %12.4e %12.4e |\n",cdata[i],clast[i]); #endif printf("\n"); } }
static void PrintOutput(void *mem, realtype t, N_Vector y) { realtype *yval; int flag, kused; long int nst; realtype hused; yval = NV_DATA_S(y); flag = IDAGetLastOrder(mem, &kused); flag = IDAGetNumSteps(mem, &nst); flag = IDAGetLastStep(mem, &hused); printf("%10.4e %12.4e %12.4e %12.4e %3ld %1d %12.4e\n", t, yval[0], yval[1], yval[2], nst, kused, hused); }
static void PrintOutput(int id, void *mem, realtype t, N_Vector uu) { realtype umax, hused; int kused, ier; long int nst, nni, nre, nli, npe, nps, nreLS, nge; umax = N_VMaxNorm(uu); if (id == 0) { ier = IDAGetLastOrder(mem, &kused); check_flag(&ier, "IDAGetLastOrder", 1, id); ier = IDAGetNumSteps(mem, &nst); check_flag(&ier, "IDAGetNumSteps", 1, id); ier = IDAGetNumNonlinSolvIters(mem, &nni); check_flag(&ier, "IDAGetNumNonlinSolvIters", 1, id); ier = IDAGetNumResEvals(mem, &nre); check_flag(&ier, "IDAGetNumResEvals", 1, id); ier = IDAGetLastStep(mem, &hused); check_flag(&ier, "IDAGetLastStep", 1, id); ier = IDASpilsGetNumLinIters(mem, &nli); check_flag(&ier, "IDASpilsGetNumLinIters", 1, id); ier = IDASpilsGetNumResEvals(mem, &nreLS); check_flag(&ier, "IDASpilsGetNumResEvals", 1, id); ier = IDABBDPrecGetNumGfnEvals(mem, &nge); check_flag(&ier, "IDABBDPrecGetNumGfnEvals", 1, id); ier = IDASpilsGetNumPrecEvals(mem, &npe); check_flag(&ier, "IDASpilsGetPrecEvals", 1, id); ier = IDASpilsGetNumPrecSolves(mem, &nps); check_flag(&ier, "IDASpilsGetNumPrecSolves", 1, id); #if defined(SUNDIALS_EXTENDED_PRECISION) printf(" %5.2Lf %13.5Le %d %3ld %3ld %3ld %4ld %4ld %4ld %9.2Le %3ld %3ld\n", t, umax, kused, nst, nni, nli, nre, nreLS, nge, hused, npe, nps); #elif defined(SUNDIALS_DOUBLE_PRECISION) printf(" %5.2f %13.5e %d %3ld %3ld %3ld %4ld %4ld %4ld %9.2e %3ld %3ld\n", t, umax, kused, nst, nni, nli, nre, nreLS, nge, hused, npe, nps); #else printf(" %5.2f %13.5e %d %3ld %3ld %3ld %4ld %4ld %4ld %9.2e %3ld %3ld\n", t, umax, kused, nst, nni, nli, nre, nreLS, nge, hused, npe, nps); #endif } }
static void PrintOutput(void *mem, realtype t, N_Vector uu) { realtype hused, umax; long int nst, nni, nje, nre, nreS, nli, npe, nps; int kused, ier; umax = N_VMaxNorm(uu); ier = IDAGetLastOrder(mem, &kused); check_flag(&ier, "IDAGetLastOrder", 1); ier = IDAGetNumSteps(mem, &nst); check_flag(&ier, "IDAGetNumSteps", 1); ier = IDAGetNumNonlinSolvIters(mem, &nni); check_flag(&ier, "IDAGetNumNonlinSolvIters", 1); ier = IDAGetNumResEvals(mem, &nre); check_flag(&ier, "IDAGetNumResEvals", 1); ier = IDAGetLastStep(mem, &hused); check_flag(&ier, "IDAGetLastStep", 1); ier = IDASpgmrGetNumJtimesEvals(mem, &nje); check_flag(&ier, "IDASpgmrGetNumJtimesEvals", 1); ier = IDASpgmrGetNumLinIters(mem, &nli); check_flag(&ier, "IDASpgmrGetNumLinIters", 1); ier = IDASpgmrGetNumResEvals(mem, &nreS); check_flag(&ier, "IDASpgmrGetNumResEvals", 1); ier = IDASpgmrGetNumPrecEvals(mem, &npe); check_flag(&ier, "IDASpgmrGetPrecEvals", 1); ier = IDASpgmrGetNumPrecSolves(mem, &nps); check_flag(&ier, "IDASpgmrGetNumPrecSolves", 1); #if defined(SUNDIALS_EXTENDED_PRECISION) printf(" %5.2Lf %13.5Le %d %3ld %3ld %3ld %4ld %4ld %9.2Le %3ld %3ld\n", t, umax, kused, nst, nni, nje, nre, nreS, hused, npe, nps); #elif defined(SUNDIALS_DOUBLE_PRECISION) printf(" %5.2f %13.5le %d %3ld %3ld %3ld %4ld %4ld %9.2le %3ld %3ld\n", t, umax, kused, nst, nni, nje, nre, nreS, hused, npe, nps); #else printf(" %5.2f %13.5e %d %3ld %3ld %3ld %4ld %4ld %9.2e %3ld %3ld\n", t, umax, kused, nst, nni, nje, nre, nreS, hused, npe, nps); #endif }
int SundialsIda::getLastOrder() { int order; IDAGetLastOrder(sundialsMem, &order); return order; }