Lines Matching refs:asls
43 TAO_SSLS *asls = (TAO_SSLS *)tao->data; in TaoSetUp_ASFLS() local
48 PetscCall(VecDuplicate(tao->solution, &asls->ff)); in TaoSetUp_ASFLS()
49 PetscCall(VecDuplicate(tao->solution, &asls->dpsi)); in TaoSetUp_ASFLS()
50 PetscCall(VecDuplicate(tao->solution, &asls->da)); in TaoSetUp_ASFLS()
51 PetscCall(VecDuplicate(tao->solution, &asls->db)); in TaoSetUp_ASFLS()
52 PetscCall(VecDuplicate(tao->solution, &asls->t1)); in TaoSetUp_ASFLS()
53 PetscCall(VecDuplicate(tao->solution, &asls->t2)); in TaoSetUp_ASFLS()
54 PetscCall(VecDuplicate(tao->solution, &asls->w)); in TaoSetUp_ASFLS()
55 asls->fixed = NULL; in TaoSetUp_ASFLS()
56 asls->free = NULL; in TaoSetUp_ASFLS()
57 asls->J_sub = NULL; in TaoSetUp_ASFLS()
58 asls->Jpre_sub = NULL; in TaoSetUp_ASFLS()
59 asls->r1 = NULL; in TaoSetUp_ASFLS()
60 asls->r2 = NULL; in TaoSetUp_ASFLS()
61 asls->r3 = NULL; in TaoSetUp_ASFLS()
62 asls->dxfree = NULL; in TaoSetUp_ASFLS()
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_ASFLS() local
131 …PetscCall(TaoLineSearchComputeObjectiveAndGradient(tao->linesearch, tao->solution, &psi, asls->dps… in TaoSolve_ASFLS()
132 PetscCall(VecNorm(asls->dpsi, NORM_2, &ndpsi)); in TaoSolve_ASFLS()
137 … "iter %" PetscInt_FMT ", merit: %g, ||dpsi||: %g\n", tao->niter, (double)asls->merit, (double)ndp… in TaoSolve_ASFLS()
138 PetscCall(TaoLogConvergenceHistory(tao, asls->merit, ndpsi, 0.0, tao->ksp_its)); in TaoSolve_ASFLS()
139 PetscCall(TaoMonitor(tao, tao->niter, asls->merit, ndpsi, 0.0, t)); in TaoSolve_ASFLS()
169 PetscCall(MatNorm(tao->jacobian, NORM_1, &asls->identifier)); in TaoSolve_ASFLS()
170 asls->identifier = PetscMin(asls->merit, 1e-2) / (1 + asls->identifier); in TaoSolve_ASFLS()
172 PetscCall(VecSet(asls->t1, -asls->identifier)); in TaoSolve_ASFLS()
173 PetscCall(VecSet(asls->t2, asls->identifier)); in TaoSolve_ASFLS()
175 PetscCall(ISDestroy(&asls->fixed)); in TaoSolve_ASFLS()
176 PetscCall(ISDestroy(&asls->free)); in TaoSolve_ASFLS()
177 PetscCall(VecWhichBetweenOrEqual(asls->t1, asls->db, asls->t2, &asls->fixed)); in TaoSolve_ASFLS()
178 PetscCall(ISComplementVec(asls->fixed, asls->t1, &asls->free)); in TaoSolve_ASFLS()
180 PetscCall(ISGetSize(asls->fixed, &nf)); in TaoSolve_ASFLS()
185 PetscCall(TaoVecGetSubVec(asls->ff, asls->fixed, tao->subset_type, 0.0, &asls->r1)); in TaoSolve_ASFLS()
186 PetscCall(TaoVecGetSubVec(asls->da, asls->fixed, tao->subset_type, 1.0, &asls->r2)); in TaoSolve_ASFLS()
187 PetscCall(VecPointwiseDivide(asls->r1, asls->r1, asls->r2)); in TaoSolve_ASFLS()
189 PetscCall(VecISAXPY(tao->stepdirection, asls->fixed, 1.0, asls->r1)); in TaoSolve_ASFLS()
196 PetscCall(TaoVecGetSubVec(asls->da, asls->free, tao->subset_type, 0.0, &asls->r1)); in TaoSolve_ASFLS()
197 PetscCall(TaoVecGetSubVec(asls->ff, asls->free, tao->subset_type, 0.0, &asls->r2)); in TaoSolve_ASFLS()
198 PetscCall(TaoVecGetSubVec(asls->db, asls->free, tao->subset_type, 1.0, &asls->r3)); in TaoSolve_ASFLS()
199 PetscCall(VecPointwiseDivide(asls->r1, asls->r1, asls->r3)); in TaoSolve_ASFLS()
200 PetscCall(VecPointwiseDivide(asls->r2, asls->r2, asls->r3)); in TaoSolve_ASFLS()
210 PetscCall(MatMult(tao->jacobian, tao->stepdirection, asls->t1)); in TaoSolve_ASFLS()
211 PetscCall(TaoVecGetSubVec(asls->t1, asls->free, tao->subset_type, 0.0, &asls->r3)); in TaoSolve_ASFLS()
212 PetscCall(VecAXPY(asls->r2, -1.0, asls->r3)); in TaoSolve_ASFLS()
215 PetscCall(TaoMatGetSubMat(tao->jacobian, asls->free, asls->w, tao->subset_type, &asls->J_sub)); in TaoSolve_ASFLS()
217 …PetscCall(TaoMatGetSubMat(tao->jacobian_pre, asls->free, asls->w, tao->subset_type, &asls->Jpre_su… in TaoSolve_ASFLS()
219 PetscCall(MatDestroy(&asls->Jpre_sub)); in TaoSolve_ASFLS()
220 asls->Jpre_sub = asls->J_sub; in TaoSolve_ASFLS()
221 PetscCall(PetscObjectReference((PetscObject)asls->Jpre_sub)); in TaoSolve_ASFLS()
223 PetscCall(MatDiagonalSet(asls->J_sub, asls->r1, ADD_VALUES)); in TaoSolve_ASFLS()
224 … PetscCall(TaoVecGetSubVec(tao->stepdirection, asls->free, tao->subset_type, 0.0, &asls->dxfree)); in TaoSolve_ASFLS()
225 PetscCall(VecSet(asls->dxfree, 0.0)); in TaoSolve_ASFLS()
230 PetscCall(KSPSetOperators(tao->ksp, asls->J_sub, asls->Jpre_sub)); in TaoSolve_ASFLS()
231 PetscCall(KSPSolve(tao->ksp, asls->r2, asls->dxfree)); in TaoSolve_ASFLS()
236 PetscCall(VecISAXPY(tao->stepdirection, asls->free, 1.0, asls->dxfree)); in TaoSolve_ASFLS()
240 PetscCall(VecCopy(tao->stepdirection, asls->w)); in TaoSolve_ASFLS()
241 PetscCall(VecScale(asls->w, -1.0)); in TaoSolve_ASFLS()
242 PetscCall(VecBoundGradientProjection(asls->w, tao->solution, tao->XL, tao->XU, asls->w)); in TaoSolve_ASFLS()
243 PetscCall(VecNorm(asls->w, NORM_2, &normd)); in TaoSolve_ASFLS()
244 PetscCall(VecDot(asls->w, asls->dpsi, &innerd)); in TaoSolve_ASFLS()
246 if (innerd >= -asls->delta * PetscPowReal(normd, asls->rho)) { in TaoSolve_ASFLS()
249 PetscCall(VecCopy(asls->dpsi, tao->stepdirection)); in TaoSolve_ASFLS()
250 PetscCall(VecDot(asls->dpsi, tao->stepdirection, &innerd)); in TaoSolve_ASFLS()
259 …PetscCall(TaoLineSearchApply(tao->linesearch, tao->solution, &psi, asls->dpsi, tao->stepdirection,… in TaoSolve_ASFLS()
260 PetscCall(VecNorm(asls->dpsi, NORM_2, &ndpsi)); in TaoSolve_ASFLS()
282 TAO_SSLS *asls; in TaoCreate_ASFLS() local
286 PetscCall(PetscNew(&asls)); in TaoCreate_ASFLS()
287 tao->data = (void *)asls; in TaoCreate_ASFLS()
294 asls->delta = 1e-10; in TaoCreate_ASFLS()
295 asls->rho = 2.1; in TaoCreate_ASFLS()
296 asls->fixed = NULL; in TaoCreate_ASFLS()
297 asls->free = NULL; in TaoCreate_ASFLS()
298 asls->J_sub = NULL; in TaoCreate_ASFLS()
299 asls->Jpre_sub = NULL; in TaoCreate_ASFLS()
300 asls->w = NULL; in TaoCreate_ASFLS()
301 asls->r1 = NULL; in TaoCreate_ASFLS()
302 asls->r2 = NULL; in TaoCreate_ASFLS()
303 asls->r3 = NULL; in TaoCreate_ASFLS()
304 asls->t1 = NULL; in TaoCreate_ASFLS()
305 asls->t2 = NULL; in TaoCreate_ASFLS()
306 asls->dxfree = NULL; in TaoCreate_ASFLS()
307 asls->identifier = 1e-5; in TaoCreate_ASFLS()