Actual source code: ipm.h

petsc-3.12.5 2020-03-29
Report Typos and Errors
  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:   Mat L; /* diag(lamdai) */
 29:   Mat Y; /* diag(yi) */
 30:   Mat Ai;  /* JacI (lb)
 31:               -JacI (ub)
 32:               I (xlb)
 33:               -I (xub) */
 34:   Mat K; /* [ H , 0,   Ae',-Ai'];
 35:             [Ae , 0,   0  , 0];
 36:             [Ai ,-Imi, 0 ,  0];
 37:             [ 0 , L ,  0 ,  Y ];  */

 39:   Vec bigrhs; /* rhs [x; lamdae; yi; lamdai] */
 40:   Vec bigstep; /* [dx; dyi; dlamdae; dlamdai] */
 41:   PetscBool monitorkkt;
 42:   PetscScalar alpha1,alpha2;
 43:   PetscScalar pushs,pushnu;
 44:   IS isxl,isxu,isil,isiu;
 45:   VecScatter ci_scat,xl_scat,xu_scat;
 46:   VecScatter step1,step2,step3,step4;
 47:   VecScatter rhs1,rhs2,rhs3,rhs4;
 48: } TAO_IPM;

 50: #endif /* ifndef __TAO_IPM_H */