Add option to get link state
Add EN_STATE to ENgetlinkvalue. Related to #218
This commit is contained in:
@@ -56,6 +56,7 @@ Public Const EN_EFFICIENCY = 16
|
|||||||
Public Const EN_HEADCURVE = 17
|
Public Const EN_HEADCURVE = 17
|
||||||
Public Const EN_EFFICIENCYCURVE = 18
|
Public Const EN_EFFICIENCYCURVE = 18
|
||||||
Public Const EN_PRICEPATTERN = 19
|
Public Const EN_PRICEPATTERN = 19
|
||||||
|
Public Const EN_STATE = 20
|
||||||
|
|
||||||
Public Const EN_DURATION = 0 ' Time parameters
|
Public Const EN_DURATION = 0 ' Time parameters
|
||||||
Public Const EN_HYDSTEP = 1
|
Public Const EN_HYDSTEP = 1
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ typedef enum {
|
|||||||
EN_EFFICIENCY = 16,
|
EN_EFFICIENCY = 16,
|
||||||
EN_HEADCURVE = 17,
|
EN_HEADCURVE = 17,
|
||||||
EN_EFFICIENCYCURVE = 18,
|
EN_EFFICIENCYCURVE = 18,
|
||||||
EN_PRICEPATTERN = 19
|
EN_PRICEPATTERN = 19,
|
||||||
|
EN_STATE = 20
|
||||||
} EN_LinkProperty;
|
} EN_LinkProperty;
|
||||||
|
|
||||||
/// Time parameter codes
|
/// Time parameter codes
|
||||||
|
|||||||
17
src/epanet.c
17
src/epanet.c
@@ -1994,6 +1994,7 @@ int DLLEXPORT EN_getlinknodes(EN_Project *p, int index, int *node1,
|
|||||||
int DLLEXPORT EN_getlinkvalue(EN_Project *p, int index, EN_LinkProperty code, EN_API_FLOAT_TYPE *value) {
|
int DLLEXPORT EN_getlinkvalue(EN_Project *p, int index, EN_LinkProperty code, EN_API_FLOAT_TYPE *value) {
|
||||||
double a, h, q, v = 0.0;
|
double a, h, q, v = 0.0;
|
||||||
int returnValue = 0;
|
int returnValue = 0;
|
||||||
|
int pmp;
|
||||||
|
|
||||||
EN_Network *net = &p->network;
|
EN_Network *net = &p->network;
|
||||||
hydraulics_t *hyd = &p->hydraulics;
|
hydraulics_t *hyd = &p->hydraulics;
|
||||||
@@ -2007,8 +2008,6 @@ int DLLEXPORT EN_getlinkvalue(EN_Project *p, int index, EN_LinkProperty code, EN
|
|||||||
double *LinkFlows = hyd->LinkFlows;
|
double *LinkFlows = hyd->LinkFlows;
|
||||||
double *LinkSetting = hyd->LinkSetting;
|
double *LinkSetting = hyd->LinkSetting;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Check for valid arguments */
|
/* Check for valid arguments */
|
||||||
*value = 0.0;
|
*value = 0.0;
|
||||||
if (!p->Openflag)
|
if (!p->Openflag)
|
||||||
@@ -2125,6 +2124,20 @@ int DLLEXPORT EN_getlinkvalue(EN_Project *p, int index, EN_LinkProperty code, EN
|
|||||||
v = 1.0;
|
v = 1.0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EN_STATE:
|
||||||
|
v = hyd->LinkStatus[index];
|
||||||
|
|
||||||
|
if (Link[index].Type == EN_PUMP) {
|
||||||
|
pmp = findpump(net, index);
|
||||||
|
if (hyd->LinkStatus[index] >= OPEN) {
|
||||||
|
if (hyd->LinkFlows[index] > hyd->LinkSetting[index] * Pump[pmp].Qmax)
|
||||||
|
v = XFLOW;
|
||||||
|
if (hyd->LinkFlows[index] < 0.0)
|
||||||
|
v = XHEAD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case EN_SETTING:
|
case EN_SETTING:
|
||||||
if (Link[index].Type == EN_PIPE || Link[index].Type == EN_CVPIPE) {
|
if (Link[index].Type == EN_PIPE || Link[index].Type == EN_CVPIPE) {
|
||||||
return (ENgetlinkvalue(index, EN_ROUGHNESS, value));
|
return (ENgetlinkvalue(index, EN_ROUGHNESS, value));
|
||||||
|
|||||||
Reference in New Issue
Block a user