Lines Matching refs:asls
43 TAO_SSLS *asls = (TAO_SSLS *)tao->data; in TaoSetUp_ASILS() local
48 PetscCall(VecDuplicate(tao->solution, &asls->ff)); in TaoSetUp_ASILS()
49 PetscCall(VecDuplicate(tao->solution, &asls->dpsi)); in TaoSetUp_ASILS()
50 PetscCall(VecDuplicate(tao->solution, &asls->da)); in TaoSetUp_ASILS()
51 PetscCall(VecDuplicate(tao->solution, &asls->db)); in TaoSetUp_ASILS()
52 PetscCall(VecDuplicate(tao->solution, &asls->t1)); in TaoSetUp_ASILS()
53 PetscCall(VecDuplicate(tao->solution, &asls->t2)); in TaoSetUp_ASILS()
54 asls->fixed = NULL; in TaoSetUp_ASILS()
55 asls->free = NULL; in TaoSetUp_ASILS()
56 asls->J_sub = NULL; in TaoSetUp_ASILS()
57 asls->Jpre_sub = NULL; in TaoSetUp_ASILS()
58 asls->w = NULL; in TaoSetUp_ASILS()
59 asls->r1 = NULL; in TaoSetUp_ASILS()
60 asls->r2 = NULL; in TaoSetUp_ASILS()
61 asls->r3 = NULL; in TaoSetUp_ASILS()
62 asls->dxfree = NULL; in TaoSetUp_ASILS()
69 TAO_SSLS *asls = (TAO_SSLS *)tao->data; in Tao_ASLS_FunctionGradient() local
73 PetscCall(VecFischer(X, tao->constraints, tao->XL, tao->XU, asls->ff)); in Tao_ASLS_FunctionGradient()
74 PetscCall(VecNorm(asls->ff, NORM_2, &asls->merit)); in Tao_ASLS_FunctionGradient()
75 *fcn = 0.5 * asls->merit * asls->merit; in Tao_ASLS_FunctionGradient()
78 …cobian, tao->solution, tao->constraints, tao->XL, tao->XU, asls->t1, asls->t2, asls->da, asls->db)… in Tao_ASLS_FunctionGradient()
79 PetscCall(VecPointwiseMult(asls->t1, asls->ff, asls->db)); in Tao_ASLS_FunctionGradient()
80 PetscCall(MatMultTranspose(tao->jacobian, asls->t1, G)); in Tao_ASLS_FunctionGradient()
81 PetscCall(VecPointwiseMult(asls->t1, asls->ff, asls->da)); in Tao_ASLS_FunctionGradient()
82 PetscCall(VecAXPY(G, 1.0, asls->t1)); in Tao_ASLS_FunctionGradient()
113 TAO_SSLS *asls = (TAO_SSLS *)tao->data; in TaoSolve_ASILS() local
128 …PetscCall(TaoLineSearchComputeObjectiveAndGradient(tao->linesearch, tao->solution, &psi, asls->dps… in TaoSolve_ASILS()
129 PetscCall(VecNorm(asls->dpsi, NORM_2, &ndpsi)); in TaoSolve_ASILS()
134 … "iter %" PetscInt_FMT ", merit: %g, ||dpsi||: %g\n", tao->niter, (double)asls->merit, (double)ndp… in TaoSolve_ASILS()
135 PetscCall(TaoLogConvergenceHistory(tao, asls->merit, ndpsi, 0.0, tao->ksp_its)); in TaoSolve_ASILS()
136 PetscCall(TaoMonitor(tao, tao->niter, asls->merit, ndpsi, 0.0, t)); in TaoSolve_ASILS()
166 PetscCall(MatNorm(tao->jacobian, NORM_1, &asls->identifier)); in TaoSolve_ASILS()
167 asls->identifier = PetscMin(asls->merit, 1e-2) / (1 + asls->identifier); in TaoSolve_ASILS()
169 PetscCall(VecSet(asls->t1, -asls->identifier)); in TaoSolve_ASILS()
170 PetscCall(VecSet(asls->t2, asls->identifier)); in TaoSolve_ASILS()
172 PetscCall(ISDestroy(&asls->fixed)); in TaoSolve_ASILS()
173 PetscCall(ISDestroy(&asls->free)); in TaoSolve_ASILS()
174 PetscCall(VecWhichBetweenOrEqual(asls->t1, asls->db, asls->t2, &asls->fixed)); in TaoSolve_ASILS()
175 PetscCall(ISComplementVec(asls->fixed, asls->t1, &asls->free)); in TaoSolve_ASILS()
177 PetscCall(ISGetSize(asls->fixed, &nf)); in TaoSolve_ASILS()
182 PetscCall(TaoVecGetSubVec(asls->ff, asls->fixed, tao->subset_type, 0.0, &asls->r1)); in TaoSolve_ASILS()
183 PetscCall(TaoVecGetSubVec(asls->da, asls->fixed, tao->subset_type, 1.0, &asls->r2)); in TaoSolve_ASILS()
184 PetscCall(VecPointwiseDivide(asls->r1, asls->r1, asls->r2)); in TaoSolve_ASILS()
186 PetscCall(VecISAXPY(tao->stepdirection, asls->fixed, 1.0, asls->r1)); in TaoSolve_ASILS()
193 PetscCall(TaoVecGetSubVec(asls->da, asls->free, tao->subset_type, 0.0, &asls->r1)); in TaoSolve_ASILS()
194 PetscCall(TaoVecGetSubVec(asls->ff, asls->free, tao->subset_type, 0.0, &asls->r2)); in TaoSolve_ASILS()
195 PetscCall(TaoVecGetSubVec(asls->db, asls->free, tao->subset_type, 1.0, &asls->r3)); in TaoSolve_ASILS()
196 PetscCall(VecPointwiseDivide(asls->r1, asls->r1, asls->r3)); in TaoSolve_ASILS()
197 PetscCall(VecPointwiseDivide(asls->r2, asls->r2, asls->r3)); in TaoSolve_ASILS()
207 PetscCall(MatMult(tao->jacobian, tao->stepdirection, asls->t1)); in TaoSolve_ASILS()
208 PetscCall(TaoVecGetSubVec(asls->t1, asls->free, tao->subset_type, 0.0, &asls->r3)); in TaoSolve_ASILS()
209 PetscCall(VecAXPY(asls->r2, -1.0, asls->r3)); in TaoSolve_ASILS()
212 …if (!asls->w && (tao->subset_type == TAO_SUBSET_MASK || tao->subset_type == TAO_SUBSET_MATRIXFREE)… in TaoSolve_ASILS()
213 PetscCall(TaoMatGetSubMat(tao->jacobian, asls->free, asls->w, tao->subset_type, &asls->J_sub)); in TaoSolve_ASILS()
215 …PetscCall(TaoMatGetSubMat(tao->jacobian_pre, asls->free, asls->w, tao->subset_type, &asls->Jpre_su… in TaoSolve_ASILS()
217 PetscCall(MatDestroy(&asls->Jpre_sub)); in TaoSolve_ASILS()
218 asls->Jpre_sub = asls->J_sub; in TaoSolve_ASILS()
219 PetscCall(PetscObjectReference((PetscObject)asls->Jpre_sub)); in TaoSolve_ASILS()
221 PetscCall(MatDiagonalSet(asls->J_sub, asls->r1, ADD_VALUES)); in TaoSolve_ASILS()
222 … PetscCall(TaoVecGetSubVec(tao->stepdirection, asls->free, tao->subset_type, 0.0, &asls->dxfree)); in TaoSolve_ASILS()
223 PetscCall(VecSet(asls->dxfree, 0.0)); in TaoSolve_ASILS()
228 PetscCall(KSPSetOperators(tao->ksp, asls->J_sub, asls->Jpre_sub)); in TaoSolve_ASILS()
229 PetscCall(KSPSolve(tao->ksp, asls->r2, asls->dxfree)); in TaoSolve_ASILS()
234 PetscCall(VecISAXPY(tao->stepdirection, asls->free, 1.0, asls->dxfree)); in TaoSolve_ASILS()
239 PetscCall(VecDot(tao->stepdirection, asls->dpsi, &innerd)); in TaoSolve_ASILS()
241 if (innerd <= asls->delta * PetscPowReal(normd, asls->rho)) { in TaoSolve_ASILS()
244 PetscCall(VecCopy(asls->dpsi, tao->stepdirection)); in TaoSolve_ASILS()
245 PetscCall(VecDot(asls->dpsi, tao->stepdirection, &innerd)); in TaoSolve_ASILS()
254 …PetscCall(TaoLineSearchApply(tao->linesearch, tao->solution, &psi, asls->dpsi, tao->stepdirection,… in TaoSolve_ASILS()
255 PetscCall(VecNorm(asls->dpsi, NORM_2, &ndpsi)); in TaoSolve_ASILS()
277 TAO_SSLS *asls; in TaoCreate_ASILS() local
281 PetscCall(PetscNew(&asls)); in TaoCreate_ASILS()
282 tao->data = (void *)asls; in TaoCreate_ASILS()
289 asls->delta = 1e-10; in TaoCreate_ASILS()
290 asls->rho = 2.1; in TaoCreate_ASILS()
291 asls->fixed = NULL; in TaoCreate_ASILS()
292 asls->free = NULL; in TaoCreate_ASILS()
293 asls->J_sub = NULL; in TaoCreate_ASILS()
294 asls->Jpre_sub = NULL; in TaoCreate_ASILS()
295 asls->w = NULL; in TaoCreate_ASILS()
296 asls->r1 = NULL; in TaoCreate_ASILS()
297 asls->r2 = NULL; in TaoCreate_ASILS()
298 asls->r3 = NULL; in TaoCreate_ASILS()
299 asls->t1 = NULL; in TaoCreate_ASILS()
300 asls->t2 = NULL; in TaoCreate_ASILS()
301 asls->dxfree = NULL; in TaoCreate_ASILS()
303 asls->identifier = 1e-5; in TaoCreate_ASILS()