Lines Matching refs:df

9 static PetscErrorCode solve(TAO_DF *df)  in solve()  argument
15 PetscReal *x = df->x, *a = df->a, b = df->b, *l = df->l, *u = df->u, tol = df->tol; in solve()
16 PetscReal *tempv = df->tempv, *y = df->y, *g = df->g, *d = df->d, *Qd = df->Qd; in solve()
17 PetscReal *xplus = df->xplus, *tplus = df->tplus, *sk = df->sk, *yk = df->yk; in solve()
18 PetscReal **Q = df->Q, *f = df->f, *t = df->t; in solve()
19 PetscInt dim = df->dim, *ipt = df->ipt, *ipt2 = df->ipt2, *uv = df->uv; in solve()
37 project(dim, a, b, tempv, l, u, x, &lam_ext, df); in solve()
58 project(dim, a, b, y, l, u, tempv, &lam_ext, df); in solve()
84 for (innerIter = 1; innerIter <= df->maxPGMIter; innerIter++) { in solve()
89 project(dim, a, b, tempv, l, u, y, &lam_ext, df); in solve()
291 TAO_DF df; in TaoSolve_BMRM() local
323 PetscCall(init_df_solver(&df)); in TaoSolve_BMRM()
328 df.tol = 1e-6; in TaoSolve_BMRM()
357 PetscCall(ensure_df_space(tao->niter + 1, &df)); in TaoSolve_BMRM()
362 df.a[tao->niter] = 1.0; in TaoSolve_BMRM()
363 df.f[tao->niter] = -bt; in TaoSolve_BMRM()
364 df.u[tao->niter] = 1.0; in TaoSolve_BMRM()
365 df.l[tao->niter] = 0.0; in TaoSolve_BMRM()
372 df.Q[i][tao->niter] = df.Q[tao->niter][i] = reg / lambda; in TaoSolve_BMRM()
377 df.x[tao->niter] = 0.0; in TaoSolve_BMRM()
378 PetscCall(solve(&df)); in TaoSolve_BMRM()
379 } else df.x[0] = 1.0; in TaoSolve_BMRM()
386 jtwt -= df.x[i] * df.f[i]; in TaoSolve_BMRM()
387 PetscCall(VecAXPY(bmrm->local_w, -df.x[i] / lambda, pgrad->V)); in TaoSolve_BMRM()
419 df.tol = innerSolverTol * 0.5; in TaoSolve_BMRM()
431 PetscCall(destroy_df_solver(&df)); in TaoSolve_BMRM()
511 static PetscErrorCode init_df_solver(TAO_DF *df) in init_df_solver() argument
517 df->maxProjIter = 200; in init_df_solver()
518 df->maxPGMIter = 300000; in init_df_solver()
519 df->b = 1.0; in init_df_solver()
522 df->cur_num_cp = n; in init_df_solver()
523 PetscCall(PetscMalloc1(n, &df->f)); in init_df_solver()
524 PetscCall(PetscMalloc1(n, &df->a)); in init_df_solver()
525 PetscCall(PetscMalloc1(n, &df->l)); in init_df_solver()
526 PetscCall(PetscMalloc1(n, &df->u)); in init_df_solver()
527 PetscCall(PetscMalloc1(n, &df->x)); in init_df_solver()
528 PetscCall(PetscMalloc1(n, &df->Q)); in init_df_solver()
530 for (i = 0; i < n; i++) PetscCall(PetscMalloc1(n, &df->Q[i])); in init_df_solver()
532 PetscCall(PetscMalloc1(n, &df->g)); in init_df_solver()
533 PetscCall(PetscMalloc1(n, &df->y)); in init_df_solver()
534 PetscCall(PetscMalloc1(n, &df->tempv)); in init_df_solver()
535 PetscCall(PetscMalloc1(n, &df->d)); in init_df_solver()
536 PetscCall(PetscMalloc1(n, &df->Qd)); in init_df_solver()
537 PetscCall(PetscMalloc1(n, &df->t)); in init_df_solver()
538 PetscCall(PetscMalloc1(n, &df->xplus)); in init_df_solver()
539 PetscCall(PetscMalloc1(n, &df->tplus)); in init_df_solver()
540 PetscCall(PetscMalloc1(n, &df->sk)); in init_df_solver()
541 PetscCall(PetscMalloc1(n, &df->yk)); in init_df_solver()
543 PetscCall(PetscMalloc1(n, &df->ipt)); in init_df_solver()
544 PetscCall(PetscMalloc1(n, &df->ipt2)); in init_df_solver()
545 PetscCall(PetscMalloc1(n, &df->uv)); in init_df_solver()
549 static PetscErrorCode ensure_df_space(PetscInt dim, TAO_DF *df) in ensure_df_space() argument
555 df->dim = dim; in ensure_df_space()
556 if (dim <= df->cur_num_cp) PetscFunctionReturn(PETSC_SUCCESS); in ensure_df_space()
558 old_n = df->cur_num_cp; in ensure_df_space()
559 df->cur_num_cp += INCRE_DIM; in ensure_df_space()
560 n = df->cur_num_cp; in ensure_df_space()
564 PetscCall(PetscArraycpy(tmp, df->f, old_n)); in ensure_df_space()
565 PetscCall(PetscFree(df->f)); in ensure_df_space()
566 df->f = tmp; in ensure_df_space()
569 PetscCall(PetscArraycpy(tmp, df->a, old_n)); in ensure_df_space()
570 PetscCall(PetscFree(df->a)); in ensure_df_space()
571 df->a = tmp; in ensure_df_space()
574 PetscCall(PetscArraycpy(tmp, df->l, old_n)); in ensure_df_space()
575 PetscCall(PetscFree(df->l)); in ensure_df_space()
576 df->l = tmp; in ensure_df_space()
579 PetscCall(PetscArraycpy(tmp, df->u, old_n)); in ensure_df_space()
580 PetscCall(PetscFree(df->u)); in ensure_df_space()
581 df->u = tmp; in ensure_df_space()
584 PetscCall(PetscArraycpy(tmp, df->x, old_n)); in ensure_df_space()
585 PetscCall(PetscFree(df->x)); in ensure_df_space()
586 df->x = tmp; in ensure_df_space()
592 PetscCall(PetscArraycpy(tmp_Q[i], df->Q[i], old_n)); in ensure_df_space()
593 PetscCall(PetscFree(df->Q[i])); in ensure_df_space()
597 PetscCall(PetscFree(df->Q)); in ensure_df_space()
598 df->Q = tmp_Q; in ensure_df_space()
600 PetscCall(PetscFree(df->g)); in ensure_df_space()
601 PetscCall(PetscMalloc1(n, &df->g)); in ensure_df_space()
603 PetscCall(PetscFree(df->y)); in ensure_df_space()
604 PetscCall(PetscMalloc1(n, &df->y)); in ensure_df_space()
606 PetscCall(PetscFree(df->tempv)); in ensure_df_space()
607 PetscCall(PetscMalloc1(n, &df->tempv)); in ensure_df_space()
609 PetscCall(PetscFree(df->d)); in ensure_df_space()
610 PetscCall(PetscMalloc1(n, &df->d)); in ensure_df_space()
612 PetscCall(PetscFree(df->Qd)); in ensure_df_space()
613 PetscCall(PetscMalloc1(n, &df->Qd)); in ensure_df_space()
615 PetscCall(PetscFree(df->t)); in ensure_df_space()
616 PetscCall(PetscMalloc1(n, &df->t)); in ensure_df_space()
618 PetscCall(PetscFree(df->xplus)); in ensure_df_space()
619 PetscCall(PetscMalloc1(n, &df->xplus)); in ensure_df_space()
621 PetscCall(PetscFree(df->tplus)); in ensure_df_space()
622 PetscCall(PetscMalloc1(n, &df->tplus)); in ensure_df_space()
624 PetscCall(PetscFree(df->sk)); in ensure_df_space()
625 PetscCall(PetscMalloc1(n, &df->sk)); in ensure_df_space()
627 PetscCall(PetscFree(df->yk)); in ensure_df_space()
628 PetscCall(PetscMalloc1(n, &df->yk)); in ensure_df_space()
630 PetscCall(PetscFree(df->ipt)); in ensure_df_space()
631 PetscCall(PetscMalloc1(n, &df->ipt)); in ensure_df_space()
633 PetscCall(PetscFree(df->ipt2)); in ensure_df_space()
634 PetscCall(PetscMalloc1(n, &df->ipt2)); in ensure_df_space()
636 PetscCall(PetscFree(df->uv)); in ensure_df_space()
637 PetscCall(PetscMalloc1(n, &df->uv)); in ensure_df_space()
641 static PetscErrorCode destroy_df_solver(TAO_DF *df) in destroy_df_solver() argument
646 PetscCall(PetscFree(df->f)); in destroy_df_solver()
647 PetscCall(PetscFree(df->a)); in destroy_df_solver()
648 PetscCall(PetscFree(df->l)); in destroy_df_solver()
649 PetscCall(PetscFree(df->u)); in destroy_df_solver()
650 PetscCall(PetscFree(df->x)); in destroy_df_solver()
652 for (i = 0; i < df->cur_num_cp; i++) PetscCall(PetscFree(df->Q[i])); in destroy_df_solver()
653 PetscCall(PetscFree(df->Q)); in destroy_df_solver()
654 PetscCall(PetscFree(df->ipt)); in destroy_df_solver()
655 PetscCall(PetscFree(df->ipt2)); in destroy_df_solver()
656 PetscCall(PetscFree(df->uv)); in destroy_df_solver()
657 PetscCall(PetscFree(df->g)); in destroy_df_solver()
658 PetscCall(PetscFree(df->y)); in destroy_df_solver()
659 PetscCall(PetscFree(df->tempv)); in destroy_df_solver()
660 PetscCall(PetscFree(df->d)); in destroy_df_solver()
661 PetscCall(PetscFree(df->Qd)); in destroy_df_solver()
662 PetscCall(PetscFree(df->t)); in destroy_df_solver()
663 PetscCall(PetscFree(df->xplus)); in destroy_df_solver()
664 PetscCall(PetscFree(df->tplus)); in destroy_df_solver()
665 PetscCall(PetscFree(df->sk)); in destroy_df_solver()
666 PetscCall(PetscFree(df->yk)); in destroy_df_solver()
693 …etscReal b, PetscReal *c, PetscReal *l, PetscReal *u, PetscReal *x, PetscReal *lam_ext, TAO_DF *df) in project() argument
769 …al(r) > TOL_R && dlambda > TOL_LAM * (1.0 + PetscAbsReal(lambda)) && innerIter < df->maxProjIter) { in project()
812 …if (innerIter >= df->maxProjIter) PetscCallAbort(PETSC_COMM_SELF, PetscInfo(NULL, "WARNING: DaiFle… in project()