Lines Matching refs:ngmres

10   SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data;  in SNESReset_NGMRES()  local
13 PetscCall(VecDestroyVecs(ngmres->msize, &ngmres->Fdot)); in SNESReset_NGMRES()
14 PetscCall(VecDestroyVecs(ngmres->msize, &ngmres->Xdot)); in SNESReset_NGMRES()
15 PetscCall(SNESLineSearchDestroy(&ngmres->additive_linesearch)); in SNESReset_NGMRES()
21 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESDestroy_NGMRES() local
25 PetscCall(PetscFree4(ngmres->h, ngmres->beta, ngmres->xi, ngmres->q)); in SNESDestroy_NGMRES()
26 PetscCall(PetscFree3(ngmres->xnorms, ngmres->fnorms, ngmres->s)); in SNESDestroy_NGMRES()
28 PetscCall(PetscFree(ngmres->rwork)); in SNESDestroy_NGMRES()
30 PetscCall(PetscFree(ngmres->work)); in SNESDestroy_NGMRES()
41 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESSetUp_NGMRES() local
55 if (!ngmres->Xdot) PetscCall(VecDuplicateVecs(snes->vec_sol, ngmres->msize, &ngmres->Xdot)); in SNESSetUp_NGMRES()
56 if (!ngmres->Fdot) PetscCall(VecDuplicateVecs(snes->vec_sol, ngmres->msize, &ngmres->Fdot)); in SNESSetUp_NGMRES()
57 if (!ngmres->setup_called) { in SNESSetUp_NGMRES()
58 msize = ngmres->msize; /* restart size */ in SNESSetUp_NGMRES()
62 …PetscCall(PetscCalloc4(hsize, &ngmres->h, msize, &ngmres->beta, msize, &ngmres->xi, hsize, &ngmres in SNESSetUp_NGMRES()
63 PetscCall(PetscMalloc3(msize, &ngmres->xnorms, msize, &ngmres->fnorms, msize, &ngmres->s)); in SNESSetUp_NGMRES()
64 ngmres->nrhs = 1; in SNESSetUp_NGMRES()
65 PetscCall(PetscBLASIntCast(msize, &ngmres->lda)); in SNESSetUp_NGMRES()
66 PetscCall(PetscBLASIntCast(msize, &ngmres->ldb)); in SNESSetUp_NGMRES()
67 PetscCall(PetscBLASIntCast(12 * msize, &ngmres->lwork)); in SNESSetUp_NGMRES()
69 PetscCall(PetscMalloc1(ngmres->lwork, &ngmres->rwork)); in SNESSetUp_NGMRES()
71 PetscCall(PetscMalloc1(ngmres->lwork, &ngmres->work)); in SNESSetUp_NGMRES()
74 ngmres->setup_called = PETSC_TRUE; in SNESSetUp_NGMRES()
80 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESSetFromOptions_NGMRES() local
85 …NGMRESSetSelectType", SNESNGMRESSelectTypes, (PetscEnum)ngmres->select_type, (PetscEnum *)&ngmres-… in SNESSetFromOptions_NGMRES()
86 …RESSetRestartType", SNESNGMRESRestartTypes, (PetscEnum)ngmres->restart_type, (PetscEnum *)&ngmres-… in SNESSetFromOptions_NGMRES()
87 …ool("-snes_ngmres_candidate", "Use candidate storage", "SNES", ngmres->candidate, &ngmres->candida… in SNESSetFromOptions_NGMRES()
88 …mres_approxfunc", "Linearly approximate the function", "SNES", ngmres->approxfunc, &ngmres->approx… in SNESSetFromOptions_NGMRES()
89 …etscOptionsInt("-snes_ngmres_m", "Number of directions", "SNES", ngmres->msize, &ngmres->msize, NU… in SNESSetFromOptions_NGMRES()
90 …gmres_restart", "Iterations before forced restart", "SNES", ngmres->restart_periodic, &ngmres->res… in SNESSetFromOptions_NGMRES()
91 …es_restart_it", "Tolerance iterations before restart", "SNES", ngmres->restart_it, &ngmres->restar… in SNESSetFromOptions_NGMRES()
92 …PetscCall(PetscOptionsBool("-snes_ngmres_monitor", "Monitor actions of NGMRES", "SNES", ngmres->mo… in SNESSetFromOptions_NGMRES()
93 if (debug) ngmres->monitor = PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)snes)); in SNESSetFromOptions_NGMRES()
94 …al("-snes_ngmres_gammaA", "Residual selection constant", "SNES", ngmres->gammaA, &ngmres->gammaA, … in SNESSetFromOptions_NGMRES()
95 …Real("-snes_ngmres_gammaC", "Residual restart constant", "SNES", ngmres->gammaC, &ngmres->gammaC, … in SNESSetFromOptions_NGMRES()
96 …snes_ngmres_epsilonB", "Difference selection constant", "SNES", ngmres->epsilonB, &ngmres->epsilon… in SNESSetFromOptions_NGMRES()
97 …gmres_deltaB", "Difference residual selection constant", "SNES", ngmres->deltaB, &ngmres->deltaB, … in SNESSetFromOptions_NGMRES()
98 …estart on F_M residual rise", "SNESNGMRESSetRestartFmRise", ngmres->restart_fm_rise, &ngmres->rest… in SNESSetFromOptions_NGMRES()
100 if (ngmres->gammaA > ngmres->gammaC && ngmres->gammaC > 2.) ngmres->gammaC = ngmres->gammaA; in SNESSetFromOptions_NGMRES()
101 if (ngmres->select_type == SNES_NGMRES_SELECT_LINESEARCH) { in SNESSetFromOptions_NGMRES()
102 PetscCall(SNESNGMRESGetAdditiveLineSearch_Private(snes, &ngmres->additive_linesearch)); in SNESSetFromOptions_NGMRES()
103 PetscCall(SNESLineSearchSetFromOptions(ngmres->additive_linesearch)); in SNESSetFromOptions_NGMRES()
110 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESView_NGMRES() local
116 …cViewerASCIIPrintf(viewer, " Number of stored past updates: %" PetscInt_FMT "\n", ngmres->msize)); in SNESView_NGMRES()
117 if (ngmres->select_type == SNES_NGMRES_SELECT_DIFFERENCE) { in SNESView_NGMRES()
118 … Residual selection: gammaA=%1.0e, gammaC=%1.0e\n", (double)ngmres->gammaA, (double)ngmres->gamma… in SNESView_NGMRES()
119 …ifference restart: epsilonB=%1.0e, deltaB=%1.0e\n", (double)ngmres->epsilonB, (double)ngmres->delt… in SNESView_NGMRES()
120 …CIIPrintf(viewer, " Restart on F_M residual increase: %s\n", PetscBools[ngmres->restart_fm_rise])… in SNESView_NGMRES()
122 if (ngmres->additive_linesearch) { in SNESView_NGMRES()
124 PetscCall(SNESLineSearchView(ngmres->additive_linesearch, viewer)); in SNESView_NGMRES()
132 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESSolve_NGMRES() local
247 …if (ngmres->restart_type == SNES_NGMRES_RESTART_DIFFERENCE || ngmres->select_type == SNES_NGMRES_S… in SNESSolve_NGMRES()
267 if (ngmres->restart_type == SNES_NGMRES_RESTART_DIFFERENCE) { in SNESSolve_NGMRES()
273 } else if (ngmres->restart_type == SNES_NGMRES_RESTART_PERIODIC) { in SNESSolve_NGMRES()
274 if (k_restart > ngmres->restart_periodic) { in SNESSolve_NGMRES()
275 …if (ngmres->monitor) PetscCall(PetscViewerASCIIPrintf(ngmres->monitor, "periodic restart after %" … in SNESSolve_NGMRES()
276 restart_count = ngmres->restart_it; in SNESSolve_NGMRES()
280 ivec = k_restart % ngmres->msize; /* replace the last used part of the subspace */ in SNESSolve_NGMRES()
283 if (restart_count >= ngmres->restart_it) { in SNESSolve_NGMRES()
284 …if (ngmres->monitor) PetscCall(PetscViewerASCIIPrintf(ngmres->monitor, "Restarted at iteration %" … in SNESSolve_NGMRES()
293 if (l < ngmres->msize) l++; in SNESSolve_NGMRES()
296 if (ngmres->candidate) { in SNESSolve_NGMRES()
352 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESNGMRESSetRestartFmRise_NGMRES() local
355 ngmres->restart_fm_rise = flg; in SNESNGMRESSetRestartFmRise_NGMRES()
371 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESNGMRESGetRestartFmRise_NGMRES() local
374 *flg = ngmres->restart_fm_rise; in SNESNGMRESGetRestartFmRise_NGMRES()
435 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESNGMRESSetSelectType_NGMRES() local
438 ngmres->select_type = stype; in SNESNGMRESSetSelectType_NGMRES()
444 SNES_NGMRES *ngmres = (SNES_NGMRES *)snes->data; in SNESNGMRESSetRestartType_NGMRES() local
447 ngmres->restart_type = rtype; in SNESNGMRESSetRestartType_NGMRES()
491 SNES_NGMRES *ngmres; in SNESCreate_NGMRES() local
508 PetscCall(PetscNew(&ngmres)); in SNESCreate_NGMRES()
509 snes->data = (void *)ngmres; in SNESCreate_NGMRES()
510 ngmres->msize = 30; in SNESCreate_NGMRES()
516 ngmres->candidate = PETSC_FALSE; in SNESCreate_NGMRES()
521 ngmres->additive_linesearch = NULL; in SNESCreate_NGMRES()
522 ngmres->approxfunc = PETSC_FALSE; in SNESCreate_NGMRES()
523 ngmres->restart_it = 2; in SNESCreate_NGMRES()
524 ngmres->restart_periodic = 30; in SNESCreate_NGMRES()
525 ngmres->gammaA = 2.0; in SNESCreate_NGMRES()
526 ngmres->gammaC = 2.0; in SNESCreate_NGMRES()
527 ngmres->deltaB = 0.9; in SNESCreate_NGMRES()
528 ngmres->epsilonB = 0.1; in SNESCreate_NGMRES()
529 ngmres->restart_fm_rise = PETSC_FALSE; in SNESCreate_NGMRES()
531 ngmres->restart_type = SNES_NGMRES_RESTART_DIFFERENCE; in SNESCreate_NGMRES()
532 ngmres->select_type = SNES_NGMRES_SELECT_DIFFERENCE; in SNESCreate_NGMRES()