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