Lines Matching refs:nlsP

40   TAO_NLS                     *nlsP = (TAO_NLS *)tao->data;  in TaoSolve_NLS()  local
66 pert = nlsP->sval; in TaoSolve_NLS()
69 nlsP->ksp_atol = 0; in TaoSolve_NLS()
70 nlsP->ksp_rtol = 0; in TaoSolve_NLS()
71 nlsP->ksp_dtol = 0; in TaoSolve_NLS()
72 nlsP->ksp_ctol = 0; in TaoSolve_NLS()
73 nlsP->ksp_negc = 0; in TaoSolve_NLS()
74 nlsP->ksp_iter = 0; in TaoSolve_NLS()
75 nlsP->ksp_othr = 0; in TaoSolve_NLS()
86 PetscCall(KSPCGSetRadius(tao->ksp, nlsP->max_radius)); in TaoSolve_NLS()
91 tao->trust = PetscMax(tao->trust, nlsP->min_radius); in TaoSolve_NLS()
92 tao->trust = PetscMin(tao->trust, nlsP->max_radius); in TaoSolve_NLS()
111 nlsP->bfgs_pre = pc; in TaoSolve_NLS()
112 PetscCall(PCLMVMGetMatLMVM(nlsP->bfgs_pre, &nlsP->M)); in TaoSolve_NLS()
115 PetscCall(MatSetSizes(nlsP->M, n, n, N, N)); in TaoSolve_NLS()
116 PetscCall(MatLMVMAllocate(nlsP->M, tao->solution, tao->gradient)); in TaoSolve_NLS()
117 PetscCall(MatIsSymmetricKnown(nlsP->M, &sym_set, &is_symmetric)); in TaoSolve_NLS()
124 switch (nlsP->init_type) { in TaoSolve_NLS()
143 PetscCall(VecCopy(tao->solution, nlsP->W)); in TaoSolve_NLS()
144 PetscCall(VecAXPY(nlsP->W, -tao->trust / gnorm, tao->gradient)); in TaoSolve_NLS()
145 PetscCall(TaoComputeObjective(tao, nlsP->W, &ftrial)); in TaoSolve_NLS()
147 tau = nlsP->gamma1_i; in TaoSolve_NLS()
154 PetscCall(MatMult(tao->hessian, tao->gradient, nlsP->D)); in TaoSolve_NLS()
155 PetscCall(VecDot(tao->gradient, nlsP->D, &prered)); in TaoSolve_NLS()
159 … if ((PetscAbsScalar(actred) <= nlsP->epsilon) && (PetscAbsScalar(prered) <= nlsP->epsilon)) { in TaoSolve_NLS()
165 …tau_1 = nlsP->theta_i * gnorm * tao->trust / (nlsP->theta_i * gnorm * tao->trust + (1.0 - nlsP->… in TaoSolve_NLS()
166 …tau_2 = nlsP->theta_i * gnorm * tao->trust / (nlsP->theta_i * gnorm * tao->trust - (1.0 + nlsP->… in TaoSolve_NLS()
170 if (PetscAbsScalar(kappa - (PetscReal)1.0) <= nlsP->mu1_i) { in TaoSolve_NLS()
175 tau = nlsP->gamma3_i; in TaoSolve_NLS()
176 } else if (tau_max > nlsP->gamma4_i) { in TaoSolve_NLS()
177 tau = nlsP->gamma4_i; in TaoSolve_NLS()
178 } else if (tau_1 >= 1.0 && tau_1 <= nlsP->gamma4_i && tau_2 < 1.0) { in TaoSolve_NLS()
180 } else if (tau_2 >= 1.0 && tau_2 <= nlsP->gamma4_i && tau_1 < 1.0) { in TaoSolve_NLS()
185 } else if (PetscAbsScalar(kappa - (PetscReal)1.0) <= nlsP->mu2_i) { in TaoSolve_NLS()
189 if (tau_max < nlsP->gamma2_i) { in TaoSolve_NLS()
190 tau = nlsP->gamma2_i; in TaoSolve_NLS()
191 } else if (tau_max > nlsP->gamma3_i) { in TaoSolve_NLS()
192 tau = nlsP->gamma3_i; in TaoSolve_NLS()
199 tau = nlsP->gamma2_i; in TaoSolve_NLS()
200 } else if (tau_max < nlsP->gamma1_i) { in TaoSolve_NLS()
201 tau = nlsP->gamma1_i; in TaoSolve_NLS()
202 } else if ((tau_min < nlsP->gamma1_i) && (tau_max >= 1.0)) { in TaoSolve_NLS()
203 tau = nlsP->gamma1_i; in TaoSolve_NLS()
204 …} else if ((tau_1 >= nlsP->gamma1_i) && (tau_1 < 1.0) && ((tau_2 < nlsP->gamma1_i) || (tau_2 >= 1.… in TaoSolve_NLS()
206 …} else if ((tau_2 >= nlsP->gamma1_i) && (tau_2 < 1.0) && ((tau_1 < nlsP->gamma1_i) || (tau_2 >= 1.… in TaoSolve_NLS()
234 tao->trust = PetscMax(tao->trust, nlsP->min_radius); in TaoSolve_NLS()
235 tao->trust = PetscMin(tao->trust, nlsP->max_radius); in TaoSolve_NLS()
246 nlsP->newt = 0; in TaoSolve_NLS()
247 nlsP->bfgs = 0; in TaoSolve_NLS()
248 nlsP->grad = 0; in TaoSolve_NLS()
269 if (nlsP->bfgs_pre) { in TaoSolve_NLS()
270 PetscCall(MatLMVMUpdate(nlsP->M, tao->solution, tao->gradient)); in TaoSolve_NLS()
277 PetscCall(KSPCGSetRadius(tao->ksp, nlsP->max_radius)); in TaoSolve_NLS()
278 PetscCall(KSPSolve(tao->ksp, tao->gradient, nlsP->D)); in TaoSolve_NLS()
290 tao->trust = PetscMax(tao->trust, nlsP->min_radius); in TaoSolve_NLS()
291 tao->trust = PetscMin(tao->trust, nlsP->max_radius); in TaoSolve_NLS()
298 tao->trust = PetscMax(tao->trust, nlsP->min_radius); in TaoSolve_NLS()
299 tao->trust = PetscMin(tao->trust, nlsP->max_radius); in TaoSolve_NLS()
301 PetscCall(KSPCGSetRadius(tao->ksp, nlsP->max_radius)); in TaoSolve_NLS()
302 PetscCall(KSPSolve(tao->ksp, tao->gradient, nlsP->D)); in TaoSolve_NLS()
312 PetscCall(KSPSolve(tao->ksp, tao->gradient, nlsP->D)); in TaoSolve_NLS()
317 PetscCall(VecScale(nlsP->D, -1.0)); in TaoSolve_NLS()
319 if ((KSP_DIVERGED_INDEFINITE_PC == ksp_reason) && (nlsP->bfgs_pre)) { in TaoSolve_NLS()
322 PetscCall(MatLMVMReset(nlsP->M, PETSC_FALSE)); in TaoSolve_NLS()
323 PetscCall(MatLMVMUpdate(nlsP->M, tao->solution, tao->gradient)); in TaoSolve_NLS()
328 ++nlsP->ksp_atol; in TaoSolve_NLS()
330 ++nlsP->ksp_rtol; in TaoSolve_NLS()
332 ++nlsP->ksp_ctol; in TaoSolve_NLS()
334 ++nlsP->ksp_negc; in TaoSolve_NLS()
336 ++nlsP->ksp_dtol; in TaoSolve_NLS()
338 ++nlsP->ksp_iter; in TaoSolve_NLS()
340 ++nlsP->ksp_othr; in TaoSolve_NLS()
344 PetscCall(VecDot(nlsP->D, tao->gradient, &gdx)); in TaoSolve_NLS()
350 pert = PetscMin(nlsP->imax, PetscMax(nlsP->imin, nlsP->imfac * gnorm)); in TaoSolve_NLS()
357 pert = PetscMin(nlsP->pmax, PetscMax(nlsP->pgfac * pert, nlsP->pmgfac * gnorm)); in TaoSolve_NLS()
360 if (!nlsP->bfgs_pre) { in TaoSolve_NLS()
363 PetscCall(VecCopy(tao->gradient, nlsP->D)); in TaoSolve_NLS()
364 PetscCall(VecScale(nlsP->D, -1.0)); in TaoSolve_NLS()
365 ++nlsP->grad; in TaoSolve_NLS()
369 PetscCall(MatSolve(nlsP->M, tao->gradient, nlsP->D)); in TaoSolve_NLS()
370 PetscCall(VecScale(nlsP->D, -1.0)); in TaoSolve_NLS()
373 PetscCall(VecDot(tao->gradient, nlsP->D, &gdx)); in TaoSolve_NLS()
381 PetscCall(MatLMVMReset(nlsP->M, PETSC_FALSE)); in TaoSolve_NLS()
382 PetscCall(MatLMVMUpdate(nlsP->M, tao->solution, tao->gradient)); in TaoSolve_NLS()
383 PetscCall(MatSolve(nlsP->M, tao->gradient, nlsP->D)); in TaoSolve_NLS()
384 PetscCall(VecScale(nlsP->D, -1.0)); in TaoSolve_NLS()
387 ++nlsP->grad; in TaoSolve_NLS()
390 PetscCall(MatLMVMGetUpdateCount(nlsP->M, &bfgsUpdates)); in TaoSolve_NLS()
393 ++nlsP->grad; in TaoSolve_NLS()
396 ++nlsP->bfgs; in TaoSolve_NLS()
412 pert = PetscMin(nlsP->imax, PetscMax(nlsP->imin, nlsP->imfac * gnorm)); in TaoSolve_NLS()
419 pert = PetscMin(nlsP->pmax, PetscMax(nlsP->pgfac * pert, nlsP->pmgfac * gnorm)); in TaoSolve_NLS()
425 pert = PetscMin(nlsP->psfac * pert, nlsP->pmsfac * gnorm); in TaoSolve_NLS()
426 if (pert < nlsP->pmin) pert = 0.0; in TaoSolve_NLS()
430 ++nlsP->newt; in TaoSolve_NLS()
436 PetscCall(VecCopy(tao->solution, nlsP->Xold)); in TaoSolve_NLS()
437 PetscCall(VecCopy(tao->gradient, nlsP->Gold)); in TaoSolve_NLS()
439 …PetscCall(TaoLineSearchApply(tao->linesearch, tao->solution, &f, tao->gradient, nlsP->D, &step, &l… in TaoSolve_NLS()
444 PetscCall(VecCopy(nlsP->Xold, tao->solution)); in TaoSolve_NLS()
445 PetscCall(VecCopy(nlsP->Gold, tao->gradient)); in TaoSolve_NLS()
453 pert = PetscMin(nlsP->imax, PetscMax(nlsP->imin, nlsP->imfac * gnorm)); in TaoSolve_NLS()
460 pert = PetscMin(nlsP->pmax, PetscMax(nlsP->pgfac * pert, nlsP->pmgfac * gnorm)); in TaoSolve_NLS()
463 if (!nlsP->bfgs_pre) { in TaoSolve_NLS()
466 PetscCall(VecCopy(tao->gradient, nlsP->D)); in TaoSolve_NLS()
467 ++nlsP->grad; in TaoSolve_NLS()
471 PetscCall(MatSolve(nlsP->M, tao->gradient, nlsP->D)); in TaoSolve_NLS()
473 PetscCall(VecDot(tao->gradient, nlsP->D, &gdx)); in TaoSolve_NLS()
478 PetscCall(MatLMVMReset(nlsP->M, PETSC_FALSE)); in TaoSolve_NLS()
479 PetscCall(MatLMVMUpdate(nlsP->M, tao->solution, tao->gradient)); in TaoSolve_NLS()
480 PetscCall(MatSolve(nlsP->M, tao->gradient, nlsP->D)); in TaoSolve_NLS()
483 ++nlsP->grad; in TaoSolve_NLS()
488 ++nlsP->grad; in TaoSolve_NLS()
491 ++nlsP->bfgs; in TaoSolve_NLS()
502 PetscCall(MatLMVMReset(nlsP->M, PETSC_FALSE)); in TaoSolve_NLS()
503 PetscCall(MatLMVMUpdate(nlsP->M, tao->solution, tao->gradient)); in TaoSolve_NLS()
504 PetscCall(MatSolve(nlsP->M, tao->gradient, nlsP->D)); in TaoSolve_NLS()
507 ++nlsP->grad; in TaoSolve_NLS()
511 PetscCall(VecScale(nlsP->D, -1.0)); in TaoSolve_NLS()
513 …PetscCall(TaoLineSearchApply(tao->linesearch, tao->solution, &f, tao->gradient, nlsP->D, &step, &l… in TaoSolve_NLS()
521 PetscCall(VecCopy(nlsP->Xold, tao->solution)); in TaoSolve_NLS()
522 PetscCall(VecCopy(nlsP->Gold, tao->gradient)); in TaoSolve_NLS()
530 switch (nlsP->update_type) { in TaoSolve_NLS()
533 if (step < nlsP->nu1) { in TaoSolve_NLS()
535 tao->trust = nlsP->omega1 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
536 } else if (step < nlsP->nu2) { in TaoSolve_NLS()
538 tao->trust = nlsP->omega2 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
539 } else if (step < nlsP->nu3) { in TaoSolve_NLS()
541 if (nlsP->omega3 < 1.0) { in TaoSolve_NLS()
542 tao->trust = nlsP->omega3 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
543 } else if (nlsP->omega3 > 1.0) { in TaoSolve_NLS()
544 tao->trust = PetscMax(nlsP->omega3 * norm_d, tao->trust); in TaoSolve_NLS()
546 } else if (step < nlsP->nu4) { in TaoSolve_NLS()
548 tao->trust = PetscMax(nlsP->omega4 * norm_d, tao->trust); in TaoSolve_NLS()
551 tao->trust = PetscMax(nlsP->omega5 * norm_d, tao->trust); in TaoSolve_NLS()
555 tao->trust = nlsP->omega1 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
568 tao->trust = nlsP->alpha1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
571 tao->trust = nlsP->alpha1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
576 … if ((PetscAbsScalar(actred) <= nlsP->epsilon) && (PetscAbsScalar(prered) <= nlsP->epsilon)) { in TaoSolve_NLS()
583 if (kappa < nlsP->eta1) { in TaoSolve_NLS()
585 tao->trust = nlsP->alpha1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
586 } else if (kappa < nlsP->eta2) { in TaoSolve_NLS()
588 tao->trust = nlsP->alpha2 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
589 } else if (kappa < nlsP->eta3) { in TaoSolve_NLS()
591 if (nlsP->alpha3 < 1.0) { in TaoSolve_NLS()
592 tao->trust = nlsP->alpha3 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
593 } else if (nlsP->alpha3 > 1.0) { in TaoSolve_NLS()
594 tao->trust = PetscMax(nlsP->alpha3 * norm_d, tao->trust); in TaoSolve_NLS()
596 } else if (kappa < nlsP->eta4) { in TaoSolve_NLS()
598 tao->trust = PetscMax(nlsP->alpha4 * norm_d, tao->trust); in TaoSolve_NLS()
601 tao->trust = PetscMax(nlsP->alpha5 * norm_d, tao->trust); in TaoSolve_NLS()
607 tao->trust = nlsP->alpha1 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
618 tao->trust = nlsP->gamma1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
621 tao->trust = nlsP->gamma1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
625 … if ((PetscAbsScalar(actred) <= nlsP->epsilon) && (PetscAbsScalar(prered) <= nlsP->epsilon)) { in TaoSolve_NLS()
631 … tau_1 = nlsP->theta * gdx / (nlsP->theta * gdx - (1.0 - nlsP->theta) * prered + actred); in TaoSolve_NLS()
632 … tau_2 = nlsP->theta * gdx / (nlsP->theta * gdx + (1.0 + nlsP->theta) * prered - actred); in TaoSolve_NLS()
636 if (kappa >= 1.0 - nlsP->mu1) { in TaoSolve_NLS()
639 tao->trust = PetscMax(tao->trust, nlsP->gamma3 * norm_d); in TaoSolve_NLS()
640 } else if (tau_max > nlsP->gamma4) { in TaoSolve_NLS()
641 tao->trust = PetscMax(tao->trust, nlsP->gamma4 * norm_d); in TaoSolve_NLS()
645 } else if (kappa >= 1.0 - nlsP->mu2) { in TaoSolve_NLS()
648 if (tau_max < nlsP->gamma2) { in TaoSolve_NLS()
649 tao->trust = nlsP->gamma2 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
650 } else if (tau_max > nlsP->gamma3) { in TaoSolve_NLS()
651 tao->trust = PetscMax(tao->trust, nlsP->gamma3 * norm_d); in TaoSolve_NLS()
660 tao->trust = nlsP->gamma2 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
661 } else if (tau_max < nlsP->gamma1) { in TaoSolve_NLS()
662 tao->trust = nlsP->gamma1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
663 } else if ((tau_min < nlsP->gamma1) && (tau_max >= 1.0)) { in TaoSolve_NLS()
664 tao->trust = nlsP->gamma1 * PetscMin(tao->trust, norm_d); in TaoSolve_NLS()
665 …} else if ((tau_1 >= nlsP->gamma1) && (tau_1 < 1.0) && ((tau_2 < nlsP->gamma1) || (tau_2 >= 1.0)))… in TaoSolve_NLS()
667 …} else if ((tau_2 >= nlsP->gamma1) && (tau_2 < 1.0) && ((tau_1 < nlsP->gamma1) || (tau_2 >= 1.0)))… in TaoSolve_NLS()
677 tao->trust = nlsP->gamma1 * PetscMin(norm_d, tao->trust); in TaoSolve_NLS()
683 tao->trust = PetscMin(tao->trust, nlsP->max_radius); in TaoSolve_NLS()
699 TAO_NLS *nlsP = (TAO_NLS *)tao->data; in TaoSetUp_NLS() local
704 if (!nlsP->W) PetscCall(VecDuplicate(tao->solution, &nlsP->W)); in TaoSetUp_NLS()
705 if (!nlsP->D) PetscCall(VecDuplicate(tao->solution, &nlsP->D)); in TaoSetUp_NLS()
706 if (!nlsP->Xold) PetscCall(VecDuplicate(tao->solution, &nlsP->Xold)); in TaoSetUp_NLS()
707 if (!nlsP->Gold) PetscCall(VecDuplicate(tao->solution, &nlsP->Gold)); in TaoSetUp_NLS()
708 nlsP->M = NULL; in TaoSetUp_NLS()
709 nlsP->bfgs_pre = NULL; in TaoSetUp_NLS()
715 TAO_NLS *nlsP = (TAO_NLS *)tao->data; in TaoDestroy_NLS() local
719 PetscCall(VecDestroy(&nlsP->D)); in TaoDestroy_NLS()
720 PetscCall(VecDestroy(&nlsP->W)); in TaoDestroy_NLS()
721 PetscCall(VecDestroy(&nlsP->Xold)); in TaoDestroy_NLS()
722 PetscCall(VecDestroy(&nlsP->Gold)); in TaoDestroy_NLS()
731 TAO_NLS *nlsP = (TAO_NLS *)tao->data; in TaoSetFromOptions_NLS() local
735 …ius initialization type", "", NLS_INIT, NLS_INIT_TYPES, NLS_INIT[nlsP->init_type], &nlsP->init_typ… in TaoSetFromOptions_NLS()
736 …dius update type", "", NLS_UPDATE, NLS_UPDATE_TYPES, NLS_UPDATE[nlsP->update_type], &nlsP->update_… in TaoSetFromOptions_NLS()
737 …PetscCall(PetscOptionsReal("-tao_nls_sval", "perturbation starting value", "", nlsP->sval, &nlsP->… in TaoSetFromOptions_NLS()
738 …PetscCall(PetscOptionsReal("-tao_nls_imin", "minimum initial perturbation", "", nlsP->imin, &nlsP-… in TaoSetFromOptions_NLS()
739 …PetscCall(PetscOptionsReal("-tao_nls_imax", "maximum initial perturbation", "", nlsP->imax, &nlsP-… in TaoSetFromOptions_NLS()
740 …PetscCall(PetscOptionsReal("-tao_nls_imfac", "initial merit factor", "", nlsP->imfac, &nlsP->imfac… in TaoSetFromOptions_NLS()
741 …PetscCall(PetscOptionsReal("-tao_nls_pmin", "minimum perturbation", "", nlsP->pmin, &nlsP->pmin, N… in TaoSetFromOptions_NLS()
742 …PetscCall(PetscOptionsReal("-tao_nls_pmax", "maximum perturbation", "", nlsP->pmax, &nlsP->pmax, N… in TaoSetFromOptions_NLS()
743 …PetscCall(PetscOptionsReal("-tao_nls_pgfac", "growth factor", "", nlsP->pgfac, &nlsP->pgfac, NULL)… in TaoSetFromOptions_NLS()
744 …PetscCall(PetscOptionsReal("-tao_nls_psfac", "shrink factor", "", nlsP->psfac, &nlsP->psfac, NULL)… in TaoSetFromOptions_NLS()
745 …PetscCall(PetscOptionsReal("-tao_nls_pmgfac", "merit growth factor", "", nlsP->pmgfac, &nlsP->pmgf… in TaoSetFromOptions_NLS()
746 …PetscCall(PetscOptionsReal("-tao_nls_pmsfac", "merit shrink factor", "", nlsP->pmsfac, &nlsP->pmsf… in TaoSetFromOptions_NLS()
747 …cOptionsReal("-tao_nls_eta1", "poor steplength; reduce radius", "", nlsP->eta1, &nlsP->eta1, NULL)… in TaoSetFromOptions_NLS()
748 …l("-tao_nls_eta2", "reasonable steplength; leave radius alone", "", nlsP->eta2, &nlsP->eta2, NULL)… in TaoSetFromOptions_NLS()
749 …ptionsReal("-tao_nls_eta3", "good steplength; increase radius", "", nlsP->eta3, &nlsP->eta3, NULL)… in TaoSetFromOptions_NLS()
750 …tao_nls_eta4", "excellent steplength; greatly increase radius", "", nlsP->eta4, &nlsP->eta4, NULL)… in TaoSetFromOptions_NLS()
751 PetscCall(PetscOptionsReal("-tao_nls_alpha1", "", "", nlsP->alpha1, &nlsP->alpha1, NULL)); in TaoSetFromOptions_NLS()
752 PetscCall(PetscOptionsReal("-tao_nls_alpha2", "", "", nlsP->alpha2, &nlsP->alpha2, NULL)); in TaoSetFromOptions_NLS()
753 PetscCall(PetscOptionsReal("-tao_nls_alpha3", "", "", nlsP->alpha3, &nlsP->alpha3, NULL)); in TaoSetFromOptions_NLS()
754 PetscCall(PetscOptionsReal("-tao_nls_alpha4", "", "", nlsP->alpha4, &nlsP->alpha4, NULL)); in TaoSetFromOptions_NLS()
755 PetscCall(PetscOptionsReal("-tao_nls_alpha5", "", "", nlsP->alpha5, &nlsP->alpha5, NULL)); in TaoSetFromOptions_NLS()
756 …PetscCall(PetscOptionsReal("-tao_nls_nu1", "poor steplength; reduce radius", "", nlsP->nu1, &nlsP-… in TaoSetFromOptions_NLS()
757 …eal("-tao_nls_nu2", "reasonable steplength; leave radius alone", "", nlsP->nu2, &nlsP->nu2, NULL)); in TaoSetFromOptions_NLS()
758 …cOptionsReal("-tao_nls_nu3", "good steplength; increase radius", "", nlsP->nu3, &nlsP->nu3, NULL)); in TaoSetFromOptions_NLS()
759 …"-tao_nls_nu4", "excellent steplength; greatly increase radius", "", nlsP->nu4, &nlsP->nu4, NULL)); in TaoSetFromOptions_NLS()
760 PetscCall(PetscOptionsReal("-tao_nls_omega1", "", "", nlsP->omega1, &nlsP->omega1, NULL)); in TaoSetFromOptions_NLS()
761 PetscCall(PetscOptionsReal("-tao_nls_omega2", "", "", nlsP->omega2, &nlsP->omega2, NULL)); in TaoSetFromOptions_NLS()
762 PetscCall(PetscOptionsReal("-tao_nls_omega3", "", "", nlsP->omega3, &nlsP->omega3, NULL)); in TaoSetFromOptions_NLS()
763 PetscCall(PetscOptionsReal("-tao_nls_omega4", "", "", nlsP->omega4, &nlsP->omega4, NULL)); in TaoSetFromOptions_NLS()
764 PetscCall(PetscOptionsReal("-tao_nls_omega5", "", "", nlsP->omega5, &nlsP->omega5, NULL)); in TaoSetFromOptions_NLS()
765 PetscCall(PetscOptionsReal("-tao_nls_mu1_i", "", "", nlsP->mu1_i, &nlsP->mu1_i, NULL)); in TaoSetFromOptions_NLS()
766 PetscCall(PetscOptionsReal("-tao_nls_mu2_i", "", "", nlsP->mu2_i, &nlsP->mu2_i, NULL)); in TaoSetFromOptions_NLS()
767 PetscCall(PetscOptionsReal("-tao_nls_gamma1_i", "", "", nlsP->gamma1_i, &nlsP->gamma1_i, NULL)); in TaoSetFromOptions_NLS()
768 PetscCall(PetscOptionsReal("-tao_nls_gamma2_i", "", "", nlsP->gamma2_i, &nlsP->gamma2_i, NULL)); in TaoSetFromOptions_NLS()
769 PetscCall(PetscOptionsReal("-tao_nls_gamma3_i", "", "", nlsP->gamma3_i, &nlsP->gamma3_i, NULL)); in TaoSetFromOptions_NLS()
770 PetscCall(PetscOptionsReal("-tao_nls_gamma4_i", "", "", nlsP->gamma4_i, &nlsP->gamma4_i, NULL)); in TaoSetFromOptions_NLS()
771 PetscCall(PetscOptionsReal("-tao_nls_theta_i", "", "", nlsP->theta_i, &nlsP->theta_i, NULL)); in TaoSetFromOptions_NLS()
772 PetscCall(PetscOptionsReal("-tao_nls_mu1", "", "", nlsP->mu1, &nlsP->mu1, NULL)); in TaoSetFromOptions_NLS()
773 PetscCall(PetscOptionsReal("-tao_nls_mu2", "", "", nlsP->mu2, &nlsP->mu2, NULL)); in TaoSetFromOptions_NLS()
774 PetscCall(PetscOptionsReal("-tao_nls_gamma1", "", "", nlsP->gamma1, &nlsP->gamma1, NULL)); in TaoSetFromOptions_NLS()
775 PetscCall(PetscOptionsReal("-tao_nls_gamma2", "", "", nlsP->gamma2, &nlsP->gamma2, NULL)); in TaoSetFromOptions_NLS()
776 PetscCall(PetscOptionsReal("-tao_nls_gamma3", "", "", nlsP->gamma3, &nlsP->gamma3, NULL)); in TaoSetFromOptions_NLS()
777 PetscCall(PetscOptionsReal("-tao_nls_gamma4", "", "", nlsP->gamma4, &nlsP->gamma4, NULL)); in TaoSetFromOptions_NLS()
778 PetscCall(PetscOptionsReal("-tao_nls_theta", "", "", nlsP->theta, &nlsP->theta, NULL)); in TaoSetFromOptions_NLS()
779 …Real("-tao_nls_min_radius", "lower bound on initial radius", "", nlsP->min_radius, &nlsP->min_radi… in TaoSetFromOptions_NLS()
780 …cOptionsReal("-tao_nls_max_radius", "upper bound on radius", "", nlsP->max_radius, &nlsP->max_radi… in TaoSetFromOptions_NLS()
781 …olerance used when computing actual and predicted reduction", "", nlsP->epsilon, &nlsP->epsilon, N… in TaoSetFromOptions_NLS()
790 TAO_NLS *nlsP = (TAO_NLS *)tao->data; in TaoView_NLS() local
797 PetscCall(PetscViewerASCIIPrintf(viewer, "Newton steps: %" PetscInt_FMT "\n", nlsP->newt)); in TaoView_NLS()
798 PetscCall(PetscViewerASCIIPrintf(viewer, "BFGS steps: %" PetscInt_FMT "\n", nlsP->bfgs)); in TaoView_NLS()
799 PetscCall(PetscViewerASCIIPrintf(viewer, "Gradient steps: %" PetscInt_FMT "\n", nlsP->grad)); in TaoView_NLS()
801 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp atol: %" PetscInt_FMT "\n", nlsP->ksp_atol)); in TaoView_NLS()
802 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp rtol: %" PetscInt_FMT "\n", nlsP->ksp_rtol)); in TaoView_NLS()
803 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp ctol: %" PetscInt_FMT "\n", nlsP->ksp_ctol)); in TaoView_NLS()
804 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp negc: %" PetscInt_FMT "\n", nlsP->ksp_negc)); in TaoView_NLS()
805 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp dtol: %" PetscInt_FMT "\n", nlsP->ksp_dtol)); in TaoView_NLS()
806 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp iter: %" PetscInt_FMT "\n", nlsP->ksp_iter)); in TaoView_NLS()
807 PetscCall(PetscViewerASCIIPrintf(viewer, "nls ksp othr: %" PetscInt_FMT "\n", nlsP->ksp_othr)); in TaoView_NLS()
869 TAO_NLS *nlsP; in TaoCreate_NLS() local
873 PetscCall(PetscNew(&nlsP)); in TaoCreate_NLS()
886 tao->data = (void *)nlsP; in TaoCreate_NLS()
888 nlsP->sval = 0.0; in TaoCreate_NLS()
889 nlsP->imin = 1.0e-4; in TaoCreate_NLS()
890 nlsP->imax = 1.0e+2; in TaoCreate_NLS()
891 nlsP->imfac = 1.0e-1; in TaoCreate_NLS()
893 nlsP->pmin = 1.0e-12; in TaoCreate_NLS()
894 nlsP->pmax = 1.0e+2; in TaoCreate_NLS()
895 nlsP->pgfac = 1.0e+1; in TaoCreate_NLS()
896 nlsP->psfac = 4.0e-1; in TaoCreate_NLS()
897 nlsP->pmgfac = 1.0e-1; in TaoCreate_NLS()
898 nlsP->pmsfac = 1.0e-1; in TaoCreate_NLS()
901 nlsP->nu1 = 0.25; in TaoCreate_NLS()
902 nlsP->nu2 = 0.50; in TaoCreate_NLS()
903 nlsP->nu3 = 1.00; in TaoCreate_NLS()
904 nlsP->nu4 = 1.25; in TaoCreate_NLS()
906 nlsP->omega1 = 0.25; in TaoCreate_NLS()
907 nlsP->omega2 = 0.50; in TaoCreate_NLS()
908 nlsP->omega3 = 1.00; in TaoCreate_NLS()
909 nlsP->omega4 = 2.00; in TaoCreate_NLS()
910 nlsP->omega5 = 4.00; in TaoCreate_NLS()
913 nlsP->eta1 = 1.0e-4; in TaoCreate_NLS()
914 nlsP->eta2 = 0.25; in TaoCreate_NLS()
915 nlsP->eta3 = 0.50; in TaoCreate_NLS()
916 nlsP->eta4 = 0.90; in TaoCreate_NLS()
918 nlsP->alpha1 = 0.25; in TaoCreate_NLS()
919 nlsP->alpha2 = 0.50; in TaoCreate_NLS()
920 nlsP->alpha3 = 1.00; in TaoCreate_NLS()
921 nlsP->alpha4 = 2.00; in TaoCreate_NLS()
922 nlsP->alpha5 = 4.00; in TaoCreate_NLS()
925 nlsP->mu1 = 0.10; in TaoCreate_NLS()
926 nlsP->mu2 = 0.50; in TaoCreate_NLS()
928 nlsP->gamma1 = 0.25; in TaoCreate_NLS()
929 nlsP->gamma2 = 0.50; in TaoCreate_NLS()
930 nlsP->gamma3 = 2.00; in TaoCreate_NLS()
931 nlsP->gamma4 = 4.00; in TaoCreate_NLS()
933 nlsP->theta = 0.05; in TaoCreate_NLS()
936 nlsP->mu1_i = 0.35; in TaoCreate_NLS()
937 nlsP->mu2_i = 0.50; in TaoCreate_NLS()
939 nlsP->gamma1_i = 0.0625; in TaoCreate_NLS()
940 nlsP->gamma2_i = 0.5; in TaoCreate_NLS()
941 nlsP->gamma3_i = 2.0; in TaoCreate_NLS()
942 nlsP->gamma4_i = 5.0; in TaoCreate_NLS()
944 nlsP->theta_i = 0.25; in TaoCreate_NLS()
947 nlsP->min_radius = 1.0e-10; in TaoCreate_NLS()
948 nlsP->max_radius = 1.0e10; in TaoCreate_NLS()
949 nlsP->epsilon = 1.0e-6; in TaoCreate_NLS()
951 nlsP->init_type = NLS_INIT_INTERPOLATION; in TaoCreate_NLS()
952 nlsP->update_type = NLS_UPDATE_STEP; in TaoCreate_NLS()