Lines Matching refs:snes

4   SNES snes;  member
15 static PetscErrorCode SNESNewtonTRSetTolerances_TRDC(SNES snes, PetscReal delta_min, PetscReal delt… in SNESNewtonTRSetTolerances_TRDC() argument
17 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRSetTolerances_TRDC()
32 SNES snes = ctx->snes; in SNESTRDC_KSPConverged_Private() local
33 SNES_NEWTONTRDC *neP = (SNES_NEWTONTRDC *)snes->data; in SNESTRDC_KSPConverged_Private()
39 …if (*reason) PetscCall(PetscInfo(snes, "Default or user provided convergence test KSP iterations=%… in SNESTRDC_KSPConverged_Private()
44 …PetscCall(PetscInfo(snes, "Ending linear iteration early, delta=%g, length=%g\n", (double)neP->del… in SNESTRDC_KSPConverged_Private()
63 static PetscErrorCode SNESTRDC_Converged_Private(SNES snes, PetscInt it, PetscReal xnorm, PetscReal… in SNESTRDC_Converged_Private() argument
65 SNES_NEWTONTRDC *neP = (SNES_NEWTONTRDC *)snes->data; in SNESTRDC_Converged_Private()
70 …PetscCall(PetscInfo(snes, "Diverged due to too small a trust region %g<%g*%g\n", (double)neP->delt… in SNESTRDC_Converged_Private()
72 } else if (snes->nfuncs >= snes->max_funcs && snes->max_funcs >= 0) { in SNESTRDC_Converged_Private()
73 …PetscCall(PetscInfo(snes, "Exceeded maximum number of function evaluations: %" PetscInt_FMT "\n", in SNESTRDC_Converged_Private()
95 PetscErrorCode SNESNewtonTRDCGetRhoFlag(SNES snes, PetscBool *rho_flag) in SNESNewtonTRDCGetRhoFlag() argument
97 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCGetRhoFlag()
100 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRDCGetRhoFlag()
125 PetscErrorCode SNESNewtonTRDCSetPreCheck(SNES snes, PetscErrorCode (*func)(SNES, Vec, Vec, PetscBoo… in SNESNewtonTRDCSetPreCheck() argument
127 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCSetPreCheck()
130 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRDCSetPreCheck()
152 PetscErrorCode SNESNewtonTRDCGetPreCheck(SNES snes, PetscErrorCode (**func)(SNES, Vec, Vec, PetscBo… in SNESNewtonTRDCGetPreCheck() argument
154 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCGetPreCheck()
157 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRDCGetPreCheck()
182 PetscErrorCode SNESNewtonTRDCSetPostCheck(SNES snes, PetscErrorCode (*func)(SNES, Vec, Vec, Vec, Pe… in SNESNewtonTRDCSetPostCheck() argument
184 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCSetPostCheck()
187 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRDCSetPostCheck()
209 PetscErrorCode SNESNewtonTRDCGetPostCheck(SNES snes, PetscErrorCode (**func)(SNES, Vec, Vec, Vec, P… in SNESNewtonTRDCGetPostCheck() argument
211 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCGetPostCheck()
214 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRDCGetPostCheck()
238 static PetscErrorCode SNESNewtonTRDCPreCheck(SNES snes, Vec X, Vec Y, PetscBool *changed_Y) in SNESNewtonTRDCPreCheck() argument
240 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCPreCheck()
245 PetscCall((*tr->precheck)(snes, X, Y, changed_Y, tr->precheckctx)); in SNESNewtonTRDCPreCheck()
246 PetscValidLogicalCollectiveBool(snes, *changed_Y, 4); in SNESNewtonTRDCPreCheck()
274 static PetscErrorCode SNESNewtonTRDCPostCheck(SNES snes, Vec X, Vec Y, Vec W, PetscBool *changed_Y,… in SNESNewtonTRDCPostCheck() argument
276 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESNewtonTRDCPostCheck()
282 PetscCall((*tr->postcheck)(snes, X, Y, W, changed_Y, changed_W, tr->postcheckctx)); in SNESNewtonTRDCPostCheck()
283 PetscValidLogicalCollectiveBool(snes, *changed_Y, 5); in SNESNewtonTRDCPostCheck()
284 PetscValidLogicalCollectiveBool(snes, *changed_W, 6); in SNESNewtonTRDCPostCheck()
295 static PetscErrorCode SNESSolve_NEWTONTRDC(SNES snes) in SNESSolve_NEWTONTRDC() argument
297 SNES_NEWTONTRDC *neP = (SNES_NEWTONTRDC *)snes->data; in SNESSolve_NEWTONTRDC()
315 maxits = snes->max_its; /* maximum number of iterations */ in SNESSolve_NEWTONTRDC()
316 X = snes->vec_sol; /* solution vector */ in SNESSolve_NEWTONTRDC()
317 F = snes->vec_func; /* residual vector */ in SNESSolve_NEWTONTRDC()
318 Y = snes->work[0]; /* update vector */ in SNESSolve_NEWTONTRDC()
319 G = snes->work[1]; /* updated residual */ in SNESSolve_NEWTONTRDC()
320 W = snes->work[2]; /* temporary vector */ in SNESSolve_NEWTONTRDC()
321 GradF = snes->work[3]; /* grad f = J^T F */ in SNESSolve_NEWTONTRDC()
322 YNtmp = snes->work[4]; /* Newton solution */ in SNESSolve_NEWTONTRDC()
323 YCtmp = snes->work[5]; /* Cauchy solution */ in SNESSolve_NEWTONTRDC()
325snes->xl && !snes->xu && !snes->ops->computevariablebounds, PetscObjectComm((PetscObject)snes), PE… in SNESSolve_NEWTONTRDC()
329 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
330 snes->iter = 0; in SNESSolve_NEWTONTRDC()
331 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
334 PetscCall(SNESGetKSP(snes, &ksp)); in SNESSolve_NEWTONTRDC()
338 ctx->snes = snes; in SNESSolve_NEWTONTRDC()
341 PetscCall(PetscInfo(snes, "Using Krylov convergence test SNESTRDC_KSPConverged_Private\n")); in SNESSolve_NEWTONTRDC()
344 if (!snes->vec_func_init_set) { in SNESSolve_NEWTONTRDC()
345 PetscCall(SNESComputeFunction(snes, X, F)); /* F(X) */ in SNESSolve_NEWTONTRDC()
346 } else snes->vec_func_init_set = PETSC_FALSE; in SNESSolve_NEWTONTRDC()
349 SNESCheckFunctionDomainError(snes, fnorm); in SNESSolve_NEWTONTRDC()
352 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
353 snes->norm = fnorm; in SNESSolve_NEWTONTRDC()
354 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
358 PetscCall(SNESLogConvergenceHistory(snes, fnorm, 0)); in SNESSolve_NEWTONTRDC()
359 PetscCall(SNESMonitor(snes, 0, fnorm)); in SNESSolve_NEWTONTRDC()
364 PetscUseTypeMethod(snes, converged, snes->iter, 0.0, 0.0, fnorm, &snes->reason, snes->cnvP); in SNESSolve_NEWTONTRDC()
365 if (snes->reason) PetscFunctionReturn(PETSC_SUCCESS); in SNESSolve_NEWTONTRDC()
372 PetscCall(SNESComputeJacobian(snes, X, snes->jacobian, snes->jacobian_pre)); in SNESSolve_NEWTONTRDC()
373 SNESCheckJacobianDomainError(snes); in SNESSolve_NEWTONTRDC()
374 PetscCall(KSPSetOperators(snes->ksp, snes->jacobian, snes->jacobian)); in SNESSolve_NEWTONTRDC()
375 PetscCall(KSPSolve(snes->ksp, F, YNtmp)); /* Quasi Newton Solution */ in SNESSolve_NEWTONTRDC()
376 SNESCheckKSPSolve(snes); /* this is necessary but old tr.c did not have it*/ in SNESSolve_NEWTONTRDC()
377 PetscCall(KSPGetIterationNumber(snes->ksp, &lits)); in SNESSolve_NEWTONTRDC()
378 PetscCall(SNESGetJacobian(snes, &jac, NULL, NULL, NULL)); in SNESSolve_NEWTONTRDC()
427 …PetscCall(PetscInfo(snes, "DL evaluated. delta: %8.4e, ynnorm: %8.4e, ycnorm: %8.4e\n", (double)de… in SNESSolve_NEWTONTRDC()
439 …PetscCall(PetscInfo(snes, "DL evaluated. tau: %8.4e, ynnorm: %8.4e, ycnorm: %8.4e\n", (double)tau,… in SNESSolve_NEWTONTRDC()
477 PetscCall(SNESNewtonTRDCPreCheck(snes, X, Y, &changed_y)); in SNESSolve_NEWTONTRDC()
479 PetscCall(SNESNewtonTRDCPostCheck(snes, X, Y, W, &changed_y, &changed_w)); in SNESSolve_NEWTONTRDC()
481 PetscCall(VecCopy(Y, snes->vec_sol_update)); in SNESSolve_NEWTONTRDC()
482 PetscCall(SNESComputeFunction(snes, W, G)); /* F(X-Y) = G */ in SNESSolve_NEWTONTRDC()
484 SNESCheckFunctionDomainError(snes, gnorm); in SNESSolve_NEWTONTRDC()
506 PetscCall(PetscInfo(snes, "Trying again in smaller region\n")); in SNESSolve_NEWTONTRDC()
511 … PetscCall(SNESTRDC_Converged_Private(snes, snes->iter, xnorm, ynorm, fnorm, &reason, snes->cnvP)); in SNESSolve_NEWTONTRDC()
527 PetscCall(SNESMonitor(snes, i + 1, fnorm)); in SNESSolve_NEWTONTRDC()
532 PetscCall(SNESMonitor(snes, i + 1, fnorm)); in SNESSolve_NEWTONTRDC()
537 snes->numFailures++; in SNESSolve_NEWTONTRDC()
545 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
546 snes->iter = i + 1; in SNESSolve_NEWTONTRDC()
547 snes->norm = fnorm; in SNESSolve_NEWTONTRDC()
548 snes->xnorm = xnorm; in SNESSolve_NEWTONTRDC()
549 snes->ynorm = ynorm; in SNESSolve_NEWTONTRDC()
550 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
551 PetscCall(SNESLogConvergenceHistory(snes, snes->norm, lits)); in SNESSolve_NEWTONTRDC()
552 PetscCall(SNESMonitor(snes, snes->iter, snes->norm)); in SNESSolve_NEWTONTRDC()
555 if (snes->ops->converged != SNESConvergedSkip) PetscCall(VecNorm(X, NORM_2, &xnorm)); in SNESSolve_NEWTONTRDC()
556 PetscUseTypeMethod(snes, converged, snes->iter, xnorm, ynorm, fnorm, &reason, snes->cnvP); in SNESSolve_NEWTONTRDC()
563 …PetscCall(PetscInfo(snes, "Maximum number of iterations has been reached: %" PetscInt_FMT "\n", ma… in SNESSolve_NEWTONTRDC()
566 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
567 snes->reason = reason; in SNESSolve_NEWTONTRDC()
568 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTRDC()
577 static PetscErrorCode SNESSetUp_NEWTONTRDC(SNES snes) in SNESSetUp_NEWTONTRDC() argument
580 PetscCall(SNESSetWorkVecs(snes, 6)); in SNESSetUp_NEWTONTRDC()
581 PetscCall(SNESSetUpMatrices(snes)); in SNESSetUp_NEWTONTRDC()
585 static PetscErrorCode SNESDestroy_NEWTONTRDC(SNES snes) in SNESDestroy_NEWTONTRDC() argument
588 PetscCall(PetscObjectComposeFunction((PetscObject)snes, "SNESNewtonTRSetTolerances_C", NULL)); in SNESDestroy_NEWTONTRDC()
589 PetscCall(PetscFree(snes->data)); in SNESDestroy_NEWTONTRDC()
593 static PetscErrorCode SNESSetFromOptions_NEWTONTRDC(SNES snes, PetscOptionItems PetscOptionsObject) in SNESSetFromOptions_NEWTONTRDC() argument
595 SNES_NEWTONTRDC *ctx = (SNES_NEWTONTRDC *)snes->data; in SNESSetFromOptions_NEWTONTRDC()
614 static PetscErrorCode SNESView_NEWTONTRDC(SNES snes, PetscViewer viewer) in SNESView_NEWTONTRDC() argument
616 SNES_NEWTONTRDC *tr = (SNES_NEWTONTRDC *)snes->data; in SNESView_NEWTONTRDC()
658 PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTRDC(SNES snes) in SNESCreate_NEWTONTRDC() argument
663 snes->ops->setup = SNESSetUp_NEWTONTRDC; in SNESCreate_NEWTONTRDC()
664 snes->ops->solve = SNESSolve_NEWTONTRDC; in SNESCreate_NEWTONTRDC()
665 snes->ops->destroy = SNESDestroy_NEWTONTRDC; in SNESCreate_NEWTONTRDC()
666 snes->ops->setfromoptions = SNESSetFromOptions_NEWTONTRDC; in SNESCreate_NEWTONTRDC()
667 snes->ops->view = SNESView_NEWTONTRDC; in SNESCreate_NEWTONTRDC()
669 snes->usesksp = PETSC_TRUE; in SNESCreate_NEWTONTRDC()
670 snes->usesnpc = PETSC_FALSE; in SNESCreate_NEWTONTRDC()
672 snes->alwayscomputesfinalresidual = PETSC_TRUE; in SNESCreate_NEWTONTRDC()
674 PetscCall(SNESParametersInitialize(snes)); in SNESCreate_NEWTONTRDC()
677 snes->data = (void *)neP; in SNESCreate_NEWTONTRDC()
702 …PetscCall(PetscObjectComposeFunction((PetscObject)snes, "SNESNewtonTRSetTolerances_C", SNESNewtonT… in SNESCreate_NEWTONTRDC()