xref: /petsc/src/tao/constrained/impls/ipm/ipm.h (revision a8d3b578d34eb8d5be1b3eaad4a98fb37a558ece)
1a7e14dcfSSatish Balay #ifndef __TAO_IPM_H
2a7e14dcfSSatish Balay #define __TAO_IPM_H
3af0996ceSBarry 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;
17*a8d3b578SPierre Jolivet   Vec           lambdai, dlambdai, rhs_lambdai, save_lambdai;
18*a8d3b578SPierre Jolivet   Vec           lambdae, dlambdae, rhs_lambdae, save_lambdae;
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; */
23*a8d3b578SPierre Jolivet   Vec           rd;              /* H*x + d + Ae'*lambdae - Ai'*lambdai */
24a7e14dcfSSatish Balay   Vec           rpe;             /* residual  Ae*x - be */
25a7e14dcfSSatish Balay   Vec           rpi;             /*           Ai*x - yi - bi */
26*a8d3b578SPierre Jolivet   Vec           complementarity; /* yi.*lambdai */
27a7e14dcfSSatish Balay   PetscScalar   phi;
28*a8d3b578SPierre Jolivet   Mat           L;  /* diag(lambdai) */
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 
39*a8d3b578SPierre Jolivet   Vec         bigrhs;  /* rhs [x; lambdae; yi; lambdai] */
40*a8d3b578SPierre Jolivet   Vec         bigstep; /* [dx; dyi; dlambdae; dlambdai] */
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