ENsetbasedemand() and ENsetnodevalue() - added ENsetbasedemand to allow changes to the base demands for each demand category. Changed behavior of ENsetnodevalue when used with EN_TANKLEVEL to also set the volume in addition to the initial volume (similar to how it sets the initial head and head. Without that, we can't reset the tank head and volume from RTX.
This commit is contained in:
@@ -252,6 +252,7 @@ extern "C" {
|
|||||||
int DLLEXPORT ENsetoption(int, EN_API_FLOAT_TYPE);
|
int DLLEXPORT ENsetoption(int, EN_API_FLOAT_TYPE);
|
||||||
int DLLEXPORT ENsetstatusreport(int);
|
int DLLEXPORT ENsetstatusreport(int);
|
||||||
int DLLEXPORT ENsetqualtype(int qualcode, char *chemname, char *chemunits, char *tracenode);
|
int DLLEXPORT ENsetqualtype(int qualcode, char *chemname, char *chemunits, char *tracenode);
|
||||||
|
int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
|||||||
18
src/epanet.c
18
src/epanet.c
@@ -2000,6 +2000,8 @@ int DLLEXPORT ENsetnodevalue(int index, int code, EN_API_FLOAT_TYPE v)
|
|||||||
|| value < Tank[j].Hmin) return(202);
|
|| value < Tank[j].Hmin) return(202);
|
||||||
Tank[j].H0 = value;
|
Tank[j].H0 = value;
|
||||||
Tank[j].V0 = tankvolume(j, Tank[j].H0);
|
Tank[j].V0 = tankvolume(j, Tank[j].H0);
|
||||||
|
// Resetting Volume in addition to initial volume
|
||||||
|
Tank[j].V = Tank[j].V0;
|
||||||
H[index] = Tank[j].H0;
|
H[index] = Tank[j].H0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3285,6 +3287,22 @@ int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE *
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand)
|
||||||
|
{
|
||||||
|
Pdemand d;
|
||||||
|
int n=1;
|
||||||
|
/* Check for valid arguments */
|
||||||
|
if (!Openflag) return(102);
|
||||||
|
if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203);
|
||||||
|
if (nodeIndex <= Njuncs) {
|
||||||
|
for(d=Node[nodeIndex].D; n<demandIdx && d != NULL; d=d->next) n++;
|
||||||
|
if(n!=demandIdx) return(253);
|
||||||
|
d->Base = baseDemand/Ucf[FLOW];
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
||||||
{
|
{
|
||||||
Pdemand d;
|
Pdemand d;
|
||||||
|
|||||||
Reference in New Issue
Block a user