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
|
// Free memory allocated to node's demands, WQ source & comment
|
||||||
demand = node->D;
|
demand = node->D;
|
||||||
delete_list(demand);
|
if (demand)
|
||||||
|
delete_list(demand);
|
||||||
// while (demand != NULL)
|
// while (demand != NULL)
|
||||||
// {
|
// {
|
||||||
// nextdemand = demand->next;
|
// nextdemand = demand->next;
|
||||||
|
|||||||
@@ -567,16 +567,18 @@ void demands(Project *pr)
|
|||||||
{
|
{
|
||||||
sum = 0.0;
|
sum = 0.0;
|
||||||
list_t *dlist = net->Node[i].D;
|
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);
|
// pattern period (k) = (elapsed periods) modulus (periods per pattern)
|
||||||
k = p % (long) net->Pattern[j].Length;
|
j = get_pattern_index(lnode);
|
||||||
djunc = (get_base_demand(lnode)) * net->Pattern[j].F[k] * hyd->Dmult;
|
k = p % (long)net->Pattern[j].Length;
|
||||||
if (djunc > 0.0) hyd->Dsystem += djunc;
|
djunc = (get_base_demand(lnode)) * net->Pattern[j].F[k] * hyd->Dmult;
|
||||||
sum += djunc;
|
if (djunc > 0.0) hyd->Dsystem += djunc;
|
||||||
}
|
sum += djunc;
|
||||||
|
}
|
||||||
|
}
|
||||||
hyd->NodeDemand[i] = sum;
|
hyd->NodeDemand[i] = sum;
|
||||||
|
|
||||||
// Initialize pressure dependent demand
|
// Initialize pressure dependent demand
|
||||||
|
|||||||
@@ -568,9 +568,10 @@ void convertunits(Project *pr)
|
|||||||
{
|
{
|
||||||
node = &net->Node[i];
|
node = &net->Node[i];
|
||||||
list_t *dlist = node->D;
|
list_t *dlist = node->D;
|
||||||
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
|
if (dlist) {
|
||||||
convert_units(lnode, pr->Ucf[DEMAND]);
|
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)
|
// for (demand = node->D; demand != NULL; demand = demand->next)
|
||||||
// {
|
// {
|
||||||
// demand->Base /= pr->Ucf[DEMAND];
|
// demand->Base /= pr->Ucf[DEMAND];
|
||||||
|
|||||||
@@ -407,7 +407,8 @@ void freedata(Project *pr)
|
|||||||
{
|
{
|
||||||
// Free memory used for demand category list
|
// Free memory used for demand category list
|
||||||
list_t *demand = pr->network.Node[j].D;
|
list_t *demand = pr->network.Node[j].D;
|
||||||
delete_list(demand);
|
if(demand)
|
||||||
|
delete_list(demand);
|
||||||
/*while (demand != NULL)
|
/*while (demand != NULL)
|
||||||
{
|
{
|
||||||
nextdemand = demand->next;
|
nextdemand = demand->next;
|
||||||
@@ -822,11 +823,10 @@ void adjustpatterns(Network *network, int index)
|
|||||||
{
|
{
|
||||||
// Adjust demand patterns
|
// Adjust demand patterns
|
||||||
list_t *dlist = network->Node[j].D;
|
list_t *dlist = network->Node[j].D;
|
||||||
list_node_t *lnode;
|
if (dlist) {
|
||||||
|
for (list_node_t *lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
|
||||||
for (lnode = first_list(dlist); done_list(lnode); lnode = next_list(lnode))
|
_adjustpattern(lnode, index);
|
||||||
_adjustpattern(lnode, index);
|
}
|
||||||
|
|
||||||
// Adjust WQ source patterns
|
// Adjust WQ source patterns
|
||||||
source = network->Node[j].S;
|
source = network->Node[j].S;
|
||||||
if (source) adjustpattern(&source->Pat, index);
|
if (source) adjustpattern(&source->Pat, index);
|
||||||
|
|||||||
Reference in New Issue
Block a user