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