| /petsc/src/tao/bound/impls/bnk/ |
| H A D | bnk.c | 13 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoBNKComputeSubHessian() local 16 PetscCall(MatDestroy(&bnk->Hpre_inactive)); in TaoBNKComputeSubHessian() 17 PetscCall(MatDestroy(&bnk->H_inactive)); in TaoBNKComputeSubHessian() 18 if (bnk->active_idx) { in TaoBNKComputeSubHessian() 19 …PetscCall(MatCreateSubMatrix(tao->hessian, bnk->inactive_idx, bnk->inactive_idx, MAT_INITIAL_MATRI… in TaoBNKComputeSubHessian() 21 PetscCall(PetscObjectReference((PetscObject)bnk->H_inactive)); in TaoBNKComputeSubHessian() 22 bnk->Hpre_inactive = bnk->H_inactive; in TaoBNKComputeSubHessian() 24 …tscCall(MatCreateSubMatrix(tao->hessian_pre, bnk->inactive_idx, bnk->inactive_idx, MAT_INITIAL_MAT… in TaoBNKComputeSubHessian() 26 if (bnk->bfgs_pre) PetscCall(PCLMVMSetIS(bnk->bfgs_pre, bnk->inactive_idx)); in TaoBNKComputeSubHessian() 29 bnk->H_inactive = tao->hessian; in TaoBNKComputeSubHessian() [all …]
|
| H A D | bntl.c | 108 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoSolve_BNTL() local 119 PetscCall(TaoBNKInitialize(tao, bnk->init_type, &needH)); in TaoSolve_BNTL() 127 PetscCall(TaoComputeObjective(tao, tao->solution, &bnk->f)); in TaoSolve_BNTL() 130 if (needH && bnk->inactive_idx) { in TaoSolve_BNTL() 134 tao->reason = bnk->bncg->reason; in TaoSolve_BNTL() 138 PetscCall((*bnk->computehessian)(tao)); in TaoSolve_BNTL() 143 PetscCall((*bnk->computestep)(tao, shift, &ksp_reason, &stepType)); in TaoSolve_BNTL() 147 bnk->fold = bnk->f; in TaoSolve_BNTL() 148 PetscCall(VecCopy(tao->solution, bnk->Xold)); in TaoSolve_BNTL() 149 PetscCall(VecCopy(tao->gradient, bnk->Gold)); in TaoSolve_BNTL() [all …]
|
| H A D | bntr.c | 91 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoSolve_BNTR() local 101 PetscCall(TaoBNKInitialize(tao, bnk->init_type, &needH)); in TaoSolve_BNTR() 109 PetscCall(TaoComputeObjective(tao, tao->solution, &bnk->f)); in TaoSolve_BNTR() 112 if (needH && bnk->inactive_idx) { in TaoSolve_BNTR() 116 tao->reason = bnk->bncg->reason; in TaoSolve_BNTR() 120 PetscCall((*bnk->computehessian)(tao)); in TaoSolve_BNTR() 125 bnk->fold = bnk->f; in TaoSolve_BNTR() 126 PetscCall(VecCopy(tao->solution, bnk->Xold)); in TaoSolve_BNTR() 127 PetscCall(VecCopy(tao->gradient, bnk->Gold)); in TaoSolve_BNTR() 128 PetscCall(VecCopy(bnk->unprojected_gradient, bnk->unprojected_gradient_old)); in TaoSolve_BNTR() [all …]
|
| H A D | bnls.c | 90 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoSolve_BNLS() local 100 PetscCall(TaoBNKInitialize(tao, bnk->init_type, &needH)); in TaoSolve_BNLS() 108 PetscCall(TaoComputeObjective(tao, tao->solution, &bnk->f)); in TaoSolve_BNLS() 111 if (needH && bnk->inactive_idx) { in TaoSolve_BNLS() 115 tao->reason = bnk->bncg->reason; in TaoSolve_BNLS() 119 PetscCall((*bnk->computehessian)(tao)); in TaoSolve_BNLS() 124 PetscCall((*bnk->computestep)(tao, shift, &ksp_reason, &stepType)); in TaoSolve_BNLS() 128 bnk->fold = bnk->f; in TaoSolve_BNLS() 129 PetscCall(VecCopy(tao->solution, bnk->Xold)); in TaoSolve_BNLS() 130 PetscCall(VecCopy(tao->gradient, bnk->Gold)); in TaoSolve_BNLS() [all …]
|
| /petsc/src/tao/bound/impls/bqnls/ |
| H A D | bqnls.c | 7 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoBQNLSComputeHessian() local 8 TAO_BQNK *bqnk = (TAO_BQNK *)bnk->ctx; in TaoBQNLSComputeHessian() 13 gnorm2 = bnk->gnorm * bnk->gnorm; in TaoBQNLSComputeHessian() 15 if (bnk->f == 0.0) delta = 2.0 / gnorm2; in TaoBQNLSComputeHessian() 16 else delta = 2.0 * PetscAbsScalar(bnk->f) / gnorm2; in TaoBQNLSComputeHessian() 18 PetscCall(MatLMVMUpdate(bqnk->B, tao->solution, bnk->unprojected_gradient)); in TaoBQNLSComputeHessian() 24 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoBQNLSComputeStep() local 25 TAO_BQNK *bqnk = (TAO_BQNK *)bnk->ctx; in TaoBQNLSComputeStep() 31 PetscCall(TaoBNKBoundStep(tao, bnk->as_type, tao->stepdirection)); in TaoBQNLSComputeStep() 41 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoSetFromOptions_BQNLS() local [all …]
|
| /petsc/src/tao/bound/impls/bqnk/ |
| H A D | bqnk.c | 6 TAO_BNK *bnk = (TAO_BNK *)tao->data; in TaoBQNKComputeHessian() local 7 TAO_BQNK *bqnk = (TAO_BQNK *)bnk->ctx; in TaoBQNKComputeHessian() 20 gnorm2 = bnk->gnorm * bnk->gnorm; in TaoBQNKComputeHessian() 22 if (bnk->f == 0.0) { in TaoBQNKComputeHessian() 25 delta = 2.0 * PetscAbsScalar(bnk->f) / gnorm2; in TaoBQNKComputeHessian() 29 PetscCall(MatLMVMUpdate(tao->hessian, tao->solution, bnk->unprojected_gradient)); in TaoBQNKComputeHessian() 32 PetscCall(MatDestroy(&bnk->H_inactive)); in TaoBQNKComputeHessian() 33 if (bnk->active_idx) { in TaoBQNKComputeHessian() 34 …PetscCall(MatCreateSubMatrixVirtual(tao->hessian, bnk->inactive_idx, bnk->inactive_idx, &bnk->H_in… in TaoBQNKComputeHessian() 35 PetscCall(PCLMVMSetIS(bqnk->pc, bnk->inactive_idx)); in TaoBQNKComputeHessian() [all …]
|
| H A D | bqnkls.c | 16 TAO_BNK *bnk; in TaoCreate_BQNKLS() local 21 bnk = (TAO_BNK *)tao->data; in TaoCreate_BQNKLS() 22 bnk->update_type = BNK_UPDATE_STEP; in TaoCreate_BQNKLS() 23 bqnk = (TAO_BQNK *)bnk->ctx; in TaoCreate_BQNKLS()
|
| H A D | bqnktl.c | 29 TAO_BNK *bnk; in TaoCreate_BQNKTL() local 35 bnk = (TAO_BNK *)tao->data; in TaoCreate_BQNKTL() 36 bqnk = (TAO_BQNK *)bnk->ctx; in TaoCreate_BQNKTL()
|
| H A D | bqnktr.c | 30 TAO_BNK *bnk; in TaoCreate_BQNKTR() local 36 bnk = (TAO_BNK *)tao->data; in TaoCreate_BQNKTR() 37 bqnk = (TAO_BQNK *)bnk->ctx; in TaoCreate_BQNKTR()
|