1 |
#ifndef ASCXX_INCIDENCEMATRIX_H |
2 |
#define ASCXX_INCIDENCEMATRIX_H |
3 |
|
4 |
#include <vector> |
5 |
|
6 |
#include "simulation.h" |
7 |
|
8 |
extern "C"{ |
9 |
#include <solver/incidence.h> |
10 |
} |
11 |
|
12 |
typedef enum{ |
13 |
IM_NULL=0, IM_ACTIVE_FIXED, IM_ACTIVE_FREE, IM_DORMANT_FIXED, IM_DORMANT_FREE |
14 |
} IncidencePointType; |
15 |
|
16 |
class IncidencePoint{ |
17 |
public: |
18 |
IncidencePoint(const int&row, const int&col, const IncidencePointType &type); |
19 |
IncidencePoint(const IncidencePoint &); |
20 |
IncidencePoint(); |
21 |
|
22 |
int row; |
23 |
int col; |
24 |
IncidencePointType type; |
25 |
}; |
26 |
|
27 |
/** |
28 |
Special class for plotting incidence matrices using matplotlib |
29 |
|
30 |
GOAL: facilitate use of pylab 'spy2' function, but hopefully add extra |
31 |
stuff for viewing blocks and fixed/free incidences, solved/active/unsolved |
32 |
variables, etc. |
33 |
|
34 |
This is going to be like a C++ified copy of MtxProc.c |
35 |
*/ |
36 |
class IncidenceMatrix{ |
37 |
|
38 |
private: |
39 |
Simulation ∼ |
40 |
slv_system_structure *sys; |
41 |
|
42 |
std::vector<IncidencePoint> data; |
43 |
incidence_vars_t i; |
44 |
bool is_built; |
45 |
|
46 |
void buildPlotData(); |
47 |
public: |
48 |
explicit IncidenceMatrix(Simulation &sim); |
49 |
~IncidenceMatrix(); |
50 |
|
51 |
const std::vector<IncidencePoint> &getIncidenceData(); |
52 |
}; |
53 |
|
54 |
#endif // ASCXX_INCIDENCEMATRIX_H |