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