Lines Matching refs:lmP
9 TAO_LMVM *lmP = (TAO_LMVM *)tao->data; in TaoSolve_LMVM() local
31 if (!lmP->recycle) { in TaoSolve_LMVM()
32 lmP->bfgs = 0; in TaoSolve_LMVM()
33 lmP->grad = 0; in TaoSolve_LMVM()
34 PetscCall(MatLMVMReset(lmP->M, PETSC_FALSE)); in TaoSolve_LMVM()
46 if (lmP->H0) { in TaoSolve_LMVM()
47 PetscCall(MatLMVMSetJ0(lmP->M, lmP->H0)); in TaoSolve_LMVM()
50 PetscCall(MatLMVMUpdate(lmP->M, tao->solution, tao->gradient)); in TaoSolve_LMVM()
51 PetscCall(MatSolve(lmP->M, tao->gradient, lmP->D)); in TaoSolve_LMVM()
52 PetscCall(MatLMVMGetUpdateCount(lmP->M, &nupdates)); in TaoSolve_LMVM()
56 PetscCall(VecDotRealPart(lmP->D, tao->gradient, &gdx)); in TaoSolve_LMVM()
66 PetscCall(MatLMVMReset(lmP->M, PETSC_FALSE)); in TaoSolve_LMVM()
67 PetscCall(MatLMVMClearJ0(lmP->M)); in TaoSolve_LMVM()
68 PetscCall(MatLMVMUpdate(lmP->M, tao->solution, tao->gradient)); in TaoSolve_LMVM()
69 PetscCall(MatSolve(lmP->M, tao->gradient, lmP->D)); in TaoSolve_LMVM()
75 PetscCall(VecScale(lmP->D, -1.0)); in TaoSolve_LMVM()
79 PetscCall(VecCopy(tao->solution, lmP->Xold)); in TaoSolve_LMVM()
80 PetscCall(VecCopy(tao->gradient, lmP->Gold)); in TaoSolve_LMVM()
82 …PetscCall(TaoLineSearchApply(tao->linesearch, tao->solution, &f, tao->gradient, lmP->D, &step, &ls… in TaoSolve_LMVM()
88 PetscCall(VecCopy(lmP->Xold, tao->solution)); in TaoSolve_LMVM()
89 PetscCall(VecCopy(lmP->Gold, tao->gradient)); in TaoSolve_LMVM()
94 PetscCall(MatLMVMReset(lmP->M, PETSC_FALSE)); in TaoSolve_LMVM()
95 PetscCall(MatLMVMClearJ0(lmP->M)); in TaoSolve_LMVM()
96 PetscCall(MatLMVMUpdate(lmP->M, tao->solution, tao->gradient)); in TaoSolve_LMVM()
97 PetscCall(MatSolve(lmP->M, tao->solution, tao->gradient)); in TaoSolve_LMVM()
102 PetscCall(VecScale(lmP->D, -1.0)); in TaoSolve_LMVM()
105 …PetscCall(TaoLineSearchApply(tao->linesearch, tao->solution, &f, tao->gradient, lmP->D, &step, &ls… in TaoSolve_LMVM()
112 PetscCall(VecCopy(lmP->Xold, tao->solution)); in TaoSolve_LMVM()
113 PetscCall(VecCopy(lmP->Gold, tao->gradient)); in TaoSolve_LMVM()
120 ++lmP->bfgs; in TaoSolve_LMVM()
123 ++lmP->grad; in TaoSolve_LMVM()
143 TAO_LMVM *lmP = (TAO_LMVM *)tao->data; in TaoSetUp_LMVM() local
151 if (!lmP->D) PetscCall(VecDuplicate(tao->solution, &lmP->D)); in TaoSetUp_LMVM()
152 if (!lmP->Xold) PetscCall(VecDuplicate(tao->solution, &lmP->Xold)); in TaoSetUp_LMVM()
153 if (!lmP->Gold) PetscCall(VecDuplicate(tao->solution, &lmP->Gold)); in TaoSetUp_LMVM()
158 PetscCall(MatSetSizes(lmP->M, n, n, N, N)); in TaoSetUp_LMVM()
159 PetscCall(MatLMVMAllocate(lmP->M, tao->solution, tao->gradient)); in TaoSetUp_LMVM()
160 PetscCall(MatIsSPDKnown(lmP->M, &is_set, &is_spd)); in TaoSetUp_LMVM()
164 if (lmP->H0) PetscCall(MatLMVMSetJ0(lmP->M, lmP->H0)); in TaoSetUp_LMVM()
170 TAO_LMVM *lmP = (TAO_LMVM *)tao->data; in TaoDestroy_LMVM() local
174 PetscCall(VecDestroy(&lmP->Xold)); in TaoDestroy_LMVM()
175 PetscCall(VecDestroy(&lmP->Gold)); in TaoDestroy_LMVM()
176 PetscCall(VecDestroy(&lmP->D)); in TaoDestroy_LMVM()
178 PetscCall(MatDestroy(&lmP->M)); in TaoDestroy_LMVM()
179 if (lmP->H0) PetscCall(PetscObjectDereference((PetscObject)lmP->H0)); in TaoDestroy_LMVM()
241 TAO_LMVM *lmP; in TaoCreate_LMVM() local
251 PetscCall(PetscNew(&lmP)); in TaoCreate_LMVM()
252 lmP->D = NULL; in TaoCreate_LMVM()
253 lmP->M = NULL; in TaoCreate_LMVM()
254 lmP->Xold = NULL; in TaoCreate_LMVM()
255 lmP->Gold = NULL; in TaoCreate_LMVM()
256 lmP->H0 = NULL; in TaoCreate_LMVM()
257 lmP->recycle = PETSC_FALSE; in TaoCreate_LMVM()
259 tao->data = (void *)lmP; in TaoCreate_LMVM()
272 PetscCall(MatCreate(((PetscObject)tao)->comm, &lmP->M)); in TaoCreate_LMVM()
273 PetscCall(PetscObjectIncrementTabLevel((PetscObject)lmP->M, (PetscObject)tao, 1)); in TaoCreate_LMVM()
274 PetscCall(MatSetType(lmP->M, MATLMVMBFGS)); in TaoCreate_LMVM()
275 PetscCall(MatSetOptionsPrefix(lmP->M, "tao_lmvm_")); in TaoCreate_LMVM()