Work in progress

Fixing problems when demand lists are null
This commit is contained in:
Michael Tryby
2019-04-18 14:24:30 -04:00
parent 4581266654
commit bf519fdd94
4 changed files with 24 additions and 20 deletions

View File

@@ -1897,6 +1897,7 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode)
// Free memory allocated to node's demands, WQ source & comment
demand = node->D;
if (demand)
delete_list(demand);
// while (demand != NULL)
// {

View File

@@ -567,16 +567,18 @@ void demands(Project *pr)
{
sum = 0.0;
list_t *dlist = net->Node[i].D;
list_node_t *lnode;
for (lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
if (dlist) {
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
{
// pattern period (k) = (elapsed periods) modulus (periods per pattern)
j = get_pattern_index(lnode);
k = p % (long) net->Pattern[j].Length;
k = p % (long)net->Pattern[j].Length;
djunc = (get_base_demand(lnode)) * net->Pattern[j].F[k] * hyd->Dmult;
if (djunc > 0.0) hyd->Dsystem += djunc;
sum += djunc;
}
}
hyd->NodeDemand[i] = sum;
// Initialize pressure dependent demand

View File

@@ -568,9 +568,10 @@ void convertunits(Project *pr)
{
node = &net->Node[i];
list_t *dlist = node->D;
if (dlist) {
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
convert_units(lnode, pr->Ucf[DEMAND]);
}
// for (demand = node->D; demand != NULL; demand = demand->next)
// {
// demand->Base /= pr->Ucf[DEMAND];

View File

@@ -407,6 +407,7 @@ void freedata(Project *pr)
{
// Free memory used for demand category list
list_t *demand = pr->network.Node[j].D;
if(demand)
delete_list(demand);
/*while (demand != NULL)
{
@@ -822,11 +823,10 @@ void adjustpatterns(Network *network, int index)
{
// Adjust demand patterns
list_t *dlist = network->Node[j].D;
list_node_t *lnode;
for (lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
if (dlist) {
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
_adjustpattern(lnode, index);
}
// Adjust WQ source patterns
source = network->Node[j].S;
if (source) adjustpattern(&source->Pat, index);