Actual source code: lcl.h
petsc-3.13.6 2020-09-29
1: #ifndef __TAO_LCL_H
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
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 */
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;
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 */
37: Vec DU; /* State step */
38: Vec DV; /* Design step */
39: Vec DL; /* Multipliers step */
41: Vec GU; /* Gradient wrt U */
42: Vec GV; /* Gradient wrt V */
43: Vec GU0; /* Gradient wrt U */
44: Vec GV0; /* Gradient wrt V */
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;
56: PetscInt m; /* number of constraints */
57: PetscInt n; /* number of variables */
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;
65: Vec lamda; /* Lagrange Multiplier */
66: Vec lamda0; /* Lagrange Multiplier */
67: Vec lamda1; /* Lagrange Multiplier */
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];
83: } TAO_LCL;
86: #endif