Lines Matching refs:cvode

17   TS_Sundials *cvode = (TS_Sundials *)ts->data;  in TSPrecond_Sundials_Petsc()  local
20 Vec yy = cvode->w1, yydot = cvode->ydot; in TSPrecond_Sundials_Petsc()
52 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSPSolve_Sundials_Petsc() local
54 Vec rr = cvode->w1, zz = cvode->w2; in TSPSolve_Sundials_Petsc()
88 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSFunction_Sundials() local
89 Vec yy = cvode->w1, yyd = cvode->w2, yydot = cvode->ydot; in TSFunction_Sundials()
121 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSStep_Sundials() local
129 mem = cvode->mem; in TSStep_Sundials()
132 N_VSetArrayPointer((realtype *)y_data, cvode->y); in TSStep_Sundials()
137 if (cvode->monitorstep) flag = CVode(mem, tout, cvode->y, &t, CV_ONE_STEP); in TSStep_Sundials()
138 else flag = CVode(mem, tout, cvode->y, &t, CV_NORMAL); in TSStep_Sundials()
199 PetscCall(VecPlaceArray(cvode->w1, y_data)); in TSStep_Sundials()
200 PetscCall(VecCopy(cvode->w1, cvode->update)); in TSStep_Sundials()
201 PetscCall(VecResetArray(cvode->w1)); in TSStep_Sundials()
202 PetscCall(VecCopy(cvode->update, ts->vec_sol)); in TSStep_Sundials()
208 …if (!cvode->monitorstep) ts->steps += nsteps - 1; /* TSStep() increments the step counter by one */ in TSStep_Sundials()
214 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSInterpolate_Sundials() local
226 if (cvode->use_dense) { in TSInterpolate_Sundials()
233 y = N_VMake_Parallel(cvode->comm_sundials, locsize, glosize, (realtype *)x_data); in TSInterpolate_Sundials()
238 PetscCallExternal(CVodeGetDky, cvode->mem, t, 0, y); in TSInterpolate_Sundials()
245 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSReset_Sundials() local
248 PetscCall(VecDestroy(&cvode->update)); in TSReset_Sundials()
249 PetscCall(VecDestroy(&cvode->ydot)); in TSReset_Sundials()
250 PetscCall(VecDestroy(&cvode->w1)); in TSReset_Sundials()
251 PetscCall(VecDestroy(&cvode->w2)); in TSReset_Sundials()
252 if (cvode->mem) CVodeFree(&cvode->mem); in TSReset_Sundials()
258 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSDestroy_Sundials() local
262 PetscCallMPI(MPI_Comm_free(&cvode->comm_sundials)); in TSDestroy_Sundials()
280 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSetUp_Sundials() local
295 if (cvode->use_dense) { in TSSetUp_Sundials()
300 cvode->y = N_VNew_Serial(locsize); in TSSetUp_Sundials()
302 cvode->y = N_VNew_Parallel(cvode->comm_sundials, locsize, glosize); in TSSetUp_Sundials()
304 PetscCheck(cvode->y, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "cvode->y is not allocated"); in TSSetUp_Sundials()
308 y_data = (PetscScalar *)N_VGetArrayPointer(cvode->y); in TSSetUp_Sundials()
312 PetscCall(VecDuplicate(ts->vec_sol, &cvode->update)); in TSSetUp_Sundials()
313 PetscCall(VecDuplicate(ts->vec_sol, &cvode->ydot)); in TSSetUp_Sundials()
320 …cCreateMPIWithArray(PetscObjectComm((PetscObject)ts), 1, locsize, PETSC_DECIDE, NULL, &cvode->w1)); in TSSetUp_Sundials()
321 …cCreateMPIWithArray(PetscObjectComm((PetscObject)ts), 1, locsize, PETSC_DECIDE, NULL, &cvode->w2)); in TSSetUp_Sundials()
324 cvode->mem = CVodeCreate(cvode->cvode_type, CV_NEWTON); in TSSetUp_Sundials()
325 PetscCheck(cvode->mem, PETSC_COMM_SELF, PETSC_ERR_MEM, "CVodeCreate() fails"); in TSSetUp_Sundials()
328 PetscCallExternal(CVodeSetUserData, cvode->mem, ts); in TSSetUp_Sundials()
331 PetscCallExternal(CVodeSetInitStep, cvode->mem, (realtype)ts->time_step); in TSSetUp_Sundials()
332 if (cvode->mindt > 0) { in TSSetUp_Sundials()
333 int flag = CVodeSetMinStep(cvode->mem, (realtype)cvode->mindt); in TSSetUp_Sundials()
340 if (cvode->maxdt > 0) PetscCallExternal(CVodeSetMaxStep, cvode->mem, (realtype)cvode->maxdt); in TSSetUp_Sundials()
345 PetscCallExternal(CVodeInit, cvode->mem, TSFunction_Sundials, ts->ptime, cvode->y); in TSSetUp_Sundials()
348 PetscCallExternal(CVodeSStolerances, cvode->mem, cvode->reltol, cvode->abstol); in TSSetUp_Sundials()
351 if (cvode->maxord != PETSC_DEFAULT) PetscCallExternal(CVodeSetMaxOrd, cvode->mem, cvode->maxord); in TSSetUp_Sundials()
354 PetscCallExternal(CVodeSetMaxNumSteps, cvode->mem, ts->max_steps); in TSSetUp_Sundials()
356 if (cvode->use_dense) { in TSSetUp_Sundials()
357 PetscCallExternal(CVDense, cvode->mem, locsize); in TSSetUp_Sundials()
365 PetscCallExternal(CVSpgmr, cvode->mem, PREC_NONE, 0); in TSSetUp_Sundials()
367 PetscCallExternal(CVSpgmr, cvode->mem, PREC_LEFT, cvode->maxl); in TSSetUp_Sundials()
371 …PetscCallExternal(CVSpilsSetPreconditioner, cvode->mem, TSPrecond_Sundials_Private, TSPSolve_Sundi… in TSSetUp_Sundials()
384 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSetFromOptions_Sundials() local
391 … "Scheme", "TSSundialsSetType", TSSundialsLmmTypes, 3, TSSundialsLmmTypes[cvode->cvode_type], &ind… in TSSetFromOptions_Sundials()
393 …amSchmidtType", TSSundialsGramSchmidtTypes, 3, TSSundialsGramSchmidtTypes[cvode->gtype], &indx, &f… in TSSetFromOptions_Sundials()
395 …, "Absolute tolerance for convergence", "TSSundialsSetTolerance", cvode->abstol, &cvode->abstol, N… in TSSetFromOptions_Sundials()
396 …, "Relative tolerance for convergence", "TSSundialsSetTolerance", cvode->reltol, &cvode->reltol, N… in TSSetFromOptions_Sundials()
397 …sundials_mindt", "Minimum step size", "TSSundialsSetMinTimeStep", cvode->mindt, &cvode->mindt, NUL… in TSSetFromOptions_Sundials()
398 …sundials_maxdt", "Maximum step size", "TSSundialsSetMaxTimeStep", cvode->maxdt, &cvode->maxdt, NUL… in TSSetFromOptions_Sundials()
399 …ce tolerance for linear solve", "TSSundialsSetLinearTolerance", cvode->linear_tol, &cvode->linear_… in TSSetFromOptions_Sundials()
400 …maxord", "Max Order for BDF/Adams method", "TSSundialsSetMaxOrd", cvode->maxord, &cvode->maxord, N… in TSSetFromOptions_Sundials()
401 …axl", "Max dimension of the Krylov subspace", "TSSundialsSetMaxl", cvode->maxl, &cvode->maxl, NULL… in TSSetFromOptions_Sundials()
402 …or SUNDIALS internal steps", "TSSundialsMonitorInternalSteps", cvode->monitorstep, &cvode->monitor… in TSSetFromOptions_Sundials()
403 …nal solver in SUNDIALS (serial only)", "TSSundialsSetUseDense", cvode->use_dense, &cvode->use_dens… in TSSetFromOptions_Sundials()
412 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSView_Sundials() local
423 if (cvode->cvode_type == SUNDIALS_ADAMS) type = atype; in TSView_Sundials()
431 PetscCall(PetscViewerASCIIPrintf(viewer, "SUNDIALS maxord %" PetscInt_FMT "\n", cvode->maxord)); in TSView_Sundials()
432 …CIIPrintf(viewer, "SUNDIALS abs tol %g rel tol %g\n", (double)cvode->abstol, (double)cvode->reltol… in TSView_Sundials()
433 if (cvode->use_dense) { in TSView_Sundials()
436 …werASCIIPrintf(viewer, "SUNDIALS linear solver tolerance factor %g\n", (double)cvode->linear_tol)); in TSView_Sundials()
437 …ASCIIPrintf(viewer, "SUNDIALS max dimension of Krylov subspace %" PetscInt_FMT "\n", cvode->maxl)); in TSView_Sundials()
438 if (cvode->gtype == SUNDIALS_MODIFIED_GS) { in TSView_Sundials()
444 …if (cvode->mindt > 0) PetscCall(PetscViewerASCIIPrintf(viewer, "SUNDIALS minimum time step %g\n", … in TSView_Sundials()
445 …if (cvode->maxdt > 0) PetscCall(PetscViewerASCIIPrintf(viewer, "SUNDIALS maximum time step %g\n", … in TSView_Sundials()
448 PetscCallExternal(CVodeGetTolScaleFactor, cvode->mem, &tolsfac); in TSView_Sundials()
450 …PetscCallExternal(CVodeGetIntegratorStats, cvode->mem, &nsteps, &nfevals, &nlinsetups, &nfails, &q… in TSView_Sundials()
456 PetscCallExternal(CVodeGetNonlinSolvStats, cvode->mem, &its, &nfails); in TSView_Sundials()
459 if (!cvode->use_dense) { in TSView_Sundials()
460 …PetscCallExternal(CVSpilsGetNumLinIters, cvode->mem, &its); /* its = no. of calls to TSPrecond_Sun… in TSView_Sundials()
462 PetscCallExternal(CVSpilsGetNumConvFails, cvode->mem, &itmp); in TSView_Sundials()
467 PetscCallExternal(CVSpilsGetNumPrecEvals, cvode->mem, &itmp); in TSView_Sundials()
469 PetscCallExternal(CVSpilsGetNumPrecSolves, cvode->mem, &itmp); in TSView_Sundials()
472 PetscCallExternal(CVSpilsGetNumJtimesEvals, cvode->mem, &itmp); in TSView_Sundials()
474 PetscCallExternal(CVSpilsGetNumRhsEvals, cvode->mem, &itmp); in TSView_Sundials()
484 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetType_Sundials() local
487 cvode->cvode_type = type; in TSSundialsSetType_Sundials()
493 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetMaxl_Sundials() local
496 cvode->maxl = maxl; in TSSundialsSetMaxl_Sundials()
502 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetLinearTolerance_Sundials() local
505 cvode->linear_tol = tol; in TSSundialsSetLinearTolerance_Sundials()
511 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetGramSchmidtType_Sundials() local
514 cvode->gtype = type; in TSSundialsSetGramSchmidtType_Sundials()
520 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetTolerance_Sundials() local
523 if (aabs != PETSC_DECIDE) cvode->abstol = aabs; in TSSundialsSetTolerance_Sundials()
524 if (rel != PETSC_DECIDE) cvode->reltol = rel; in TSSundialsSetTolerance_Sundials()
530 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetMinTimeStep_Sundials() local
533 cvode->mindt = mindt; in TSSundialsSetMinTimeStep_Sundials()
539 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetMaxTimeStep_Sundials() local
542 cvode->maxdt = maxdt; in TSSundialsSetMaxTimeStep_Sundials()
548 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsSetUseDense_Sundials() local
551 cvode->use_dense = use_dense; in TSSundialsSetUseDense_Sundials()
577 TS_Sundials *cvode = (TS_Sundials *)ts->data; in TSSundialsMonitorInternalSteps_Sundials() local
580 cvode->monitorstep = s; in TSSundialsMonitorInternalSteps_Sundials()
886 TS_Sundials *cvode; in TSCreate_Sundials() local
899 PetscCall(PetscNew(&cvode)); in TSCreate_Sundials()
903 ts->data = (void *)cvode; in TSCreate_Sundials()
904 cvode->cvode_type = SUNDIALS_BDF; in TSCreate_Sundials()
905 cvode->gtype = SUNDIALS_CLASSICAL_GS; in TSCreate_Sundials()
906 cvode->maxl = 5; in TSCreate_Sundials()
907 cvode->maxord = PETSC_DEFAULT; in TSCreate_Sundials()
908 cvode->linear_tol = .05; in TSCreate_Sundials()
909 cvode->monitorstep = PETSC_TRUE; in TSCreate_Sundials()
910 cvode->use_dense = PETSC_FALSE; in TSCreate_Sundials()
912 PetscCallMPI(MPI_Comm_dup(PetscObjectComm((PetscObject)ts), &cvode->comm_sundials)); in TSCreate_Sundials()
914 cvode->mindt = -1.; in TSCreate_Sundials()
915 cvode->maxdt = -1.; in TSCreate_Sundials()
918 cvode->reltol = 1e-6; in TSCreate_Sundials()
919 cvode->abstol = 1e-6; in TSCreate_Sundials()