Work in progress
Fixing problems when demand lists are null
This commit is contained in:
@@ -1897,7 +1897,8 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode)
|
||||
|
||||
// Free memory allocated to node's demands, WQ source & comment
|
||||
demand = node->D;
|
||||
delete_list(demand);
|
||||
if (demand)
|
||||
delete_list(demand);
|
||||
// while (demand != NULL)
|
||||
// {
|
||||
// nextdemand = demand->next;
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
// pattern period (k) = (elapsed periods) modulus (periods per pattern)
|
||||
j = get_pattern_index(lnode);
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
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
|
||||
|
||||
@@ -568,9 +568,10 @@ void convertunits(Project *pr)
|
||||
{
|
||||
node = &net->Node[i];
|
||||
list_t *dlist = node->D;
|
||||
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
|
||||
convert_units(lnode, pr->Ucf[DEMAND]);
|
||||
|
||||
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];
|
||||
|
||||
@@ -407,7 +407,8 @@ void freedata(Project *pr)
|
||||
{
|
||||
// Free memory used for demand category list
|
||||
list_t *demand = pr->network.Node[j].D;
|
||||
delete_list(demand);
|
||||
if(demand)
|
||||
delete_list(demand);
|
||||
/*while (demand != NULL)
|
||||
{
|
||||
nextdemand = demand->next;
|
||||
@@ -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))
|
||||
_adjustpattern(lnode, index);
|
||||
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user