Actual source code: ipm.h
petsc-dev 2014-02-02
1: #ifndef __TAO_IPM_H
3: #include <petsc-private/taoimpl.h>
5: /*
6: Context for Interior-Point Method
7: */
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 ]; */
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;
52: #endif /* ifndef __TAO_IPM_H */