1*a7e14dcfSSatish Balay #ifndef __TAO_LCL_H 2*a7e14dcfSSatish Balay #define __TAO_LCL_H 3*a7e14dcfSSatish Balay 4*a7e14dcfSSatish Balay #include "tao-private/taosolver_impl.h" 5*a7e14dcfSSatish Balay #include "petscis.h" 6*a7e14dcfSSatish Balay #define LCL_FORWARD1 0 7*a7e14dcfSSatish Balay #define LCL_ADJOINT1 1 8*a7e14dcfSSatish Balay #define LCL_FORWARD2 2 9*a7e14dcfSSatish Balay #define LCL_ADJOINT2 3 10*a7e14dcfSSatish Balay 11*a7e14dcfSSatish Balay typedef struct { 12*a7e14dcfSSatish Balay Mat M; /* Quasi-newton hessian matrix */ 13*a7e14dcfSSatish Balay Vec dbar; /* Reduced gradient */ 14*a7e14dcfSSatish Balay Vec GL; 15*a7e14dcfSSatish Balay Vec GAugL; 16*a7e14dcfSSatish Balay Vec GL_U; /* Gradient of lagrangian */ 17*a7e14dcfSSatish Balay Vec GL_V; /* Gradient of lagrangian */ 18*a7e14dcfSSatish Balay Vec GAugL_U; /* Augmented lagrangian gradient */ 19*a7e14dcfSSatish Balay Vec GAugL_V; /* Augmented lagrangian gradient */ 20*a7e14dcfSSatish Balay Vec GL_U0; /* Gradient of lagrangian */ 21*a7e14dcfSSatish Balay Vec GL_V0; /* Gradient of lagrangian */ 22*a7e14dcfSSatish Balay Vec GAugL_U0; /* Augmented lagrangian gradient */ 23*a7e14dcfSSatish Balay Vec GAugL_V0; /* Augmented lagrangian gradient */ 24*a7e14dcfSSatish Balay 25*a7e14dcfSSatish Balay IS UIS; /* Index set to state */ 26*a7e14dcfSSatish Balay IS UID; /* Index set to design */ 27*a7e14dcfSSatish Balay IS UIM; /* Full index set to all constraints */ 28*a7e14dcfSSatish Balay VecScatter state_scatter; 29*a7e14dcfSSatish Balay VecScatter design_scatter; 30*a7e14dcfSSatish Balay 31*a7e14dcfSSatish Balay Vec U; /* State variable */ 32*a7e14dcfSSatish Balay Vec V; /* Design variable */ 33*a7e14dcfSSatish Balay Vec U0; /* State variable */ 34*a7e14dcfSSatish Balay Vec V0; /* Design variable */ 35*a7e14dcfSSatish Balay Vec V1; /* Design variable */ 36*a7e14dcfSSatish Balay 37*a7e14dcfSSatish Balay Vec DU; /* State step */ 38*a7e14dcfSSatish Balay Vec DV; /* Design step */ 39*a7e14dcfSSatish Balay Vec DL; /* Multipliers step */ 40*a7e14dcfSSatish Balay 41*a7e14dcfSSatish Balay Vec GU; /* Gradient wrt U */ 42*a7e14dcfSSatish Balay Vec GV; /* Gradient wrt V */ 43*a7e14dcfSSatish Balay Vec GU0; /* Gradient wrt U */ 44*a7e14dcfSSatish Balay Vec GV0; /* Gradient wrt V */ 45*a7e14dcfSSatish Balay 46*a7e14dcfSSatish Balay Vec W; /* work vector */ 47*a7e14dcfSSatish Balay Vec X0; 48*a7e14dcfSSatish Balay Vec G0; 49*a7e14dcfSSatish Balay Vec WU; /* state work vector */ 50*a7e14dcfSSatish Balay Vec WV; /* design work vector */ 51*a7e14dcfSSatish Balay Vec r; 52*a7e14dcfSSatish Balay Vec s; 53*a7e14dcfSSatish Balay Vec g1,g2; 54*a7e14dcfSSatish Balay Vec con1; 55*a7e14dcfSSatish Balay 56*a7e14dcfSSatish Balay PetscInt m; /* number of constraints */ 57*a7e14dcfSSatish Balay PetscInt n; /* number of variables */ 58*a7e14dcfSSatish Balay 59*a7e14dcfSSatish Balay Mat jacobian_state0; /* Jacobian wrt U */ 60*a7e14dcfSSatish Balay Mat jacobian_state0_pre; /* preconditioning matrix wrt U */ 61*a7e14dcfSSatish Balay Mat jacobian_design0; /* Jacobian wrt V */ 62*a7e14dcfSSatish Balay Mat jacobian_state_inv0; /* Inverse of Jacobian wrt U */ 63*a7e14dcfSSatish Balay Mat R; 64*a7e14dcfSSatish Balay 65*a7e14dcfSSatish Balay Vec lamda; /* Lagrange Multiplier */ 66*a7e14dcfSSatish Balay Vec lamda0; /* Lagrange Multiplier */ 67*a7e14dcfSSatish Balay Vec lamda1; /* Lagrange Multiplier */ 68*a7e14dcfSSatish Balay 69*a7e14dcfSSatish Balay Vec WL; /* Work vector */ 70*a7e14dcfSSatish Balay PetscReal rho; /* Penalty parameter */ 71*a7e14dcfSSatish Balay PetscReal rho0; 72*a7e14dcfSSatish Balay PetscReal rhomax; 73*a7e14dcfSSatish Balay PetscReal eps1,eps2; 74*a7e14dcfSSatish Balay PetscReal aug,aug0,lgn,lgn0; 75*a7e14dcfSSatish Balay PetscInt subset_type; 76*a7e14dcfSSatish Balay PetscInt solve_type; 77*a7e14dcfSSatish Balay MatStructure statematflag,designmatflag; 78*a7e14dcfSSatish Balay PetscBool recompute_jacobian_flag; 79*a7e14dcfSSatish Balay PetscInt phase2_niter; 80*a7e14dcfSSatish Balay PetscBool verbose; 81*a7e14dcfSSatish Balay PetscReal tau[4]; 82*a7e14dcfSSatish Balay 83*a7e14dcfSSatish Balay 84*a7e14dcfSSatish Balay } TAO_LCL; 85*a7e14dcfSSatish Balay 86*a7e14dcfSSatish Balay 87*a7e14dcfSSatish Balay #endif 88