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