xref: /petsc/src/tao/pde_constrained/impls/lcl/lcl.h (revision bebe2cf65d55febe21a5af8db2bd2e168caaa2e7)
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