adding debuggable conditionals, fixing lemontiger bug

… reorientsegs was borked
This commit is contained in:
sam hatchett
2013-09-27 22:19:54 -04:00
parent 5b151dd09b
commit 519daf8e3e
5 changed files with 65 additions and 40 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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;
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 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);
/* Update tank quality */
updatetanks(dt);
/* For flow tracing, set source node concen. to 100. */
if (Qualflag == TRACE) C[TraceNode] = 100.0;
/* 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 */

View File

@@ -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;