xref: /petsc/src/tao/constrained/impls/ipm/ipm.h (revision a7e14dcfba0d07adf6226a919460249440ec94c7)
1*a7e14dcfSSatish Balay #ifndef __TAO_IPM_H
2*a7e14dcfSSatish Balay #define __TAO_IPM_H
3*a7e14dcfSSatish Balay #include "tao-private/taosolver_impl.h"
4*a7e14dcfSSatish Balay 
5*a7e14dcfSSatish Balay /*
6*a7e14dcfSSatish Balay  Context for Interior-Point Method
7*a7e14dcfSSatish Balay */
8*a7e14dcfSSatish Balay 
9*a7e14dcfSSatish Balay typedef struct {
10*a7e14dcfSSatish Balay   PetscInt mi,me,n,nxb,nib,nb,nslack;
11*a7e14dcfSSatish Balay   PetscInt nuser_inequalities;
12*a7e14dcfSSatish Balay   PetscInt nxlb,nxub,niub,nilb;
13*a7e14dcfSSatish Balay   PetscScalar sig,mu,taumin,dec;
14*a7e14dcfSSatish Balay   PetscScalar muaff;
15*a7e14dcfSSatish Balay   TaoLineSearch lag_ls;
16*a7e14dcfSSatish Balay   Vec work, rhs_x,save_x;
17*a7e14dcfSSatish Balay   Vec lamdai, dlamdai, rhs_lamdai, save_lamdai;
18*a7e14dcfSSatish Balay   Vec lamdae, dlamdae, rhs_lamdae, save_lamdae;
19*a7e14dcfSSatish Balay   Vec s,ds,rhs_s,save_s;
20*a7e14dcfSSatish Balay   Vec ci;
21*a7e14dcfSSatish Balay   Vec Zero_nb, One_nb,Inf_nb;
22*a7e14dcfSSatish Balay   PetscScalar kkt_f; /* d'*x + (1/2)*x'*H*x; */
23*a7e14dcfSSatish Balay   Vec rd;            /* H*x + d + Ae'*lamdae - Ai'*lamdai */
24*a7e14dcfSSatish Balay   Vec rpe; /* residual  Ae*x - be */
25*a7e14dcfSSatish Balay   Vec rpi; /*           Ai*x - yi - bi */
26*a7e14dcfSSatish Balay   Vec complementarity; /* yi.*lamdai */
27*a7e14dcfSSatish Balay   PetscScalar phi;
28*a7e14dcfSSatish Balay   MatStructure Hflag; /*flag for nonzero change in hessian */
29*a7e14dcfSSatish Balay   MatStructure Aiflag,Aeflag;
30*a7e14dcfSSatish Balay   Mat L; /* diag(lamdai) */
31*a7e14dcfSSatish Balay   Mat Y; /* diag(yi) */
32*a7e14dcfSSatish Balay   Mat Ai;  /* JacI (lb)
33*a7e14dcfSSatish Balay 	      -JacI (ub)
34*a7e14dcfSSatish Balay 	      I (xlb)
35*a7e14dcfSSatish Balay 	      -I (xub) */
36*a7e14dcfSSatish Balay   Mat K; /* [ H , 0,   Ae',-Ai'];
37*a7e14dcfSSatish Balay 	    [Ae , 0,   0  , 0];
38*a7e14dcfSSatish Balay             [Ai ,-Imi, 0 ,  0];
39*a7e14dcfSSatish Balay             [ 0 , L ,  0 ,  Y ];  */
40*a7e14dcfSSatish Balay 
41*a7e14dcfSSatish Balay   Vec bigrhs; /* rhs [x; lamdae; yi; lamdai] */
42*a7e14dcfSSatish Balay   Vec bigstep; /* [dx; dyi; dlamdae; dlamdai] */
43*a7e14dcfSSatish Balay   PetscBool monitorkkt;
44*a7e14dcfSSatish Balay   PetscScalar alpha1,alpha2;
45*a7e14dcfSSatish Balay   PetscScalar pushs,pushnu;
46*a7e14dcfSSatish Balay   IS isxl,isxu,isil,isiu;
47*a7e14dcfSSatish Balay   VecScatter ci_scat,xl_scat,xu_scat;
48*a7e14dcfSSatish Balay   VecScatter step1,step2,step3,step4;
49*a7e14dcfSSatish Balay   VecScatter rhs1,rhs2,rhs3,rhs4;
50*a7e14dcfSSatish Balay } TAO_IPM;
51*a7e14dcfSSatish Balay 
52*a7e14dcfSSatish Balay #endif /* ifndef __TAO_IPM_H */
53