Lines Matching refs:gl
34 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLEGetVecs() local
39 else *Z = gl->Z; in TSGLLEGetVecs()
43 else *Ydotstage = gl->Ydot[gl->stage]; in TSGLLEGetVecs()
295 static PetscErrorCode TSGLLEDestroy_Default(TS_GLLE *gl) in TSGLLEDestroy_Default() argument
300 for (i = 0; i < gl->nschemes; i++) { in TSGLLEDestroy_Default()
301 if (gl->schemes[i]) PetscCall(TSGLLESchemeDestroy(gl->schemes[i])); in TSGLLEDestroy_Default()
303 PetscCall(PetscFree(gl->schemes)); in TSGLLEDestroy_Default()
304 gl->nschemes = 0; in TSGLLEDestroy_Default()
305 PetscCall(PetscMemzero(gl->type_name, sizeof(gl->type_name))); in TSGLLEDestroy_Default()
431 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLECreate_IRKS() local
434 gl->Destroy = TSGLLEDestroy_Default; in TSGLLECreate_IRKS()
435 gl->EstimateHigherMoments = TSGLLEEstimateHigherMoments_Default; in TSGLLECreate_IRKS()
436 gl->CompleteStep = TSGLLECompleteStep_RescaleAndModify; in TSGLLECreate_IRKS()
437 PetscCall(PetscMalloc1(10, &gl->schemes)); in TSGLLECreate_IRKS()
438 gl->nschemes = 0; in TSGLLECreate_IRKS()
464 PetscCall(TSGLLESchemeCreate(1, 1, 2, 2, c, *a, *b, *u, *v, &gl->schemes[gl->nschemes++])); in TSGLLECreate_IRKS()
491 PetscCall(TSGLLESchemeCreate(2, 2, 3, 3, c, *a, *b, *u, *v, &gl->schemes[gl->nschemes++])); in TSGLLECreate_IRKS()
520 PetscCall(TSGLLESchemeCreate(3, 3, 4, 4, c, *a, *b, *u, *v, &gl->schemes[gl->nschemes++])); in TSGLLECreate_IRKS()
558 PetscCall(TSGLLESchemeCreate(4, 4, 5, 5, c, *a, *b, *u, *v, &gl->schemes[gl->nschemes++])); in TSGLLECreate_IRKS()
602 PetscCall(TSGLLESchemeCreate(5, 5, 6, 6, c, *a, *b, *u, *v, &gl->schemes[gl->nschemes++])); in TSGLLECreate_IRKS()
710 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLEUpdateWRMS() local
715 PetscCall(VecGetArray(gl->X[0], &x)); in TSGLLEUpdateWRMS()
716 PetscCall(VecGetArray(gl->W, &w)); in TSGLLEUpdateWRMS()
717 PetscCall(VecGetLocalSize(gl->W, &n)); in TSGLLEUpdateWRMS()
718 for (i = 0; i < n; i++) w[i] = 1. / (gl->wrms_atol + gl->wrms_rtol * PetscAbsScalar(x[i])); in TSGLLEUpdateWRMS()
719 PetscCall(VecRestoreArray(gl->X[0], &x)); in TSGLLEUpdateWRMS()
720 PetscCall(VecRestoreArray(gl->W, &w)); in TSGLLEUpdateWRMS()
726 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLEVecNormWRMS() local
733 PetscCall(VecGetArray(gl->W, &w)); in TSGLLEVecNormWRMS()
734 PetscCall(VecGetLocalSize(gl->W, &n)); in TSGLLEVecNormWRMS()
737 PetscCall(VecRestoreArray(gl->W, &w)); in TSGLLEVecNormWRMS()
739 PetscCall(VecGetSize(gl->W, &N)); in TSGLLEVecNormWRMS()
747 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLESetType_GLLE() local
751 if (gl->type_name[0]) { in TSGLLESetType_GLLE()
752 PetscCall(PetscStrcmp(gl->type_name, type, &same)); in TSGLLESetType_GLLE()
754 PetscCall((*gl->Destroy)(gl)); in TSGLLESetType_GLLE()
760 PetscCall(PetscStrncpy(gl->type_name, type, sizeof(gl->type_name))); in TSGLLESetType_GLLE()
767 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLESetAcceptType_GLLE() local
772 gl->Accept = r; in TSGLLESetAcceptType_GLLE()
773 PetscCall(PetscStrncpy(gl->accept_name, type, sizeof(gl->accept_name))); in TSGLLESetAcceptType_GLLE()
779 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLEGetAdapt_GLLE() local
782 if (!gl->adapt) { in TSGLLEGetAdapt_GLLE()
783 PetscCall(TSGLLEAdaptCreate(PetscObjectComm((PetscObject)ts), &gl->adapt)); in TSGLLEGetAdapt_GLLE()
784 PetscCall(PetscObjectIncrementTabLevel((PetscObject)gl->adapt, (PetscObject)ts, 1)); in TSGLLEGetAdapt_GLLE()
786 *adapt = gl->adapt; in TSGLLEGetAdapt_GLLE()
792 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLEChooseNextScheme() local
798 cur_p = gl->schemes[gl->current_scheme]->p; in TSGLLEChooseNextScheme()
800 for (i = 0, n = 0; i < gl->nschemes; i++) { in TSGLLEChooseNextScheme()
801 TSGLLEScheme sc = gl->schemes[i]; in TSGLLEChooseNextScheme()
802 if (sc->p < gl->min_order || gl->max_order < sc->p) continue; in TSGLLEChooseNextScheme()
810 if (i == gl->current_scheme) cur = n; in TSGLLEChooseNextScheme()
813 …PetscCheck(cur >= 0 && gl->nschemes > cur, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Current scheme not fo… in TSGLLEChooseNextScheme()
814 …PetscCall(TSGLLEAdaptChoose(gl->adapt, n, orders, errors, costs, cur, h, tleft, &next_sc, next_h, … in TSGLLEChooseNextScheme()
816 …nt_FMT ") with step size %6.2e, finish=%s\n", *next_scheme, gl->schemes[*next_scheme]->p, gl->sche… in TSGLLEChooseNextScheme()
817 …gl->schemes[*next_scheme]->r, gl->schemes[*next_scheme]->s, (double)*next_h, PetscBools[*finish])); in TSGLLEChooseNextScheme()
823 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSGLLEGetMaxSizes() local
826 *max_r = gl->schemes[gl->nschemes - 1]->r; in TSGLLEGetMaxSizes()
827 *max_s = gl->schemes[gl->nschemes - 1]->s; in TSGLLEGetMaxSizes()
833 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSSolve_GLLE() local
842 PetscCall(VecCopy(ts->vec_sol, gl->X[0])); in TSSolve_GLLE()
843 for (i = 1; i < max_r; i++) PetscCall(VecZeroEntries(gl->X[i])); in TSSolve_GLLE()
848 gl->stage_time = ts->ptime + ts->time_step; in TSSolve_GLLE()
849 gl->scoeff = 1.; in TSSolve_GLLE()
850 gl->stage = 0; in TSSolve_GLLE()
852 PetscCall(VecCopy(ts->vec_sol, gl->Z)); in TSSolve_GLLE()
853 PetscCall(VecCopy(ts->vec_sol, gl->Y)); in TSSolve_GLLE()
854 PetscCall(SNESSolve(ts->snes, NULL, gl->Y)); in TSSolve_GLLE()
868 …PetscCheck(gl->current_scheme >= 0, PETSC_COMM_SELF, PETSC_ERR_ORDER, "A starting scheme has not b… in TSSolve_GLLE()
876 TSGLLEScheme scheme = gl->schemes[gl->current_scheme]; in TSSolve_GLLE()
884 X = gl->X; in TSSolve_GLLE()
885 Ydot = gl->Ydot; in TSSolve_GLLE()
886 Y = gl->Y; in TSSolve_GLLE()
900 gl->scoeff = 1. / PetscRealPart(a[i * s + i]); in TSSolve_GLLE()
901 shift = gl->scoeff / ts->time_step; in TSSolve_GLLE()
902 gl->stage = i; in TSSolve_GLLE()
903 gl->stage_time = ts->ptime + PetscRealPart(c[i]) * h; in TSSolve_GLLE()
911 PetscCall(VecZeroEntries(gl->Z)); in TSSolve_GLLE()
912 for (j = 0; j < r; j++) PetscCall(VecAXPY(gl->Z, -shift * u[i * r + j], X[j])); in TSSolve_GLLE()
913 for (j = 0; j < i; j++) PetscCall(VecAXPY(gl->Z, -shift * h * a[i * s + j], Ydot[j])); in TSSolve_GLLE()
917 if (gl->extrapolate) { in TSSolve_GLLE()
943 gl->stage_time = ts->ptime + ts->time_step; in TSSolve_GLLE()
945 PetscCall((*gl->EstimateHigherMoments)(scheme, h, Ydot, gl->X, gl->himom)); in TSSolve_GLLE()
947 for (i = 0; i < 3; i++) PetscCall(TSGLLEVecNormWRMS(ts, gl->himom[i], &hmnorm[i + 1])); in TSSolve_GLLE()
951 PetscCall((*gl->Accept)(ts, ts->max_time - gl->stage_time, h, enorm, &accept)); in TSSolve_GLLE()
954 …Int_FMT " (t=%g) not accepted, rejections=%" PetscInt_FMT "\n", k, (double)gl->stage_time, rejecti… in TSSolve_GLLE()
955 if (rejections > gl->max_step_rejections) break; in TSSolve_GLLE()
967 …nt_FMT " (t=%g) not accepted after %" PetscInt_FMT " failures", k, (double)gl->stage_time, rejecti… in TSSolve_GLLE()
971 PetscCall(TSGLLEVecNormWRMS(ts, gl->X[scheme->r - 1], &hmnorm[0])); in TSSolve_GLLE()
979 next_scheme = gl->current_scheme; in TSSolve_GLLE()
984 X = gl->Xold; in TSSolve_GLLE()
985 gl->Xold = gl->X; in TSSolve_GLLE()
986 gl->X = X; in TSSolve_GLLE()
987 …PetscCall((*gl->CompleteStep)(scheme, h, gl->schemes[next_scheme], next_h, Ydot, gl->Xold, gl->X)); in TSSolve_GLLE()
992 PetscCall(VecCopy(gl->X[0], ts->vec_sol)); in TSSolve_GLLE()
1000 gl->current_scheme = next_scheme; in TSSolve_GLLE()
1008 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSReset_GLLE() local
1012 if (gl->setupcalled) { in TSReset_GLLE()
1014 PetscCall(VecDestroyVecs(max_r, &gl->Xold)); in TSReset_GLLE()
1015 PetscCall(VecDestroyVecs(max_r, &gl->X)); in TSReset_GLLE()
1016 PetscCall(VecDestroyVecs(max_s, &gl->Ydot)); in TSReset_GLLE()
1017 PetscCall(VecDestroyVecs(3, &gl->himom)); in TSReset_GLLE()
1018 PetscCall(VecDestroy(&gl->W)); in TSReset_GLLE()
1019 PetscCall(VecDestroy(&gl->Y)); in TSReset_GLLE()
1020 PetscCall(VecDestroy(&gl->Z)); in TSReset_GLLE()
1022 gl->setupcalled = PETSC_FALSE; in TSReset_GLLE()
1028 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSDestroy_GLLE() local
1036 if (gl->adapt) PetscCall(TSGLLEAdaptDestroy(&gl->adapt)); in TSDestroy_GLLE()
1037 if (gl->Destroy) PetscCall((*gl->Destroy)(gl)); in TSDestroy_GLLE()
1051 TS_GLLE *gl = (TS_GLLE *)ts->data; in SNESTSFormFunction_GLLE() local
1058 PetscCall(VecWAXPY(Ydot, gl->scoeff / ts->time_step, x, Z)); in SNESTSFormFunction_GLLE()
1061 PetscCall(TSComputeIFunction(ts, gl->stage_time, x, Ydot, f, PETSC_FALSE)); in SNESTSFormFunction_GLLE()
1069 TS_GLLE *gl = (TS_GLLE *)ts->data; in SNESTSFormJacobian_GLLE() local
1079 …PetscCall(TSComputeIJacobian(ts, gl->stage_time, x, gl->Ydot[gl->stage], gl->scoeff / ts->time_ste… in SNESTSFormJacobian_GLLE()
1087 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSSetUp_GLLE() local
1092 gl->setupcalled = PETSC_TRUE; in TSSetUp_GLLE()
1094 PetscCall(VecDuplicateVecs(ts->vec_sol, max_r, &gl->X)); in TSSetUp_GLLE()
1095 PetscCall(VecDuplicateVecs(ts->vec_sol, max_r, &gl->Xold)); in TSSetUp_GLLE()
1096 PetscCall(VecDuplicateVecs(ts->vec_sol, max_s, &gl->Ydot)); in TSSetUp_GLLE()
1097 PetscCall(VecDuplicateVecs(ts->vec_sol, 3, &gl->himom)); in TSSetUp_GLLE()
1098 PetscCall(VecDuplicate(ts->vec_sol, &gl->W)); in TSSetUp_GLLE()
1099 PetscCall(VecDuplicate(ts->vec_sol, &gl->Y)); in TSSetUp_GLLE()
1100 PetscCall(VecDuplicate(ts->vec_sol, &gl->Z)); in TSSetUp_GLLE()
1103 if (!gl->Accept) PetscCall(TSGLLESetAcceptType(ts, TSGLLEACCEPT_ALWAYS)); in TSSetUp_GLLE()
1104 if (!gl->adapt) PetscCall(TSGLLEGetAdapt(ts, &gl->adapt)); in TSSetUp_GLLE()
1106 if (gl->current_scheme < 0) { in TSSetUp_GLLE()
1109 if (gl->schemes[i]->p == gl->start_order) break; in TSSetUp_GLLE()
1110 …PetscCheck(i + 1 != gl->nschemes, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "No schemes available… in TSSetUp_GLLE()
1112 gl->current_scheme = i; in TSSetUp_GLLE()
1122 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSSetFromOptions_GLLE() local
1129 …("-ts_gl_type", "Type of GL method", "TSGLLESetType", TSGLLEList, gl->type_name[0] ? gl->type_name… in TSSetFromOptions_GLLE()
1130 if (flg || !gl->type_name[0]) PetscCall(TSGLLESetType(ts, tname)); in TSSetFromOptions_GLLE()
1131 …ctions", "Maximum number of times to attempt a step", "None", gl->max_step_rejections, &gl->max_st… in TSSetFromOptions_GLLE()
1132 …t("-ts_gl_max_order", "Maximum order to try", "TSGLLESetMaxOrder", gl->max_order, &gl->max_order, … in TSSetFromOptions_GLLE()
1133 …t("-ts_gl_min_order", "Minimum order to try", "TSGLLESetMinOrder", gl->min_order, &gl->min_order, … in TSSetFromOptions_GLLE()
1134 …-ts_gl_start_order", "Initial order to try", "TSGLLESetMinOrder", gl->start_order, &gl->start_orde… in TSSetFromOptions_GLLE()
1135 …GLLESetErrorDirection", TSGLLEErrorDirections, (PetscEnum)gl->error_direction, (PetscEnum *)&gl->e… in TSSetFromOptions_GLLE()
1136 … previous solution (sometimes unstable)", "TSGLLESetExtrapolate", gl->extrapolate, &gl->extrapolat… in TSSetFromOptions_GLLE()
1137 …nsReal("-ts_gl_atol", "Absolute tolerance", "TSGLLESetTolerances", gl->wrms_atol, &gl->wrms_atol, … in TSSetFromOptions_GLLE()
1138 …nsReal("-ts_gl_rtol", "Relative tolerance", "TSGLLESetTolerances", gl->wrms_rtol, &gl->wrms_rtol, … in TSSetFromOptions_GLLE()
1144 if (match1) gl->CompleteStep = TSGLLECompleteStep_Rescale; in TSSetFromOptions_GLLE()
1145 else if (match2) gl->CompleteStep = TSGLLECompleteStep_RescaleAndModify; in TSSetFromOptions_GLLE()
1150 …ther to accept a step", "TSGLLESetAcceptType", TSGLLEAcceptList, gl->accept_name[0] ? gl->accept_n… in TSSetFromOptions_GLLE()
1151 if (flg || !gl->accept_name[0]) PetscCall(TSGLLESetAcceptType(ts, type)); in TSSetFromOptions_GLLE()
1165 TS_GLLE *gl = (TS_GLLE *)ts->data; in TSView_GLLE() local
1172 …" PetscInt_FMT ", current order %" PetscInt_FMT "\n", gl->min_order, gl->max_order, gl->schemes[gl… in TSView_GLLE()
1173 …PetscCall(PetscViewerASCIIPrintf(viewer, " Error estimation: %s\n", TSGLLEErrorDirections[gl->err… in TSView_GLLE()
1174 …PetscCall(PetscViewerASCIIPrintf(viewer, " Extrapolation: %s\n", gl->extrapolate ? "yes" : "no")); in TSView_GLLE()
1175 …PetscCall(PetscViewerASCIIPrintf(viewer, " Acceptance test: %s\n", gl->accept_name[0] ? gl->accep… in TSView_GLLE()
1177 PetscCall(TSGLLEAdaptView(gl->adapt, viewer)); in TSView_GLLE()
1179 …PetscCall(PetscViewerASCIIPrintf(viewer, " type: %s\n", gl->type_name[0] ? gl->type_name : "(not … in TSView_GLLE()
1180 …PetscCall(PetscViewerASCIIPrintf(viewer, "Schemes within family (%" PetscInt_FMT "):\n", gl->nsche… in TSView_GLLE()
1184 for (i = 0; i < gl->nschemes; i++) PetscCall(TSGLLESchemeView(gl->schemes[i], details, viewer)); in TSView_GLLE()
1185 if (gl->View) PetscCall((*gl->View)(gl, viewer)); in TSView_GLLE()
1414 TS_GLLE *gl; in TSCreate_GLLE() local
1419 PetscCall(PetscNew(&gl)); in TSCreate_GLLE()
1420 ts->data = (void *)gl; in TSCreate_GLLE()
1433 gl->max_step_rejections = 1; in TSCreate_GLLE()
1434 gl->min_order = 1; in TSCreate_GLLE()
1435 gl->max_order = 3; in TSCreate_GLLE()
1436 gl->start_order = 1; in TSCreate_GLLE()
1437 gl->current_scheme = -1; in TSCreate_GLLE()
1438 gl->extrapolate = PETSC_FALSE; in TSCreate_GLLE()
1440 gl->wrms_atol = 1e-8; in TSCreate_GLLE()
1441 gl->wrms_rtol = 1e-5; in TSCreate_GLLE()