Lines Matching defs:tao

9 + tao  - the `Tao` context
17 + tao - the `Tao` context
27 PetscErrorCode TaoSetHessian(Tao tao, Mat H, Mat Hpre, PetscErrorCode (*func)(Tao tao, Vec x, Mat H, Mat Hpre, PetscCtx ctx), PetscCtx ctx)
30 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
33 PetscCheckSameComm(tao, 1, H, 2);
37 PetscCheckSameComm(tao, 1, Hpre, 3);
39 if (ctx) tao->user_hessP = ctx;
40 if (func) tao->ops->computehessian = func;
43 PetscCall(MatDestroy(&tao->hessian));
44 tao->hessian = H;
48 PetscCall(MatDestroy(&tao->hessian_pre));
49 tao->hessian_pre = Hpre;
60 . tao - the `Tao` context
69 + tao - the `Tao` context
79 PetscErrorCode TaoGetHessian(Tao tao, Mat *H, Mat *Hpre, PetscErrorCode (**func)(Tao tao, Vec x, Mat H, Mat Hpre, PetscCtx ctx), PetscCtxRt ctx)
82 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
83 if (H) *H = tao->hessian;
84 if (Hpre) *Hpre = tao->hessian_pre;
85 if (ctx) *(void **)ctx = tao->user_hessP;
86 if (func) *func = tao->ops->computehessian;
90 PetscErrorCode TaoTestHessian(Tao tao)
93 Vec x = tao->solution;
105 PetscObjectOptionsBegin((PetscObject)tao);
112 PetscCall(PetscObjectGetComm((PetscObject)tao, &comm));
115 PetscCall(PetscViewerASCIISetTab(viewer, ((PetscObject)tao)->tablevel));
128 PetscCall(PetscObjectTypeCompare((PetscObject)tao->hessian, MATMFFD, &flg));
129 if (!flg) hessian = tao->hessian;
130 else hessian = tao->hessian_pre;
149 PetscCall(TaoDefaultComputeHessian(tao, x, B, B, NULL));
203 if (hessian != tao->hessian_pre) {
204 hessian = tao->hessian_pre;
223 + tao - the Tao solver context
250 PetscErrorCode TaoComputeHessian(Tao tao, Vec X, Mat H, Mat Hpre)
253 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
255 PetscCheckSameComm(tao, 1, X, 2);
256 PetscCheck(tao->ops->computehessian, PetscObjectComm((PetscObject)tao), PETSC_ERR_ARG_WRONGSTATE, "TaoSetHessian() not called");
258 ++tao->nhess;
260 PetscCall(PetscLogEventBegin(TAO_HessianEval, tao, X, H, Hpre));
261 PetscCallBack("Tao callback Hessian", (*tao->ops->computehessian)(tao, X, H, Hpre, tao->user_hessP));
262 PetscCall(PetscLogEventEnd(TAO_HessianEval, tao, X, H, Hpre));
265 PetscCall(TaoTestHessian(tao));
276 + tao - the Tao solver context
295 PetscErrorCode TaoComputeJacobian(Tao tao, Vec X, Mat J, Mat Jpre)
298 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
300 PetscCheckSameComm(tao, 1, X, 2);
301 ++tao->njac;
303 PetscCall(PetscLogEventBegin(TAO_JacobianEval, tao, X, J, Jpre));
304 PetscCallBack("Tao callback Jacobian", (*tao->ops->computejacobian)(tao, X, J, Jpre, tao->user_jacP));
305 PetscCall(PetscLogEventEnd(TAO_JacobianEval, tao, X, J, Jpre));
317 + tao - the Tao solver context
336 PetscErrorCode TaoComputeResidualJacobian(Tao tao, Vec X, Mat J, Mat Jpre)
339 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
341 PetscCheckSameComm(tao, 1, X, 2);
342 ++tao->njac;
344 PetscCall(PetscLogEventBegin(TAO_JacobianEval, tao, X, J, Jpre));
345 PetscCallBack("Tao callback least-squares residual Jacobian", (*tao->ops->computeresidualjacobian)(tao, X, J, Jpre, tao->user_lsjacP));
346 PetscCall(PetscLogEventEnd(TAO_JacobianEval, tao, X, J, Jpre));
358 + tao - the `Tao` solver context
374 PetscErrorCode TaoComputeJacobianState(Tao tao, Vec X, Mat J, Mat Jpre, Mat Jinv)
377 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
379 PetscCheckSameComm(tao, 1, X, 2);
380 ++tao->njac_state;
382 PetscCall(PetscLogEventBegin(TAO_JacobianEval, tao, X, J, Jpre));
383 PetscCallBack("Tao callback Jacobian(state)", (*tao->ops->computejacobianstate)(tao, X, J, Jpre, Jinv, tao->user_jac_stateP));
384 PetscCall(PetscLogEventEnd(TAO_JacobianEval, tao, X, J, Jpre));
396 + tao - the Tao solver context
410 PetscErrorCode TaoComputeJacobianDesign(Tao tao, Vec X, Mat J)
413 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
415 PetscCheckSameComm(tao, 1, X, 2);
416 ++tao->njac_design;
418 PetscCall(PetscLogEventBegin(TAO_JacobianEval, tao, X, J, NULL));
419 PetscCallBack("Tao callback Jacobian(design)", (*tao->ops->computejacobiandesign)(tao, X, J, tao->user_jac_designP));
420 PetscCall(PetscLogEventEnd(TAO_JacobianEval, tao, X, J, NULL));
431 + tao - the `Tao` context
439 + tao - the `Tao` context
449 PetscErrorCode TaoSetJacobianRoutine(Tao tao, Mat J, Mat Jpre, PetscErrorCode (*func)(Tao tao, Vec x, Mat J, Mat Jpre, PetscCtx ctx), PetscCtx ctx)
452 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
455 PetscCheckSameComm(tao, 1, J, 2);
459 PetscCheckSameComm(tao, 1, Jpre, 3);
461 if (ctx) tao->user_jacP = ctx;
462 if (func) tao->ops->computejacobian = func;
465 PetscCall(MatDestroy(&tao->jacobian));
466 tao->jacobian = J;
470 PetscCall(MatDestroy(&tao->jacobian_pre));
471 tao->jacobian_pre = Jpre;
483 + tao - the `Tao` context
491 + tao - the `Tao` context
501 PetscErrorCode TaoSetJacobianResidualRoutine(Tao tao, Mat J, Mat Jpre, PetscErrorCode (*func)(Tao tao, Vec x, Mat J, Mat Jpre, PetscCtx ctx), PetscCtx ctx)
504 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
507 PetscCheckSameComm(tao, 1, J, 2);
511 PetscCheckSameComm(tao, 1, Jpre, 3);
513 if (ctx) tao->user_lsjacP = ctx;
514 if (func) tao->ops->computeresidualjacobian = func;
517 PetscCall(MatDestroy(&tao->ls_jac));
518 tao->ls_jac = J;
522 PetscCall(MatDestroy(&tao->ls_jac_pre));
523 tao->ls_jac_pre = Jpre;
536 + tao - the `Tao` context
545 + tao - the `Tao` context
556 PetscErrorCode TaoSetJacobianStateRoutine(Tao tao, Mat J, Mat Jpre, Mat Jinv, PetscErrorCode (*func)(Tao tao, Vec x, Mat J, Mat Jpre, Mat Jinv, PetscCtx ctx), PetscCtx ctx)
559 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
562 PetscCheckSameComm(tao, 1, J, 2);
566 PetscCheckSameComm(tao, 1, Jpre, 3);
570 PetscCheckSameComm(tao, 1, Jinv, 4);
572 if (ctx) tao->user_jac_stateP = ctx;
573 if (func) tao->ops->computejacobianstate = func;
576 PetscCall(MatDestroy(&tao->jacobian_state));
577 tao->jacobian_state = J;
581 PetscCall(MatDestroy(&tao->jacobian_state_pre));
582 tao->jacobian_state_pre = Jpre;
586 PetscCall(MatDestroy(&tao->jacobian_state_inv));
587 tao->jacobian_state_inv = Jinv;
600 + tao - the `Tao` context
607 + tao - the `Tao` context
616 PetscErrorCode TaoSetJacobianDesignRoutine(Tao tao, Mat J, PetscErrorCode (*func)(Tao tao, Vec x, Mat J, PetscCtx ctx), PetscCtx ctx)
619 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
622 PetscCheckSameComm(tao, 1, J, 2);
624 if (ctx) tao->user_jac_designP = ctx;
625 if (func) tao->ops->computejacobiandesign = func;
628 PetscCall(MatDestroy(&tao->jacobian_design));
629 tao->jacobian_design = J;
642 + tao - The `Tao` context
650 PetscErrorCode TaoSetStateDesignIS(Tao tao, IS s_is, IS d_is)
654 PetscCall(ISDestroy(&tao->state_is));
655 tao->state_is = s_is;
657 PetscCall(ISDestroy(&tao->design_is));
658 tao->design_is = d_is;
669 + tao - the `Tao` solver context
684 PetscErrorCode TaoComputeJacobianEquality(Tao tao, Vec X, Mat J, Mat Jpre)
687 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
689 PetscCheckSameComm(tao, 1, X, 2);
690 ++tao->njac_equality;
692 PetscCall(PetscLogEventBegin(TAO_JacobianEval, tao, X, J, Jpre));
693 PetscCallBack("Tao callback Jacobian(equality)", (*tao->ops->computejacobianequality)(tao, X, J, Jpre, tao->user_jac_equalityP));
694 PetscCall(PetscLogEventEnd(TAO_JacobianEval, tao, X, J, Jpre));
706 + tao - the `Tao` solver context
721 PetscErrorCode TaoComputeJacobianInequality(Tao tao, Vec X, Mat J, Mat Jpre)
724 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
726 PetscCheckSameComm(tao, 1, X, 2);
727 ++tao->njac_inequality;
729 PetscCall(PetscLogEventBegin(TAO_JacobianEval, tao, X, J, Jpre));
730 PetscCallBack("Tao callback Jacobian (inequality)", (*tao->ops->computejacobianinequality)(tao, X, J, Jpre, tao->user_jac_inequalityP));
731 PetscCall(PetscLogEventEnd(TAO_JacobianEval, tao, X, J, Jpre));
744 + tao - the `Tao` context
752 + tao - the `Tao` context
762 PetscErrorCode TaoSetJacobianEqualityRoutine(Tao tao, Mat J, Mat Jpre, PetscErrorCode (*func)(Tao tao, Vec x, Mat J, Mat Jpre, PetscCtx ctx), PetscCtx ctx)
765 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
768 PetscCheckSameComm(tao, 1, J, 2);
772 PetscCheckSameComm(tao, 1, Jpre, 3);
774 if (ctx) tao->user_jac_equalityP = ctx;
775 if (func) tao->ops->computejacobianequality = func;
778 PetscCall(MatDestroy(&tao->jacobian_equality));
779 tao->jacobian_equality = J;
783 PetscCall(MatDestroy(&tao->jacobian_equality_pre));
784 tao->jacobian_equality_pre = Jpre;
795 . tao - the `Tao` context
804 + tao - the `Tao` context
814 PetscErrorCode TaoGetJacobianEqualityRoutine(Tao tao, Mat *J, Mat *Jpre, PetscErrorCode (**func)(Tao tao, Vec x, Mat J, Mat Jpre, PetscCtx ctx), PetscCtxRt ctx)
817 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
818 if (J) *J = tao->jacobian_equality;
819 if (Jpre) *Jpre = tao->jacobian_equality_pre;
820 if (func) *func = tao->ops->computejacobianequality;
821 if (ctx) *(void **)ctx = tao->user_jac_equalityP;
833 + tao - the `Tao` context
841 + tao - the `Tao` context
851 PetscErrorCode TaoSetJacobianInequalityRoutine(Tao tao, Mat J, Mat Jpre, PetscErrorCode (*func)(Tao tao, Vec x, Mat J, Mat Jpre, PetscCtx ctx), PetscCtx ctx)
854 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
857 PetscCheckSameComm(tao, 1, J, 2);
861 PetscCheckSameComm(tao, 1, Jpre, 3);
863 if (ctx) tao->user_jac_inequalityP = ctx;
864 if (func) tao->ops->computejacobianinequality = func;
867 PetscCall(MatDestroy(&tao->jacobian_inequality));
868 tao->jacobian_inequality = J;
872 PetscCall(MatDestroy(&tao->jacobian_inequality_pre));
873 tao->jacobian_inequality_pre = Jpre;
884 . tao - the `Tao` context
893 + tao - the `Tao` context
903 PetscErrorCode TaoGetJacobianInequalityRoutine(Tao tao, Mat *J, Mat *Jpre, PetscErrorCode (**func)(Tao tao, Vec x, Mat J, Mat Jpre, PetscCtx ctx), PetscCtxRt ctx)
906 PetscValidHeaderSpecific(tao, TAO_CLASSID, 1);
907 if (J) *J = tao->jacobian_inequality;
908 if (Jpre) *Jpre = tao->jacobian_inequality_pre;
909 if (func) *func = tao->ops->computejacobianinequality;
910 if (ctx) *(void **)ctx = tao->user_jac_inequalityP;