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