From 5d3eeb91d9af73ef5da5a21a3584b9287d458788 Mon Sep 17 00:00:00 2001 From: Michael Tryby Date: Tue, 23 Apr 2019 11:44:02 -0400 Subject: [PATCH] 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. --- src/input1.c | 25 +++++++++++-------------- src/input3.c | 38 ++------------------------------------ src/project.c | 14 ++++---------- 3 files changed, 17 insertions(+), 60 deletions(-) diff --git a/src/input1.c b/src/input1.c index aafa576..391fc69 100644 --- a/src/input1.c +++ b/src/input1.c @@ -331,20 +331,17 @@ void adjustdata(Project *pr) tank = &net->Tank[i]; if (tank->Kb == MISSING) tank->Kb = qual->Kbulk; } - - // It is expensive to iterate over every demand at every node. - // cheaper to apply default pattern when creating the demand data. - -// // Use default pattern if none assigned to a demand -// parser->DefPat = findpattern(net, parser->DefPatID); -// if (parser->DefPat > 0) for (i = 1; i <= net->Nnodes; i++) -// { -// node = &net->Node[i]; -// for (demand = node->D; demand != NULL; demand = demand->next) -// { -// if (demand->Pat == 0) demand->Pat = parser->DefPat; -// } -// } + + // Use default pattern if none assigned to a demand + parser->DefPat = findpattern(net, parser->DefPatID); + if (parser->DefPat > 0) { + for (i = 1; i <= net->Nnodes; i++) { + for (list_node_t *lnode = first_list((&net->Node[i])->D); done_list(lnode); lnode = next_list(lnode)) { + if (get_pattern_index(lnode) == 0) + set_pattern_index(lnode, parser->DefPat); + } + } + } // Remove QUALITY as a reporting variable if no WQ analysis if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE; diff --git a/src/input3.c b/src/input3.c index 9837bd4..7951cdf 100644 --- a/src/input3.c +++ b/src/input3.c @@ -124,8 +124,6 @@ int juncdata(Project *pr) // create demand data only if a demand has been specified 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); if (!demand_list) return 101; } @@ -752,50 +750,18 @@ int demanddata(Project *pr) 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) { list_node_t *lnode = head_list(demand_list, true); delete_node(demand_list, lnode); } - // apply the default demand pattern and append the data - if (p == 0) p = findpattern(net, parser->DefPatID); + // append the data to the list demand_data = create_demand_data(y, p, parser->Comment); if (demand_data == NULL) return 101; 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; } diff --git a/src/project.c b/src/project.c index 8e44be7..1df2911 100644 --- a/src/project.c +++ b/src/project.c @@ -409,13 +409,7 @@ void freedata(Project *pr) list_t *demand = pr->network.Node[j].D; if(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(pr->network.Node[j].S); free(pr->network.Node[j].Comment); @@ -797,8 +791,8 @@ 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); if (pat_idx == del_idx) set_pattern_index(lnode, 0); @@ -825,7 +819,7 @@ void adjustpatterns(Network *network, int index) list_t *dlist = network->Node[j].D; if (dlist) { 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 source = network->Node[j].S;