Lines Matching refs:snes
4 SNES snes; member
13 static PetscErrorCode SNESNewtonTRSetTolerances_TR(SNES snes, PetscReal delta_min, PetscReal delta_… in SNESNewtonTRSetTolerances_TR() argument
15 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetTolerances_TR()
27 static PetscErrorCode SNESNewtonTRGetTolerances_TR(SNES snes, PetscReal *delta_min, PetscReal *delt… in SNESNewtonTRGetTolerances_TR() argument
29 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRGetTolerances_TR()
38 static PetscErrorCode SNESComputeJacobian_MATLMVM(SNES snes, Vec X, Mat J, Mat B, void *dummy) in SNESComputeJacobian_MATLMVM() argument
42 PetscCall(MatLMVMUpdate(B, X, snes->vec_func)); in SNESComputeJacobian_MATLMVM()
47 PetscCall(MatLMVMUpdate(J, X, snes->vec_func)); in SNESComputeJacobian_MATLMVM()
57 SNES snes = ctx->snes; in SNESTR_KSPConverged_Private() local
58 SNES_NEWTONTR *neP = (SNES_NEWTONTR *)snes->data; in SNESTR_KSPConverged_Private()
67 …PetscCall(PetscInfo(snes, "Ending linear iteration early due to exiting trust region, delta=%g, le… in SNESTR_KSPConverged_Private()
72 …if (*reason) PetscCall(PetscInfo(snes, "Default or user provided convergence test KSP iterations=%… in SNESTR_KSPConverged_Private()
86 static PetscErrorCode SNESTR_Converged_Private(SNES snes, PetscInt it, PetscReal xnorm, PetscReal p… in SNESTR_Converged_Private() argument
88 SNES_NEWTONTR *neP = (SNES_NEWTONTR *)snes->data; in SNESTR_Converged_Private()
93 …PetscCall(PetscInfo(snes, "Diverged due to too small a trust region %g<%g\n", (double)neP->delta, … in SNESTR_Converged_Private()
95 } else if (snes->nfuncs >= snes->max_funcs && snes->max_funcs >= 0) { in SNESTR_Converged_Private()
96 …PetscCall(PetscInfo(snes, "Exceeded maximum number of function evaluations: %" PetscInt_FMT "\n", … in SNESTR_Converged_Private()
113 PetscErrorCode SNESNewtonTRSetNormType(SNES snes, NormType norm) in SNESNewtonTRSetNormType() argument
118 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetNormType()
119 PetscValidLogicalCollectiveEnum(snes, norm, 2); in SNESNewtonTRSetNormType()
120 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRSetNormType()
122 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetNormType()
143 PetscErrorCode SNESNewtonTRSetQNType(SNES snes, SNESNewtonTRQNType use) in SNESNewtonTRSetQNType() argument
148 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetQNType()
149 PetscValidLogicalCollectiveEnum(snes, use, 2); in SNESNewtonTRSetQNType()
150 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRSetQNType()
152 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetQNType()
171 PetscErrorCode SNESNewtonTRSetFallbackType(SNES snes, SNESNewtonTRFallbackType ftype) in SNESNewtonTRSetFallbackType() argument
173 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetFallbackType()
177 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetFallbackType()
178 PetscValidLogicalCollectiveEnum(snes, ftype, 2); in SNESNewtonTRSetFallbackType()
179 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRSetFallbackType()
202 PetscErrorCode SNESNewtonTRSetPreCheck(SNES snes, PetscErrorCode (*func)(SNES, Vec, Vec, PetscBool … in SNESNewtonTRSetPreCheck() argument
204 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetPreCheck()
208 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetPreCheck()
209 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRSetPreCheck()
233 PetscErrorCode SNESNewtonTRGetPreCheck(SNES snes, PetscErrorCode (**func)(SNES, Vec, Vec, PetscBool… in SNESNewtonTRGetPreCheck() argument
235 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRGetPreCheck()
239 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRGetPreCheck()
240 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRGetPreCheck()
241 …tscAssert(flg, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "Not for type %s", ((Petsc… in SNESNewtonTRGetPreCheck()
266 PetscErrorCode SNESNewtonTRSetPostCheck(SNES snes, PetscErrorCode (*func)(SNES, Vec, Vec, Vec, Pets… in SNESNewtonTRSetPostCheck() argument
268 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetPostCheck()
272 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetPostCheck()
273 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRSetPostCheck()
297 PetscErrorCode SNESNewtonTRGetPostCheck(SNES snes, PetscErrorCode (**func)(SNES, Vec, Vec, Vec, Pet… in SNESNewtonTRGetPostCheck() argument
299 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRGetPostCheck()
303 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRGetPostCheck()
304 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRGetPostCheck()
305 …tscAssert(flg, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "Not for type %s", ((Petsc… in SNESNewtonTRGetPostCheck()
328 PetscErrorCode SNESNewtonTRPreCheck(SNES snes, Vec X, Vec Y, PetscBool *changed_Y) in SNESNewtonTRPreCheck() argument
330 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRPreCheck()
334 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRPreCheck()
335 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRPreCheck()
336 …tscAssert(flg, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "Not for type %s", ((Petsc… in SNESNewtonTRPreCheck()
339 PetscCall((*tr->precheck)(snes, X, Y, changed_Y, tr->precheckctx)); in SNESNewtonTRPreCheck()
340 PetscValidLogicalCollectiveBool(snes, *changed_Y, 4); in SNESNewtonTRPreCheck()
367 PetscErrorCode SNESNewtonTRPostCheck(SNES snes, Vec X, Vec Y, Vec W, PetscBool *changed_Y, PetscBoo… in SNESNewtonTRPostCheck() argument
369 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRPostCheck()
373 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRPostCheck()
374 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRPostCheck()
375 …tscAssert(flg, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "Not for type %s", ((Petsc… in SNESNewtonTRPostCheck()
379 PetscCall((*tr->postcheck)(snes, X, Y, W, changed_Y, changed_W, tr->postcheckctx)); in SNESNewtonTRPostCheck()
380 PetscValidLogicalCollectiveBool(snes, *changed_Y, 5); in SNESNewtonTRPostCheck()
381 PetscValidLogicalCollectiveBool(snes, *changed_W, 6); in SNESNewtonTRPostCheck()
397 static PetscErrorCode SNESNewtonTRQuadraticDelta(SNES snes, Mat J, PetscBool has_objective, Vec Y, … in SNESNewtonTRQuadraticDelta() argument
415 static PetscErrorCode SNESNewtonTRObjective(SNES snes, PetscBool has_objective, Vec X, Vec Y, Vec W… in SNESNewtonTRObjective() argument
421 PetscCall(SNESNewtonTRPreCheck(snes, X, Y, &changed_y)); in SNESNewtonTRObjective()
423 PetscCall(SNESNewtonTRPostCheck(snes, X, Y, W, &changed_y, &changed_w)); in SNESNewtonTRObjective()
426 PetscCall(SNESComputeFunction(snes, W, G)); /* F(Xkp1) = G */ in SNESNewtonTRObjective()
428 SNESCheckFunctionDomainError(snes, *gnorm); in SNESNewtonTRObjective()
430 PetscCall(SNESComputeObjective(snes, W, fkp1)); in SNESNewtonTRObjective()
431 SNESCheckObjectiveDomainError(snes, *fkp1); in SNESNewtonTRObjective()
436 static PetscErrorCode SNESSetUpQN_NEWTONTR(SNES snes) in SNESSetUpQN_NEWTONTR() argument
438 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESSetUpQN_NEWTONTR()
448 PetscCall(MatCreate(PetscObjectComm((PetscObject)snes), &B)); in SNESSetUpQN_NEWTONTR()
449 PetscCall(SNESGetOptionsPrefix(snes, &optionsprefix)); in SNESSetUpQN_NEWTONTR()
453 PetscCall(VecGetLocalSize(snes->vec_sol, &n)); in SNESSetUpQN_NEWTONTR()
454 PetscCall(VecGetSize(snes->vec_sol, &N)); in SNESSetUpQN_NEWTONTR()
458 PetscCall(MatLMVMAllocate(B, snes->vec_sol, snes->vec_func)); in SNESSetUpQN_NEWTONTR()
461 PetscCall(MatCreate(PetscObjectComm((PetscObject)snes), &B)); in SNESSetUpQN_NEWTONTR()
462 PetscCall(SNESGetOptionsPrefix(snes, &optionsprefix)); in SNESSetUpQN_NEWTONTR()
469 PetscCall(MatLMVMAllocate(B, snes->vec_sol, snes->vec_func)); in SNESSetUpQN_NEWTONTR()
485 static PetscErrorCode SNESSolve_NEWTONTR(SNES snes) in SNESSolve_NEWTONTR() argument
487 SNES_NEWTONTR *neP = (SNES_NEWTONTR *)snes->data; in SNESSolve_NEWTONTR()
504 PetscCall(SNESGetObjective(snes, &objective, NULL)); in SNESSolve_NEWTONTR()
507 maxits = snes->max_its; /* maximum number of iterations */ in SNESSolve_NEWTONTR()
508 X = snes->vec_sol; /* solution vector */ in SNESSolve_NEWTONTR()
509 F = snes->vec_func; /* residual vector */ in SNESSolve_NEWTONTR()
510 Y = snes->vec_sol_update; /* update vector */ in SNESSolve_NEWTONTR()
511 G = snes->work[0]; /* updated residual */ in SNESSolve_NEWTONTR()
512 W = snes->work[1]; /* temporary vector */ in SNESSolve_NEWTONTR()
513 GradF = !has_objective ? snes->work[2] : snes->vec_func; /* grad f = J^T F */ in SNESSolve_NEWTONTR()
514 YU = snes->work[3]; /* work vector for dogleg method */ in SNESSolve_NEWTONTR()
515 Yc = snes->work[4]; /* Cauchy point */ in SNESSolve_NEWTONTR()
517 …snes->xl && !snes->xu && !snes->ops->computevariablebounds, PetscObjectComm((PetscObject)snes), PE… in SNESSolve_NEWTONTR()
519 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTR()
520 snes->iter = 0; in SNESSolve_NEWTONTR()
521 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTR()
524 PetscCall(SNESSetUpQN_NEWTONTR(snes)); in SNESSolve_NEWTONTR()
528 PetscCall(SNESGetKSP(snes, &snes->ksp)); in SNESSolve_NEWTONTR()
529 PetscCall(KSPGetConvergenceTest(snes->ksp, &convtest, &convctx, &convdestroy)); in SNESSolve_NEWTONTR()
533 ctx->snes = snes; in SNESSolve_NEWTONTR()
534 …PetscCall(KSPGetAndClearConvergenceTest(snes->ksp, &ctx->convtest, &ctx->convctx, &ctx->convdestro… in SNESSolve_NEWTONTR()
535 …PetscCall(KSPSetConvergenceTest(snes->ksp, SNESTR_KSPConverged_Private, ctx, SNESTR_KSPConverged_D… in SNESSolve_NEWTONTR()
536 PetscCall(PetscInfo(snes, "Using Krylov convergence test SNESTR_KSPConverged_Private\n")); in SNESSolve_NEWTONTR()
539 if (!snes->vec_func_init_set) { in SNESSolve_NEWTONTR()
540 PetscCall(SNESComputeFunction(snes, X, F)); /* F(X) */ in SNESSolve_NEWTONTR()
541 } else snes->vec_func_init_set = PETSC_FALSE; in SNESSolve_NEWTONTR()
544 SNESCheckFunctionDomainError(snes, fnorm); in SNESSolve_NEWTONTR()
547 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTR()
548 snes->norm = fnorm; in SNESSolve_NEWTONTR()
549 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTR()
552 PetscCall(SNESLogConvergenceHistory(snes, fnorm, 0)); in SNESSolve_NEWTONTR()
556 PetscCall(SNESConverged(snes, 0, 0.0, 0.0, fnorm)); in SNESSolve_NEWTONTR()
557 PetscCall(SNESMonitor(snes, 0, fnorm)); in SNESSolve_NEWTONTR()
558 if (snes->reason) PetscFunctionReturn(PETSC_SUCCESS); in SNESSolve_NEWTONTR()
561 PetscCall(SNESComputeObjective(snes, X, &fk)); in SNESSolve_NEWTONTR()
562 SNESCheckObjectiveDomainError(snes, fk); in SNESSolve_NEWTONTR()
566 PetscCall(KSPGetPC(snes->ksp, &pc)); in SNESSolve_NEWTONTR()
569 if (neP->kmdc) PetscCall(KSPSetComputeEigenvalues(snes->ksp, PETSC_TRUE)); in SNESSolve_NEWTONTR()
571 while (snes->iter < maxits) { in SNESSolve_NEWTONTR()
575 PetscTryTypeMethod(snes, update, snes->iter); in SNESSolve_NEWTONTR()
578 if (snes->npc && snes->npcside == PC_RIGHT) { in SNESSolve_NEWTONTR()
581 PetscCall(SNESSetInitialFunction(snes->npc, F)); in SNESSolve_NEWTONTR()
582 PetscCall(PetscLogEventBegin(SNES_NPCSolve, snes->npc, X, snes->vec_rhs, 0)); in SNESSolve_NEWTONTR()
583 PetscCall(SNESSolve(snes->npc, snes->vec_rhs, X)); in SNESSolve_NEWTONTR()
584 PetscCall(PetscLogEventEnd(SNES_NPCSolve, snes->npc, X, snes->vec_rhs, 0)); in SNESSolve_NEWTONTR()
585 PetscCall(SNESGetConvergedReason(snes->npc, &reason)); in SNESSolve_NEWTONTR()
587 snes->reason = SNES_DIVERGED_INNER; in SNESSolve_NEWTONTR()
591 PetscCall(SNESGetNPCFunction(snes, F, &fnorm)); in SNESSolve_NEWTONTR()
598 PetscCall(SNESComputeJacobian(snes, X, snes->jacobian, snes->jacobian_pre)); in SNESSolve_NEWTONTR()
599 SNESCheckJacobianDomainError(snes); in SNESSolve_NEWTONTR()
600 J = snes->jacobian; in SNESSolve_NEWTONTR()
601 Jp = snes->jacobian_pre; in SNESSolve_NEWTONTR()
603 PetscCall(SNESComputeJacobian_MATLMVM(snes, X, neP->qnB, neP->qnB_pre, NULL)); in SNESSolve_NEWTONTR()
607 SNESCheckJacobianDomainError(snes); in SNESSolve_NEWTONTR()
611 SNESCheckFunctionDomainError(snes, fnorm); in SNESSolve_NEWTONTR()
613 PetscCall(SNESComputeObjective(snes, X, &fk)); in SNESSolve_NEWTONTR()
614 SNESCheckObjectiveDomainError(snes, fk); in SNESSolve_NEWTONTR()
649 PetscCall(KSPCGSetObjectiveTarget(snes->ksp, objmin)); in SNESSolve_NEWTONTR()
652 …PetscCall(KSPCGSetRadius(snes->ksp, neP->fallback == SNES_TR_FALLBACK_NEWTON && neP->norm == NORM_… in SNESSolve_NEWTONTR()
653 PetscCall(KSPSetOperators(snes->ksp, J, Jp)); in SNESSolve_NEWTONTR()
654 PetscCall(KSPSolve(snes->ksp, F, Y)); in SNESSolve_NEWTONTR()
655 SNESCheckKSPSolve(snes); in SNESSolve_NEWTONTR()
656 PetscCall(KSPGetIterationNumber(snes->ksp, &lits)); in SNESSolve_NEWTONTR()
657 PetscCall(KSPGetConvergedReason(snes->ksp, &reason)); in SNESSolve_NEWTONTR()
659 …PetscCall(PetscInfo(snes, "iter=%" PetscInt_FMT ", linear solve iterations=%" PetscInt_FMT "\n", s… in SNESSolve_NEWTONTR()
662 PetscCall(KSPComputeExtremeSingularValues(snes->ksp, &emax, &emin)); in SNESSolve_NEWTONTR()
668 …PetscCall(PetscInfo(snes, "CP evaluated on boundary. delta: %g, ycnorm: %g, gTBg: %g\n", (double)d… in SNESSolve_NEWTONTR()
676 …RM_2 || fallback != SNES_TR_FALLBACK_DOGLEG, PetscObjectComm((PetscObject)snes), PETSC_ERR_SUP, "D… in SNESSolve_NEWTONTR()
681 … PetscCall(PetscInfo(snes, "SN evaluated. delta: %g, ynorm: %g\n", (double)delta, (double)ynorm)); in SNESSolve_NEWTONTR()
687 …PetscCall(PetscInfo(snes, "CP evaluated. delta: %g, ynorm: %g, ycnorm: %g, gTBg: %g\n", (double)de… in SNESSolve_NEWTONTR()
692 …PetscCall(PetscInfo(snes, "CP evaluated (outside region). delta: %g, ynorm: %g, ycnorm: %g\n", (do… in SNESSolve_NEWTONTR()
726 …PetscCall(PetscInfo(snes, "%s evaluated. roots: (%g, %g), tau %g, ynorm: %g, ycnorm: %g, gTBg: %g\… in SNESSolve_NEWTONTR()
731 SETERRQ(PetscObjectComm((PetscObject)snes), PETSC_ERR_SUP, "Unknown fallback mode"); in SNESSolve_NEWTONTR()
737 … PetscCall(SNESNewtonTRQuadraticDelta(snes, J, has_objective, Y, GradF, W, &yTHy, &gTy, &deltaqm)); in SNESSolve_NEWTONTR()
740 PetscCall(SNESNewtonTRObjective(snes, has_objective, X, Y, W, G, &gnorm, &fkp1)); in SNESSolve_NEWTONTR()
748 …PetscCall(PetscInfo(snes, "rho=%g, delta=%g, fk=%g, fkp1=%g, deltaqm=%g, gTy=%g, yTHy=%g, ynormk=%… in SNESSolve_NEWTONTR()
764 PetscCall(PetscInfo(snes, "Trying again in smaller region\n")); in SNESSolve_NEWTONTR()
766 …PetscCall(SNESTR_Converged_Private(snes, snes->iter, xnorm, ynorm, fnorm, &snes->reason, snes->cnv… in SNESSolve_NEWTONTR()
767 if (!snes->reason) PetscCall(SNESConverged(snes, snes->iter, xnorm, ynorm, fnorm)); in SNESSolve_NEWTONTR()
768 if (snes->reason == SNES_CONVERGED_SNORM_RELATIVE) snes->reason = SNES_DIVERGED_TR_DELTA; in SNESSolve_NEWTONTR()
769 snes->numFailures++; in SNESSolve_NEWTONTR()
771 if (snes->reason) break; in SNESSolve_NEWTONTR()
784 PetscCall(PetscObjectSAWsTakeAccess((PetscObject)snes)); in SNESSolve_NEWTONTR()
785 snes->iter++; in SNESSolve_NEWTONTR()
786 snes->norm = fnorm; in SNESSolve_NEWTONTR()
787 snes->xnorm = xnorm; in SNESSolve_NEWTONTR()
788 snes->ynorm = ynorm; in SNESSolve_NEWTONTR()
789 PetscCall(PetscObjectSAWsGrantAccess((PetscObject)snes)); in SNESSolve_NEWTONTR()
790 PetscCall(SNESLogConvergenceHistory(snes, snes->norm, lits)); in SNESSolve_NEWTONTR()
794 PetscCall(SNESConverged(snes, snes->iter, xnorm, ynorm, fnorm)); in SNESSolve_NEWTONTR()
795 PetscCall(SNESMonitor(snes, snes->iter, snes->norm)); in SNESSolve_NEWTONTR()
796 if (snes->reason) break; in SNESSolve_NEWTONTR()
801 …PetscCall(KSPGetAndClearConvergenceTest(snes->ksp, &ctx->convtest, &ctx->convctx, &ctx->convdestro… in SNESSolve_NEWTONTR()
803 PetscCall(KSPSetConvergenceTest(snes->ksp, convtest, convctx, convdestroy)); in SNESSolve_NEWTONTR()
808 static PetscErrorCode SNESSetUp_NEWTONTR(SNES snes) in SNESSetUp_NEWTONTR() argument
811 PetscCall(SNESSetWorkVecs(snes, 5)); in SNESSetUp_NEWTONTR()
812 PetscCall(SNESSetUpMatrices(snes)); in SNESSetUp_NEWTONTR()
816 static PetscErrorCode SNESReset_NEWTONTR(SNES snes) in SNESReset_NEWTONTR() argument
818 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESReset_NEWTONTR()
826 static PetscErrorCode SNESDestroy_NEWTONTR(SNES snes) in SNESDestroy_NEWTONTR() argument
829 PetscCall(SNESReset_NEWTONTR(snes)); in SNESDestroy_NEWTONTR()
830 PetscCall(PetscObjectComposeFunction((PetscObject)snes, "SNESNewtonTRSetTolerances_C", NULL)); in SNESDestroy_NEWTONTR()
831 PetscCall(PetscObjectComposeFunction((PetscObject)snes, "SNESNewtonTRGetTolerances_C", NULL)); in SNESDestroy_NEWTONTR()
832 PetscCall(PetscFree(snes->data)); in SNESDestroy_NEWTONTR()
836 static PetscErrorCode SNESSetFromOptions_NEWTONTR(SNES snes, PetscOptionItems PetscOptionsObject) in SNESSetFromOptions_NEWTONTR() argument
838 SNES_NEWTONTR *ctx = (SNES_NEWTONTR *)snes->data; in SNESSetFromOptions_NEWTONTR()
859 if (flg) PetscCall(SNESNewtonTRSetFallbackType(snes, fallback)); in SNESSetFromOptions_NEWTONTR()
863 if (flg) PetscCall(SNESNewtonTRSetQNType(snes, qn)); in SNESSetFromOptions_NEWTONTR()
867 if (flg) PetscCall(SNESNewtonTRSetNormType(snes, norm)); in SNESSetFromOptions_NEWTONTR()
873 static PetscErrorCode SNESView_NEWTONTR(SNES snes, PetscViewer viewer) in SNESView_NEWTONTR() argument
875 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESView_NEWTONTR()
906 PetscErrorCode SNESSetTrustRegionTolerance(SNES snes, PetscReal tol) in SNESSetTrustRegionTolerance() argument
908 return SNESNewtonTRSetTolerances(snes, tol, PETSC_CURRENT, PETSC_CURRENT); in SNESSetTrustRegionTolerance()
938 PetscErrorCode SNESNewtonTRSetTolerances(SNES snes, PetscReal delta_min, PetscReal delta_max, Petsc… in SNESNewtonTRSetTolerances() argument
941 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetTolerances()
942 PetscValidLogicalCollectiveReal(snes, delta_min, 2); in SNESNewtonTRSetTolerances()
943 PetscValidLogicalCollectiveReal(snes, delta_max, 3); in SNESNewtonTRSetTolerances()
944 PetscValidLogicalCollectiveReal(snes, delta_0, 4); in SNESNewtonTRSetTolerances()
945 …PetscTryMethod(snes, "SNESNewtonTRSetTolerances_C", (SNES, PetscReal, PetscReal, PetscReal), (snes… in SNESNewtonTRSetTolerances()
966 PetscErrorCode SNESNewtonTRGetTolerances(SNES snes, PetscReal *delta_min, PetscReal *delta_max, Pet… in SNESNewtonTRGetTolerances() argument
969 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRGetTolerances()
973 …PetscUseMethod(snes, "SNESNewtonTRGetTolerances_C", (SNES, PetscReal *, PetscReal *, PetscReal *),… in SNESNewtonTRGetTolerances()
1021 PetscErrorCode SNESNewtonTRSetUpdateParameters(SNES snes, PetscReal eta1, PetscReal eta2, PetscReal… in SNESNewtonTRSetUpdateParameters() argument
1026 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRSetUpdateParameters()
1027 PetscValidLogicalCollectiveReal(snes, eta1, 2); in SNESNewtonTRSetUpdateParameters()
1028 PetscValidLogicalCollectiveReal(snes, eta2, 3); in SNESNewtonTRSetUpdateParameters()
1029 PetscValidLogicalCollectiveReal(snes, eta3, 4); in SNESNewtonTRSetUpdateParameters()
1030 PetscValidLogicalCollectiveReal(snes, t1, 5); in SNESNewtonTRSetUpdateParameters()
1031 PetscValidLogicalCollectiveReal(snes, t2, 6); in SNESNewtonTRSetUpdateParameters()
1032 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRSetUpdateParameters()
1034 SNES_NEWTONTR *tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRSetUpdateParameters()
1069 PetscErrorCode SNESNewtonTRGetUpdateParameters(SNES snes, PetscReal *eta1, PetscReal *eta2, PetscRe… in SNESNewtonTRGetUpdateParameters() argument
1075 PetscValidHeaderSpecific(snes, SNES_CLASSID, 1); in SNESNewtonTRGetUpdateParameters()
1081 PetscCall(PetscObjectTypeCompare((PetscObject)snes, SNESNEWTONTR, &flg)); in SNESNewtonTRGetUpdateParameters()
1082 …tscAssert(flg, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "Not for type %s", ((Petsc… in SNESNewtonTRGetUpdateParameters()
1083 tr = (SNES_NEWTONTR *)snes->data; in SNESNewtonTRGetUpdateParameters()
1121 PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES snes) in SNESCreate_NEWTONTR() argument
1126 snes->ops->setup = SNESSetUp_NEWTONTR; in SNESCreate_NEWTONTR()
1127 snes->ops->solve = SNESSolve_NEWTONTR; in SNESCreate_NEWTONTR()
1128 snes->ops->reset = SNESReset_NEWTONTR; in SNESCreate_NEWTONTR()
1129 snes->ops->destroy = SNESDestroy_NEWTONTR; in SNESCreate_NEWTONTR()
1130 snes->ops->setfromoptions = SNESSetFromOptions_NEWTONTR; in SNESCreate_NEWTONTR()
1131 snes->ops->view = SNESView_NEWTONTR; in SNESCreate_NEWTONTR()
1133 PetscCall(SNESParametersInitialize(snes)); in SNESCreate_NEWTONTR()
1134 PetscObjectParameterSetDefault(snes, stol, 0.0); in SNESCreate_NEWTONTR()
1136 snes->usesksp = PETSC_TRUE; in SNESCreate_NEWTONTR()
1137 snes->npcside = PC_RIGHT; in SNESCreate_NEWTONTR()
1138 snes->usesnpc = PETSC_TRUE; in SNESCreate_NEWTONTR()
1140 snes->alwayscomputesfinalresidual = PETSC_TRUE; in SNESCreate_NEWTONTR()
1143 snes->data = (void *)neP; in SNESCreate_NEWTONTR()
1158 …PetscCall(PetscObjectComposeFunction((PetscObject)snes, "SNESNewtonTRSetTolerances_C", SNESNewtonT… in SNESCreate_NEWTONTR()
1159 …PetscCall(PetscObjectComposeFunction((PetscObject)snes, "SNESNewtonTRGetTolerances_C", SNESNewtonT… in SNESCreate_NEWTONTR()