Adds get/set for default demand pattern to toolkit
This commit is contained in:
@@ -320,7 +320,8 @@ typedef enum {
|
|||||||
EN_BULKORDER = 19, //!< Bulk water reaction order for pipes
|
EN_BULKORDER = 19, //!< Bulk water reaction order for pipes
|
||||||
EN_WALLORDER = 20, //!< Wall reaction order for pipes (either 0 or 1)
|
EN_WALLORDER = 20, //!< Wall reaction order for pipes (either 0 or 1)
|
||||||
EN_TANKORDER = 21, //!< Bulk water reaction order for tanks
|
EN_TANKORDER = 21, //!< Bulk water reaction order for tanks
|
||||||
EN_CONCENLIMIT = 22 //!< Limiting concentration for growth reactions
|
EN_CONCENLIMIT = 22, //!< Limiting concentration for growth reactions
|
||||||
|
EN_DEMANDPATTERN = 23 //!< Name of default demand pattern
|
||||||
} EN_Option;
|
} EN_Option;
|
||||||
|
|
||||||
/// Simple control types
|
/// Simple control types
|
||||||
|
|||||||
@@ -1188,6 +1188,9 @@ int DLLEXPORT EN_getoption(EN_Project p, int option, double *value)
|
|||||||
v = qual->Climit * p->Ucf[QUALITY];
|
v = qual->Climit * p->Ucf[QUALITY];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EN_DEMANDPATTERN:
|
||||||
|
v = hyd->DefPat;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 251;
|
return 251;
|
||||||
}
|
}
|
||||||
@@ -1344,6 +1347,12 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value)
|
|||||||
qual->Climit = value / p->Ucf[QUALITY];
|
qual->Climit = value / p->Ucf[QUALITY];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EN_DEMANDPATTERN:
|
||||||
|
pat = ROUND(value);
|
||||||
|
if (pat < 0 || pat > net->Npats) return 205;
|
||||||
|
hyd->DefPat = pat;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 251;
|
return 251;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,6 +485,8 @@ void demands(Project *pr)
|
|||||||
{
|
{
|
||||||
// pattern period (k) = (elapsed periods) modulus (periods per pattern)
|
// pattern period (k) = (elapsed periods) modulus (periods per pattern)
|
||||||
j = demand->Pat;
|
j = demand->Pat;
|
||||||
|
if (j == 0)
|
||||||
|
j = hyd->DefPat;
|
||||||
k = p % (long)net->Pattern[j].Length;
|
k = p % (long)net->Pattern[j].Length;
|
||||||
djunc = (demand->Base) * net->Pattern[j].F[k] * hyd->Dmult;
|
djunc = (demand->Base) * net->Pattern[j].F[k] * hyd->Dmult;
|
||||||
if (djunc > 0.0) hyd->Dsystem += djunc;
|
if (djunc > 0.0) hyd->Dsystem += djunc;
|
||||||
|
|||||||
@@ -666,6 +666,8 @@ int saveinpfile(Project *pr, const char *fname)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hyd->DefPat > 0)
|
||||||
|
fprintf(f, "\n PATTERN %s", net->Pattern[hyd->DefPat].ID);
|
||||||
fprintf(f, "\n DEMAND MULTIPLIER %-.4f", hyd->Dmult);
|
fprintf(f, "\n DEMAND MULTIPLIER %-.4f", hyd->Dmult);
|
||||||
fprintf(f, "\n EMITTER EXPONENT %-.4f", 1.0 / hyd->Qexp);
|
fprintf(f, "\n EMITTER EXPONENT %-.4f", 1.0 / hyd->Qexp);
|
||||||
fprintf(f, "\n VISCOSITY %-.6f", hyd->Viscos / VISCOS);
|
fprintf(f, "\n VISCOSITY %-.6f", hyd->Viscos / VISCOS);
|
||||||
|
|||||||
16
src/input1.c
16
src/input1.c
@@ -97,7 +97,6 @@ void setdefaults(Project *pr)
|
|||||||
parser->Unitsflag = US; // US unit system
|
parser->Unitsflag = US; // US unit system
|
||||||
parser->Flowflag = GPM; // Flow units are gpm
|
parser->Flowflag = GPM; // Flow units are gpm
|
||||||
parser->Pressflag = PSI; // Pressure units are psi
|
parser->Pressflag = PSI; // Pressure units are psi
|
||||||
parser->DefPat = 0; // Default demand pattern index
|
|
||||||
out->Hydflag = SCRATCH; // No external hydraulics file
|
out->Hydflag = SCRATCH; // No external hydraulics file
|
||||||
rpt->Tstatflag = SERIES; // Generate time series output
|
rpt->Tstatflag = SERIES; // Generate time series output
|
||||||
|
|
||||||
@@ -121,6 +120,7 @@ void setdefaults(Project *pr)
|
|||||||
hyd->Epump = EPUMP; // Default pump efficiency
|
hyd->Epump = EPUMP; // Default pump efficiency
|
||||||
hyd->Emax = 0.0; // Zero peak energy usage
|
hyd->Emax = 0.0; // Zero peak energy usage
|
||||||
hyd->Qexp = 2.0; // Flow exponent for emitters
|
hyd->Qexp = 2.0; // Flow exponent for emitters
|
||||||
|
hyd->DefPat = 0; // Default demand pattern index
|
||||||
hyd->Dmult = 1.0; // Demand multiplier
|
hyd->Dmult = 1.0; // Demand multiplier
|
||||||
hyd->RQtol = RQTOL; // Default hydraulics parameters
|
hyd->RQtol = RQTOL; // Default hydraulics parameters
|
||||||
hyd->CheckFreq = CHECKFREQ;
|
hyd->CheckFreq = CHECKFREQ;
|
||||||
@@ -319,16 +319,10 @@ void adjustdata(Project *pr)
|
|||||||
if (tank->Kb == MISSING) tank->Kb = qual->Kbulk;
|
if (tank->Kb == MISSING) tank->Kb = qual->Kbulk;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use default pattern if none assigned to a demand
|
// Set default pattern index
|
||||||
parser->DefPat = findpattern(net, parser->DefPatID);
|
i = findpattern(net, parser->DefPatID);
|
||||||
if (parser->DefPat > 0) for (i = 1; i <= net->Nnodes; i++)
|
if (i > 0)
|
||||||
{
|
hyd->DefPat = 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
|
// Remove QUALITY as a reporting variable if no WQ analysis
|
||||||
if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE;
|
if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE;
|
||||||
|
|||||||
@@ -573,8 +573,7 @@ typedef struct {
|
|||||||
ErrTok, // Index of error-producing token
|
ErrTok, // Index of error-producing token
|
||||||
Unitsflag, // Unit system flag
|
Unitsflag, // Unit system flag
|
||||||
Flowflag, // Flow units flag
|
Flowflag, // Flow units flag
|
||||||
Pressflag, // Pressure units flag
|
Pressflag; // Pressure units flag
|
||||||
DefPat; // Default demand pattern
|
|
||||||
|
|
||||||
Spattern *PrevPat; // Previous pattern processed
|
Spattern *PrevPat; // Previous pattern processed
|
||||||
Scurve *PrevCurve; // Previous curve processed
|
Scurve *PrevCurve; // Previous curve processed
|
||||||
@@ -735,6 +734,7 @@ typedef struct {
|
|||||||
*Xflow; // Inflow - outflow at each node
|
*Xflow; // Inflow - outflow at each node
|
||||||
|
|
||||||
int
|
int
|
||||||
|
DefPat, // Default demand pattern
|
||||||
Epat, // Energy cost time pattern
|
Epat, // Energy cost time pattern
|
||||||
DemandModel, // Fixed or pressure dependent
|
DemandModel, // Fixed or pressure dependent
|
||||||
Formflag, // Head loss formula flag
|
Formflag, // Head loss formula flag
|
||||||
|
|||||||
Reference in New Issue
Block a user