diff --git a/include/epanet2.h b/include/epanet2.h index d1d37f1..ff05d27 100755 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -212,6 +212,7 @@ extern "C" { int DLLEXPORT ENgetpatternid(int, char *); int DLLEXPORT ENgetpatternlen(int, int *); int DLLEXPORT ENgetpatternvalue(int, int, float *); + int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value); int DLLEXPORT ENgetqualtype(int *, int *); int DLLEXPORT ENgeterror(int, char *, int); diff --git a/src/epanet.c b/src/epanet.c index 5b7edb1..4c12d43 100755 --- a/src/epanet.c +++ b/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) { - Pdemand d; - int n=0; - /* Check for valid arguments */ - if (!Openflag) return(102); - if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203); + 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; nnext) n++; if(n!=demandIdx) return(253); *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) { Pdemand d; - int n=0; + int n=1; /* Check for valid arguments */ if (!Openflag) return(102); if (nodeIndex <= 0 || nodeIndex > Nnodes) return(203); @@ -3278,5 +3283,27 @@ int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx) 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