added method ENgetaveragepatternvalue. modified ENgetbasedemand and ENgetdemandpattern to use pattern index starting with 1, consistent with other API functions.
This commit is contained in:
@@ -212,6 +212,7 @@ extern "C" {
|
|||||||
int DLLEXPORT ENgetpatternid(int, char *);
|
int DLLEXPORT ENgetpatternid(int, char *);
|
||||||
int DLLEXPORT ENgetpatternlen(int, int *);
|
int DLLEXPORT ENgetpatternlen(int, int *);
|
||||||
int DLLEXPORT ENgetpatternvalue(int, int, float *);
|
int DLLEXPORT ENgetpatternvalue(int, int, float *);
|
||||||
|
int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value);
|
||||||
int DLLEXPORT ENgetqualtype(int *, int *);
|
int DLLEXPORT ENgetqualtype(int *, int *);
|
||||||
int DLLEXPORT ENgeterror(int, char *, int);
|
int DLLEXPORT ENgeterror(int, char *, int);
|
||||||
|
|
||||||
|
|||||||
41
src/epanet.c
41
src/epanet.c
@@ -3255,20 +3255,25 @@ int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands)
|
|||||||
}
|
}
|
||||||
int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE *baseDemand)
|
int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE *baseDemand)
|
||||||
{
|
{
|
||||||
Pdemand d;
|
Pdemand d;
|
||||||
int n=0;
|
int n=1;
|
||||||
/* Check for valid arguments */
|
/* Check for valid arguments */
|
||||||
if (!Openflag) return(102);
|
if (!Openflag) return(102);
|
||||||
if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203);
|
if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203);
|
||||||
|
if (nodeIndex <= Njuncs) {
|
||||||
for(d=Node[nodeIndex].D; n<demandIdx && d != NULL; d=d->next) n++;
|
for(d=Node[nodeIndex].D; n<demandIdx && d != NULL; d=d->next) n++;
|
||||||
if(n!=demandIdx) return(253);
|
if(n!=demandIdx) return(253);
|
||||||
*baseDemand=(EN_API_FLOAT_TYPE)(d->Base*Ucf[FLOW]);
|
*baseDemand=(EN_API_FLOAT_TYPE)(d->Base*Ucf[FLOW]);
|
||||||
return 0;
|
}
|
||||||
|
else {
|
||||||
|
*baseDemand=(EN_API_FLOAT_TYPE)(0.0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
||||||
{
|
{
|
||||||
Pdemand d;
|
Pdemand d;
|
||||||
int n=0;
|
int n=1;
|
||||||
/* Check for valid arguments */
|
/* Check for valid arguments */
|
||||||
if (!Openflag) return(102);
|
if (!Openflag) return(102);
|
||||||
if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203);
|
if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203);
|
||||||
@@ -3278,5 +3283,27 @@ int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value)
|
||||||
|
/*----------------------------------------------------------------
|
||||||
|
** Input: index = index of time pattern
|
||||||
|
** period = pattern time period
|
||||||
|
** Output: *value = pattern multiplier
|
||||||
|
** Returns: error code
|
||||||
|
** Purpose: retrieves multiplier for a specific time period
|
||||||
|
** and pattern
|
||||||
|
**----------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
{ *value = 0.0;
|
||||||
|
if (!Openflag) return(102);
|
||||||
|
if (index < 1 || index > Npats) return(205);
|
||||||
|
//if (period < 1 || period > Pattern[index].Length) return(251);
|
||||||
|
for (int i=0; i<Pattern[index].Length; i++) {
|
||||||
|
*value+=Pattern[index].F[i];
|
||||||
|
}
|
||||||
|
*value/=(EN_API_FLOAT_TYPE)Pattern[index].Length;
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************** END OF EPANET.C ***************************/
|
/*************************** END OF EPANET.C ***************************/
|
||||||
|
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ extern "C" {
|
|||||||
int DLLEXPORT ENgetpatternid(int, char *);
|
int DLLEXPORT ENgetpatternid(int, char *);
|
||||||
int DLLEXPORT ENgetpatternlen(int, int *);
|
int DLLEXPORT ENgetpatternlen(int, int *);
|
||||||
int DLLEXPORT ENgetpatternvalue(int, int, EN_API_FLOAT_TYPE *);
|
int DLLEXPORT ENgetpatternvalue(int, int, EN_API_FLOAT_TYPE *);
|
||||||
|
int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value);
|
||||||
int DLLEXPORT ENgetqualtype(int *, int *);
|
int DLLEXPORT ENgetqualtype(int *, int *);
|
||||||
int DLLEXPORT ENgeterror(int, char *, int);
|
int DLLEXPORT ENgeterror(int, char *, int);
|
||||||
int DLLEXPORT ENgetstatistic(int code, int* value);
|
int DLLEXPORT ENgetstatistic(int code, int* value);
|
||||||
|
|||||||
Reference in New Issue
Block a user