adding debuggable conditionals, fixing lemontiger bug
… reorientsegs was borked
This commit is contained in:
@@ -260,7 +260,7 @@
|
|||||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 0460;
|
LastUpgradeCheck = 0500;
|
||||||
};
|
};
|
||||||
buildConfigurationList = 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "epanet" */;
|
buildConfigurationList = 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "epanet" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
@@ -392,16 +392,20 @@
|
|||||||
1DEB914F08733D8E0010E9CD /* Debug */ = {
|
1DEB914F08733D8E0010E9CD /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = macinclude;
|
HEADER_SEARCH_PATHS = macinclude;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
@@ -412,15 +416,19 @@
|
|||||||
1DEB915008733D8E0010E9CD /* Release */ = {
|
1DEB915008733D8E0010E9CD /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
HEADER_SEARCH_PATHS = macinclude;
|
HEADER_SEARCH_PATHS = macinclude;
|
||||||
SDKROOT = "";
|
SDKROOT = "";
|
||||||
@@ -463,7 +471,6 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
@@ -484,7 +491,6 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
|||||||
@@ -1968,7 +1968,9 @@ int DLLEXPORT ENsetnodevalue(int index, int code, EN_API_FLOAT_TYPE v)
|
|||||||
source->Pat = 0;
|
source->Pat = 0;
|
||||||
Node[index].S = source;
|
Node[index].S = source;
|
||||||
}
|
}
|
||||||
if (code == EN_SOURCEQUAL) source->C0 = value;
|
if (code == EN_SOURCEQUAL) {
|
||||||
|
source->C0 = value;
|
||||||
|
}
|
||||||
else if (code == EN_SOURCEPAT)
|
else if (code == EN_SOURCEPAT)
|
||||||
{
|
{
|
||||||
j = ROUND(value);
|
j = ROUND(value);
|
||||||
@@ -2757,7 +2759,7 @@ void initpointers()
|
|||||||
C = NULL;
|
C = NULL;
|
||||||
H = NULL;
|
H = NULL;
|
||||||
Q = NULL;
|
Q = NULL;
|
||||||
R = NULL;
|
PipeRateCoeff = NULL;
|
||||||
S = NULL;
|
S = NULL;
|
||||||
K = NULL;
|
K = NULL;
|
||||||
OldStat = NULL;
|
OldStat = NULL;
|
||||||
|
|||||||
@@ -455,7 +455,7 @@ int linkoutput(int j, REAL4 *x, double ucf)
|
|||||||
break;
|
break;
|
||||||
case REACTRATE: /* Overall reaction rate in mass/L/day */
|
case REACTRATE: /* Overall reaction rate in mass/L/day */
|
||||||
if (Qualflag == NONE) memset(x,0,(Nlinks+1 )*sizeof(REAL4));
|
if (Qualflag == NONE) memset(x,0,(Nlinks+1 )*sizeof(REAL4));
|
||||||
else for (i=1; i<=Nlinks; i++) x[i] = (REAL4)(R[i]*ucf);
|
else for (i=1; i<=Nlinks; i++) x[i] = (REAL4)(PipeRateCoeff[i]*ucf);
|
||||||
break;
|
break;
|
||||||
case FRICTION: /* f = 2ghd/(Lu^2) where f = friction factor */
|
case FRICTION: /* f = 2ghd/(Lu^2) where f = friction factor */
|
||||||
/* u = velocity, g = grav. accel., h = head */
|
/* u = velocity, g = grav. accel., h = head */
|
||||||
|
|||||||
@@ -107,9 +107,9 @@ int openqual()
|
|||||||
|
|
||||||
/* Allocate scratch array & reaction rate array*/
|
/* Allocate scratch array & reaction rate array*/
|
||||||
XC = (double *) calloc(MAX((Nnodes+1),(Nlinks+1)),sizeof(double));
|
XC = (double *) calloc(MAX((Nnodes+1),(Nlinks+1)),sizeof(double));
|
||||||
R = (double *) calloc((Nlinks+1), sizeof(double));
|
PipeRateCoeff = (double *) calloc((Nlinks+1), sizeof(double));
|
||||||
ERRCODE(MEMCHECK(XC));
|
ERRCODE(MEMCHECK(XC));
|
||||||
ERRCODE(MEMCHECK(R));
|
ERRCODE(MEMCHECK(PipeRateCoeff));
|
||||||
|
|
||||||
/* Allocate memory for WQ solver */
|
/* Allocate memory for WQ solver */
|
||||||
n = Nlinks+Ntanks+1;
|
n = Nlinks+Ntanks+1;
|
||||||
@@ -414,7 +414,7 @@ int closequal()
|
|||||||
free(FlowDir);
|
free(FlowDir);
|
||||||
free(VolIn);
|
free(VolIn);
|
||||||
free(MassIn);
|
free(MassIn);
|
||||||
free(R);
|
free(PipeRateCoeff);
|
||||||
free(XC);
|
free(XC);
|
||||||
free(QTankVolumes);
|
free(QTankVolumes);
|
||||||
free(QLinkFlow);
|
free(QLinkFlow);
|
||||||
@@ -474,7 +474,8 @@ int gethyd(long *hydtime, long *hydstep)
|
|||||||
//if (Qtime == 0)
|
//if (Qtime == 0)
|
||||||
// initsegs();
|
// initsegs();
|
||||||
//else
|
//else
|
||||||
if (Qtime != 0) {
|
// if hydraulics are open, or if we're in sequential mode (where qtime can increase)
|
||||||
|
if (OpenHflag || Qtime != 0) {
|
||||||
reorientsegs();
|
reorientsegs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -559,8 +560,10 @@ void initsegs()
|
|||||||
{
|
{
|
||||||
|
|
||||||
/* Establish flow direction */
|
/* Establish flow direction */
|
||||||
FlowDir[k] = '+';
|
FlowDir[k] = '+';
|
||||||
if (Q[k] < 0.) FlowDir[k] = '-';
|
if (Q[k] < 0.) {
|
||||||
|
FlowDir[k] = '-';
|
||||||
|
}
|
||||||
|
|
||||||
/* Set segs to zero */
|
/* Set segs to zero */
|
||||||
LastSeg[k] = NULL;
|
LastSeg[k] = NULL;
|
||||||
@@ -626,9 +629,13 @@ void reorientsegs()
|
|||||||
{
|
{
|
||||||
|
|
||||||
/* Find new flow direction */
|
/* Find new flow direction */
|
||||||
newdir = '+';
|
newdir = '+';
|
||||||
if (Q[k] == 0.0) newdir = FlowDir[k];
|
if (Q[k] == 0.0) {
|
||||||
else if (Q[k] < 0.0) newdir = '-';
|
newdir = FlowDir[k];
|
||||||
|
}
|
||||||
|
else if (Q[k] < 0.0) {
|
||||||
|
newdir = '-';
|
||||||
|
}
|
||||||
|
|
||||||
/* If direction changes, then reverse order of segments */
|
/* If direction changes, then reverse order of segments */
|
||||||
/* (first to last) and save new direction */
|
/* (first to last) and save new direction */
|
||||||
@@ -692,8 +699,8 @@ void updatesegs(long dt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Normalize volume-weighted reaction rate */
|
/* Normalize volume-weighted reaction rate */
|
||||||
if (vsum > 0.0) R[k] = rsum/vsum/dt*SECperDAY;
|
if (vsum > 0.0) PipeRateCoeff[k] = rsum/vsum/dt*SECperDAY;
|
||||||
else R[k] = 0.0;
|
else PipeRateCoeff[k] = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -885,21 +892,27 @@ void updatenodes(long dt)
|
|||||||
**---------------------------------------------------------------------------
|
**---------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Update junction quality */
|
/* Update junction quality */
|
||||||
for (i=1; i<=Njuncs; i++)
|
for (i=1; i<=Njuncs; i++)
|
||||||
{
|
{
|
||||||
if (D[i] < 0.0) VolIn[i] -= D[i]*dt;
|
if (D[i] < 0.0) {
|
||||||
if (VolIn[i] > 0.0) C[i] = MassIn[i]/VolIn[i];
|
VolIn[i] -= D[i]*dt;
|
||||||
else C[i] = XC[i];
|
}
|
||||||
}
|
if (VolIn[i] > 0.0) {
|
||||||
|
C[i] = MassIn[i]/VolIn[i];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
C[i] = XC[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Update tank quality */
|
/* Update tank quality */
|
||||||
updatetanks(dt);
|
updatetanks(dt);
|
||||||
|
|
||||||
/* For flow tracing, set source node concen. to 100. */
|
/* For flow tracing, set source node concen. to 100. */
|
||||||
if (Qualflag == TRACE) C[TraceNode] = 100.0;
|
if (Qualflag == TRACE) C[TraceNode] = 100.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -972,9 +985,13 @@ void sourceinput(long dt)
|
|||||||
/* Mass added is difference between source */
|
/* Mass added is difference between source */
|
||||||
/* & node concen. times outflow volume */
|
/* & node concen. times outflow volume */
|
||||||
case SETPOINT:
|
case SETPOINT:
|
||||||
if (s > C[n]) massadded = (s-C[n])*volout;
|
if (s > C[n]) {
|
||||||
else massadded = 0.0;
|
massadded = (s-C[n])*volout;
|
||||||
break;
|
}
|
||||||
|
else {
|
||||||
|
massadded = 0.0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
/* Flow-Paced Booster Source: */
|
/* Flow-Paced Booster Source: */
|
||||||
/* Mass added = source concen. times outflow volume */
|
/* Mass added = source concen. times outflow volume */
|
||||||
@@ -1557,7 +1574,7 @@ void ratecoeffs()
|
|||||||
kw = Link[k].Kw;
|
kw = Link[k].Kw;
|
||||||
if (kw != 0.0) kw = piperate(k);
|
if (kw != 0.0) kw = piperate(k);
|
||||||
Link[k].Rc = kw;
|
Link[k].Rc = kw;
|
||||||
R[k] = 0.0;
|
PipeRateCoeff[k] = 0.0;
|
||||||
}
|
}
|
||||||
} /* End of ratecoeffs */
|
} /* End of ratecoeffs */
|
||||||
|
|
||||||
|
|||||||
@@ -151,9 +151,9 @@ AUTHOR: L. Rossman
|
|||||||
*E, /* Emitter flows */
|
*E, /* Emitter flows */
|
||||||
*K, /* Link settings */
|
*K, /* Link settings */
|
||||||
*Q, /* Link flows */
|
*Q, /* Link flows */
|
||||||
*R, /* Pipe reaction rate */
|
*PipeRateCoeff, /* Pipe reaction rate */
|
||||||
*X, /* General purpose array */
|
*X, /* General purpose array */
|
||||||
*XC; /* General purpose array */
|
*XC; /* General purpose array for water quality */
|
||||||
EXTERN double *H; /* Node heads */
|
EXTERN double *H; /* Node heads */
|
||||||
EXTERN double *QTankVolumes;
|
EXTERN double *QTankVolumes;
|
||||||
EXTERN double *QLinkFlow;
|
EXTERN double *QLinkFlow;
|
||||||
|
|||||||
Reference in New Issue
Block a user