Work in progress

Implementing demand_list
This commit is contained in:
Michael Tryby
2019-04-15 13:35:37 -04:00
parent f80e74bc5c
commit c659c70817
5 changed files with 150 additions and 67 deletions

View File

@@ -23,6 +23,8 @@ Last Updated: 04/03/2019
#include <math.h>
#include "demand.h"
#include "types.h"
#include "funcs.h"
#include "hash.h"
@@ -220,9 +222,9 @@ void adjustdata(Project *pr)
int i;
double ucf; // Unit conversion factor
Pdemand demand; // Pointer to demand record
//Pdemand demand; // Pointer to demand record
Slink *link;
Snode *node;
//Snode *node;
Stank *tank;
// Use 1 hr pattern & report time step if none specified
@@ -330,16 +332,19 @@ void adjustdata(Project *pr)
if (tank->Kb == MISSING) tank->Kb = qual->Kbulk;
}
// 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;
}
}
// 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;
// }
// }
// Remove QUALITY as a reporting variable if no WQ analysis
if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE;
@@ -542,7 +547,7 @@ void convertunits(Project *pr)
int i, j, k;
double ucf; // Unit conversion factor
Pdemand demand; // Pointer to demand record
//Pdemand demand; // Pointer to demand record
Snode *node;
Stank *tank;
Slink *link;
@@ -562,11 +567,16 @@ void convertunits(Project *pr)
for (i = 1; i <= net->Njuncs; i++)
{
node = &net->Node[i];
for (demand = node->D; demand != NULL; demand = demand->next)
{
demand->Base /= pr->Ucf[DEMAND];
}
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]);
// for (demand = node->D; demand != NULL; demand = demand->next)
// {
// demand->Base /= pr->Ucf[DEMAND];
// }
}
hyd->Pmin /= pr->Ucf[PRESSURE];
hyd->Preq /= pr->Ucf[PRESSURE];