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