Update epanet.c

Updating EN_getnodevalue() and EN_setnodevalue() to process the primary demand located at the head of the demand list
This commit is contained in:
Michael Tryby
2019-04-23 14:42:37 -04:00
parent 5d3eeb91d9
commit feee7f2c80

View File

@@ -2107,16 +2107,12 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val
case EN_PATTERN: case EN_PATTERN:
v = 0.0; v = 0.0;
// NOTE: primary demand category is last on demand list // NOTE: primary demand category is first on demand list
if (index <= nJuncs) if (index <= nJuncs)
{ {
list_t *demand = Node[index].D; list_t *demand = Node[index].D;
if (demand) if (demand)
v = get_pattern_index(tail_list(demand)); v = get_pattern_index(head_list(demand, false));
//for (demand = Node[index].D; demand != NULL; demand = demand->next)
//{
// v = (double)(demand->Pat);
//}
} }
else v = (double)(Tank[index - nJuncs].Pat); else v = (double)(Tank[index - nJuncs].Pat);
break; break;
@@ -2294,24 +2290,24 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu
break; break;
case EN_BASEDEMAND: case EN_BASEDEMAND:
// NOTE: primary demand category is last on demand list // NOTE: primary demand category is first on demand list
if (index <= nJuncs) if (index <= nJuncs)
{ {
list_t *demand = Node[index].D; list_t *demand = Node[index].D;
if (demand) if (demand)
set_base_demand(tail_list(demand), value / Ucf[FLOW]); set_base_demand(head_list(demand, false), value / Ucf[FLOW]);
} }
break; break;
case EN_PATTERN: case EN_PATTERN:
// NOTE: primary demand category is last on demand list // NOTE: primary demand category is first on demand list
j = ROUND(value); j = ROUND(value);
if (j < 0 || j > nPats) return 205; if (j < 0 || j > nPats) return 205;
if (index <= nJuncs) if (index <= nJuncs)
{ {
list_t *demand = Node[index].D; list_t *demand = Node[index].D;
if (demand) if (demand)
set_pattern_index(tail_list(demand), j); set_pattern_index(head_list(demand, false), j);
} }
else Tank[index - nJuncs].Pat = j; else Tank[index - nJuncs].Pat = j;
break; break;