Reverted handling of default pattern
When creating demands, no pattern is marked with a zero. Then when data is adjusted it gets updated to default.
This commit is contained in:
23
src/input1.c
23
src/input1.c
@@ -332,19 +332,16 @@ void adjustdata(Project *pr)
|
|||||||
if (tank->Kb == MISSING) tank->Kb = qual->Kbulk;
|
if (tank->Kb == MISSING) tank->Kb = qual->Kbulk;
|
||||||
}
|
}
|
||||||
|
|
||||||
// It is expensive to iterate over every demand at every node.
|
// Use default pattern if none assigned to a demand
|
||||||
// cheaper to apply default pattern when creating the demand data.
|
parser->DefPat = findpattern(net, parser->DefPatID);
|
||||||
|
if (parser->DefPat > 0) {
|
||||||
// // Use default pattern if none assigned to a demand
|
for (i = 1; i <= net->Nnodes; i++) {
|
||||||
// parser->DefPat = findpattern(net, parser->DefPatID);
|
for (list_node_t *lnode = first_list((&net->Node[i])->D); done_list(lnode); lnode = next_list(lnode)) {
|
||||||
// if (parser->DefPat > 0) for (i = 1; i <= net->Nnodes; i++)
|
if (get_pattern_index(lnode) == 0)
|
||||||
// {
|
set_pattern_index(lnode, parser->DefPat);
|
||||||
// node = &net->Node[i];
|
}
|
||||||
// for (demand = node->D; demand != NULL; demand = demand->next)
|
}
|
||||||
// {
|
}
|
||||||
// if (demand->Pat == 0) demand->Pat = parser->DefPat;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Remove QUALITY as a reporting variable if no WQ analysis
|
// Remove QUALITY as a reporting variable if no WQ analysis
|
||||||
if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE;
|
if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE;
|
||||||
|
|||||||
38
src/input3.c
38
src/input3.c
@@ -124,8 +124,6 @@ int juncdata(Project *pr)
|
|||||||
|
|
||||||
// create demand data only if a demand has been specified
|
// create demand data only if a demand has been specified
|
||||||
if (y != 0.0) {
|
if (y != 0.0) {
|
||||||
// apply the default demand pattern and append the data
|
|
||||||
if (p == 0) p = findpattern(net, parser->DefPatID);
|
|
||||||
demand_list = create_demand_list(y, p, NULL);
|
demand_list = create_demand_list(y, p, NULL);
|
||||||
if (!demand_list) return 101;
|
if (!demand_list) return 101;
|
||||||
}
|
}
|
||||||
@@ -752,50 +750,18 @@ int demanddata(Project *pr)
|
|||||||
net->Node[j].D = demand_list;
|
net->Node[j].D = demand_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
// else delete the demand data in [JUNCTIONS] section
|
// else replace the demand data entered in [JUNCTIONS] section
|
||||||
else if (size_list(demand_list) == 1) {
|
else if (size_list(demand_list) == 1) {
|
||||||
list_node_t *lnode = head_list(demand_list, true);
|
list_node_t *lnode = head_list(demand_list, true);
|
||||||
delete_node(demand_list, lnode);
|
delete_node(demand_list, lnode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// apply the default demand pattern and append the data
|
// append the data to the list
|
||||||
if (p == 0) p = findpattern(net, parser->DefPatID);
|
|
||||||
demand_data = create_demand_data(y, p, parser->Comment);
|
demand_data = create_demand_data(y, p, parser->Comment);
|
||||||
if (demand_data == NULL) return 101;
|
if (demand_data == NULL) return 101;
|
||||||
|
|
||||||
append_list(demand_list, &demand_data);
|
append_list(demand_list, &demand_data);
|
||||||
|
|
||||||
|
|
||||||
// //if (hyd->NodeDemand[j] != MISSING)
|
|
||||||
// {
|
|
||||||
// // First category encountered will overwrite "dummy" demand category
|
|
||||||
// // with what is specified in this section
|
|
||||||
// demand->Base = y;
|
|
||||||
// demand->Pat = p;
|
|
||||||
// if (parser->Comment[0])
|
|
||||||
// {
|
|
||||||
// demand->Name = xstrcpy(&demand->Name, parser->Comment, MAXID);
|
|
||||||
// }
|
|
||||||
// hyd->NodeDemand[j] = MISSING; // marker - next iteration will append a new category.
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // Otherwise add new demand to junction
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// cur_demand = net->Node[j].D;
|
|
||||||
// while (cur_demand->next != NULL) cur_demand = cur_demand->next;
|
|
||||||
// demand = (struct Sdemand *)malloc(sizeof(struct Sdemand));
|
|
||||||
// if (demand == NULL) return 101;
|
|
||||||
// demand->Base = y;
|
|
||||||
// demand->Pat = p;
|
|
||||||
// demand->Name = NULL;
|
|
||||||
// if (parser->Comment[0])
|
|
||||||
// {
|
|
||||||
// demand->Name = xstrcpy(&demand->Name, parser->Comment, MAXID);
|
|
||||||
// }
|
|
||||||
// demand->next = NULL;
|
|
||||||
// cur_demand->next = demand;
|
|
||||||
// }
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -409,13 +409,7 @@ void freedata(Project *pr)
|
|||||||
list_t *demand = pr->network.Node[j].D;
|
list_t *demand = pr->network.Node[j].D;
|
||||||
if(demand)
|
if(demand)
|
||||||
delete_list(demand);
|
delete_list(demand);
|
||||||
/*while (demand != NULL)
|
|
||||||
{
|
|
||||||
nextdemand = demand->next;
|
|
||||||
free(demand->Name);
|
|
||||||
free(demand);
|
|
||||||
demand = nextdemand;
|
|
||||||
}*/
|
|
||||||
// Free memory used for WQ source data
|
// Free memory used for WQ source data
|
||||||
free(pr->network.Node[j].S);
|
free(pr->network.Node[j].S);
|
||||||
free(pr->network.Node[j].Comment);
|
free(pr->network.Node[j].Comment);
|
||||||
@@ -797,7 +791,7 @@ void adjustpattern(int *pat, int index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void _adjustpattern(list_node_t *lnode, int del_idx)
|
void adjust_demand_pattern(list_node_t *lnode, int del_idx)
|
||||||
{
|
{
|
||||||
int pat_idx = get_pattern_index(lnode);
|
int pat_idx = get_pattern_index(lnode);
|
||||||
|
|
||||||
@@ -825,7 +819,7 @@ void adjustpatterns(Network *network, int index)
|
|||||||
list_t *dlist = network->Node[j].D;
|
list_t *dlist = network->Node[j].D;
|
||||||
if (dlist) {
|
if (dlist) {
|
||||||
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
|
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
|
||||||
_adjustpattern(lnode, index);
|
adjust_demand_pattern(lnode, index);
|
||||||
}
|
}
|
||||||
// Adjust WQ source patterns
|
// Adjust WQ source patterns
|
||||||
source = network->Node[j].S;
|
source = network->Node[j].S;
|
||||||
|
|||||||
Reference in New Issue
Block a user