PIPS-NLP
dcopflow.hpp
Go to the documentation of this file.
1 /* PIPS-NLP *
2  * Authors: Nai-Yuan Chiang *
3  * (C) 2015 Argonne National Laboratory */
4 
5 #ifndef DCOPFLOW_H
6 #define DCOPFLOW_H
7 
8 #include "ps.h"
9 
10 typedef struct _p_OPFLOW *OPFLOW;
11 
12 
13 
14 class DCOPFLOW{
15 public:
16  const DCPS *ps; /* Power system context */
17 
18  double obj; /* Objective function */
19 
20  double *gradobj; /* Gradient of the objective function */
21 
22  double *Xl; /* Lower bound on solution */
23  double *Xu; /* Upper bound on solution */
24 
25  double *Gl; /* Lower bound on G */
26  double *Gu; /* Upper bound on G */
27 
28 
29  int Nvar; /* Number of variables */
30 
31  int Nconeq; /* Number of equality constraints */
32  int Nconineq; /* Number of inequality constraints */
33  int Ncon; /* Total number of constraints (equality + inequality) */
34 
35  int n; /* Number of variables */
36  int m; /* Number of constraints */
37  int nnz_jac_g; /* Number of nonzeros in the jacobian of the constraints */
38 
39  int refBusID; /* reference bus id*/
40 
41 
42  /* Lagrange multipliers */
43  double *lambda_g;
44  double *lambda_xl;
45  double *lambda_xu;
46 
47 
48  bool setupcalled; /* OPFLOWSetUp called? */
49  bool setupcalled_part; /* OPFLOWSetUp_part called? */
50  bool setupcalled_aggregation; /* SetUp_Aggregation called? */
51 
52 
53  int Nvar_1st;
55  int Ncon_1st;
58 
59  int *Nvar_2nd;
60  int *Ncon_2nd;
61  int *Nconeq_2nd;
63 
64  int nnz_jac_g_1st; /* Number of nonzeros in the jacobian of the constraints */
65  int *nnz_jac_g_2nd; /* Number of nonzeros in the jacobian of the constraints */
66  int *nnz_jac_g_Link; /* Number of nonzeros in the jacobian of the constraints */
67 
68 
69 
70 
72 
73 
76 
77 
78  int Nparts;
79 
81  int **dummyBusVarID; /* the index of dummy phase angle in the local var vector */
84 
86 
87 
90 
91  int nnz_jac_Aggregation; /* Number of nonzeros in the jacobian of the aggregation matrix */
92 
93 
94  DCOPFLOW(const DCPS* ps_);
95  ~DCOPFLOW();
96 
97 
98  virtual void DCOPFLOWSetUp();
99  virtual void SetVariableandConstraintBounds();
100  virtual void ObjGradient_Lin(double *obj_coef);
101  virtual void ObjGradient_Quad(int *irow, int *jcol, double *obj_quad);
102 
103  virtual int GetJacNNZ();
104  virtual void SetJacLocations(int *row, int *col);
105  virtual void SetJacValues(double *values);
106 
107 
108  virtual void DCOPFLOWSetUp_Partition();
109  virtual void VarAndConBounds_1st_Partition(double *xl,double *xu,double *gl,double *gu);
110  virtual void VarAndConBounds_2nd_Partition(const int scen, double *xl,double *xu,double *gl,double *gu);
111  virtual void ObjGradient_Lin_1st_Partition(double *obj_coef);
112  virtual void ObjGradient_Lin_2nd_Partition(const int scen, double *obj_coef);
113 
114 
115  virtual int GetHesNNZ_1st_Partition(){return 0;};
116  virtual void ObjGradient_Quad_1st_Partition(int *irow, int *jcol, double *obj_quad);
117  virtual int GetHesNNZ_2nd_Partition(const int scen);
118  virtual void ObjGradient_Quad_2nd_Partition(const int scen,int *irow, int *jcol, double *obj_quad);
119 
120  virtual int GetJacNNZ_1st_Partition();
121  virtual int GetJacNNZ_2nd_Partition(const int scen);
122  virtual int GetJacNNZ_Link_Partition(const int scen);
123 
124  virtual void GetJac_1st_Partition(int *row, int *col, double *ele);
125  virtual void GetJac_2nd_Link_Partition( const int scen, int *row, int *col, double *ele,
126  int *row_link, int *col_link, double *ele_link);
127 
128  virtual void SetUp_Aggregation();
129  virtual void VarAndConBounds_Aggregation(double *xl,double *xu,double *gl,double *gu);
130  virtual void EqConBounds_Aggregation(double *b);
131  virtual void objLinGrad_Aggregation(double *obj_coef);
132  virtual int GetAggregationJacNNZ();
133  virtual void GetPrecondMatrixJac_Aggregation(int *row, int *col, double *ele);
134  virtual int GetAggregationHesNNZ();
135  virtual void GetPrecondMatrixHes_Aggregation(int *row, int *col, double *ele);
136 
137 };
138 
139 
140 
141 #endif
142 
virtual void ObjGradient_Lin_2nd_Partition(const int scen, double *obj_coef)
Definition: dcopflow.cpp:745
int Ncon_1st
Definition: dcopflow.hpp:55
int Nconeq
Definition: dcopflow.hpp:31
virtual void ObjGradient_Lin_1st_Partition(double *obj_coef)
Definition: dcopflow.cpp:734
int Nconeq_1st
Definition: dcopflow.hpp:56
virtual int GetJacNNZ_2nd_Partition(const int scen)
Definition: dcopflow.cpp:857
double * lambda_xl
Definition: dcopflow.hpp:44
int * Nconeq_2nd
Definition: dcopflow.hpp:61
virtual void VarAndConBounds_Aggregation(double *xl, double *xu, double *gl, double *gu)
Definition: dcopflow.cpp:1295
virtual void VarAndConBounds_1st_Partition(double *xl, double *xu, double *gl, double *gu)
Definition: dcopflow.cpp:632
bool setupcalled_part
Definition: dcopflow.hpp:49
int Nparts
Definition: dcopflow.hpp:78
int refBusID
Definition: dcopflow.hpp:39
virtual void ObjGradient_Quad_1st_Partition(int *irow, int *jcol, double *obj_quad)
Definition: dcopflow.cpp:772
double * Gl
Definition: dcopflow.hpp:25
virtual int GetJacNNZ()
Definition: dcopflow.cpp:238
int * busMap_AllTo1st
Definition: dcopflow.hpp:71
int * Ncon_2nd
Definition: dcopflow.hpp:60
int ** dummyBusVarID
Definition: dcopflow.hpp:81
Definition: dcopflow.hpp:14
virtual void SetJacValues(double *values)
Definition: dcopflow.cpp:385
int * nnz_jac_g_Link
Definition: dcopflow.hpp:66
const DCPS * ps
Definition: dcopflow.hpp:16
virtual void DCOPFLOWSetUp_Partition()
Definition: dcopflow.cpp:441
int * nnz_jac_g_2nd
Definition: dcopflow.hpp:65
struct _p_OPFLOW * OPFLOW
Definition: dcopflow.hpp:10
virtual int GetHesNNZ_2nd_Partition(const int scen)
Definition: dcopflow.cpp:778
int * Nconineq_2nd
Definition: dcopflow.hpp:62
int Ncon
Definition: dcopflow.hpp:33
int Nslack_1st
Definition: dcopflow.hpp:54
virtual void VarAndConBounds_2nd_Partition(const int scen, double *xl, double *xu, double *gl, double *gu)
Definition: dcopflow.cpp:673
double * Gu
Definition: dcopflow.hpp:26
int Nconineq_1st
Definition: dcopflow.hpp:57
int nnz_jac_g_1st
Definition: dcopflow.hpp:64
virtual void ObjGradient_Quad_2nd_Partition(const int scen, int *irow, int *jcol, double *obj_quad)
Definition: dcopflow.cpp:795
double * lambda_g
Definition: dcopflow.hpp:43
int m
Definition: dcopflow.hpp:36
virtual void SetJacLocations(int *row, int *col)
Definition: dcopflow.cpp:292
virtual void ObjGradient_Quad(int *irow, int *jcol, double *obj_quad)
Definition: dcopflow.cpp:203
int Nvar_1st
Definition: dcopflow.hpp:53
bool setupcalled_aggregation
Definition: dcopflow.hpp:50
double * Xl
Definition: dcopflow.hpp:22
int * numDummyCon
Definition: dcopflow.hpp:75
int ** locConMap_Agg
Definition: dcopflow.hpp:88
virtual void ObjGradient_Lin(double *obj_coef)
Definition: dcopflow.cpp:175
int * numDummyVar
Definition: dcopflow.hpp:74
virtual void GetJac_2nd_Link_Partition(const int scen, int *row, int *col, double *ele, int *row_link, int *col_link, double *ele_link)
Definition: dcopflow.cpp:984
double * gradobj
Definition: dcopflow.hpp:20
int ** locVarMap_Agg
Definition: dcopflow.hpp:80
DCOPFLOW(const DCPS *ps_)
Definition: dcopflow.cpp:9
int Nconineq
Definition: dcopflow.hpp:32
virtual void GetJac_1st_Partition(int *row, int *col, double *ele)
Definition: dcopflow.cpp:929
int ncon_aggregation
Definition: dcopflow.hpp:83
bool setupcalled
Definition: dcopflow.hpp:48
virtual int GetJacNNZ_Link_Partition(const int scen)
Definition: dcopflow.cpp:906
double obj
Definition: dcopflow.hpp:18
int * firstVarMap_Agg
Definition: dcopflow.hpp:85
int nnz_jac_Aggregation
Definition: dcopflow.hpp:91
virtual int GetHesNNZ_1st_Partition()
Definition: dcopflow.hpp:115
virtual void objLinGrad_Aggregation(double *obj_coef)
Definition: dcopflow.cpp:1450
virtual int GetJacNNZ_1st_Partition()
Definition: dcopflow.cpp:825
double * lambda_xu
Definition: dcopflow.hpp:45
virtual void SetVariableandConstraintBounds()
Definition: dcopflow.cpp:128
virtual void EqConBounds_Aggregation(double *b)
Definition: dcopflow.cpp:1388
int * firstConMap_Agg
Definition: dcopflow.hpp:89
int nvar_aggregation
Definition: dcopflow.hpp:82
int Nvar
Definition: dcopflow.hpp:29
~DCOPFLOW()
Definition: dcopflow.cpp:27
int * Nvar_2nd
Definition: dcopflow.hpp:59
virtual void GetPrecondMatrixHes_Aggregation(int *row, int *col, double *ele)
Definition: dcopflow.cpp:1702
virtual int GetAggregationJacNNZ()
Definition: dcopflow.cpp:1492
virtual void DCOPFLOWSetUp()
Definition: dcopflow.cpp:80
int nnz_jac_g
Definition: dcopflow.hpp:37
int n
Definition: dcopflow.hpp:35
virtual void SetUp_Aggregation()
Definition: dcopflow.cpp:1162
virtual int GetAggregationHesNNZ()
Definition: dcopflow.cpp:1693
Definition: ps.h:115
virtual void GetPrecondMatrixJac_Aggregation(int *row, int *col, double *ele)
Definition: dcopflow.cpp:1539
double * Xu
Definition: dcopflow.hpp:23