From 38bb3a57e0a4fe2f93666724905e1a3231a16b2f Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Fri, 12 Jun 2015 10:34:50 -0400 Subject: [PATCH] remove old files --- src/testLemonTiger.cpp | 332 ----------------------------------------- src/testLemonTiger.h | 15 -- src/toolkit.h | 255 ------------------------------- 3 files changed, 602 deletions(-) delete mode 100755 src/testLemonTiger.cpp delete mode 100755 src/testLemonTiger.h delete mode 100755 src/toolkit.h diff --git a/src/testLemonTiger.cpp b/src/testLemonTiger.cpp deleted file mode 100755 index 0863e9a..0000000 --- a/src/testLemonTiger.cpp +++ /dev/null @@ -1,332 +0,0 @@ -#include -#include -#include -#include -#include -#include "testLemonTiger.h" -#include "toolkit.h" - -#define COLW 15 -#define OUTPRECISION 6 - -using namespace std; - -typedef struct { - double head; - double demand; - double quality; -} nodeState_t; - -typedef struct { - double flow; -} linkState_t; - -typedef map networkNodeState_t; // nodeIndex, state -typedef map networkLinkState_t; // linkIndex, state - -typedef struct { - networkNodeState_t nodeState; - networkLinkState_t linkState; -} networkState_t; -typedef map result_t; // time, networkState -// access results by, for instance, resultsContainer[time][nodeIndex].head - - - -void checkErr(int err, std::string function); -void saveHydResults(networkState_t* networkState); -void saveQualResults(networkState_t* networkState); -void printResults(result_t* state1, result_t* state2, std::ostream& out); -void compare(result_t* results1, result_t* results2, std::ostream &out); - -int main(int argc, char * argv[]) { - - // create storage structures for results. - result_t epanetResults, lemonTigerResults; - - cout << "Lemon Tiger TEST" << endl - << "________________" << endl; - - - long simulationTime = 0; - long nextEventH = 0, nextEventQ = 0; - long simTimeRemaining = 0; - - try { - - /* Batch solver (old epanet) */ - cout << "*****Original EPANET results******" << endl; - checkErr( ENopen(argv[1], argv[2], (char*)""), "ENopen" ); - - checkErr( ENopenH(), "ENopenH" ); - checkErr( ENinitH(EN_SAVE), "ENinitH" ); - - cout << "Running hydraulics..." << endl; - do { - - /* Solve for hydraulics & advance to next time period */ - checkErr( ENrunH(&simulationTime), "ENrunH" ); - checkErr( ENnextH(&nextEventH), "ENnextH" ); - - // gather hydraulic results - saveHydResults(&epanetResults[simulationTime]); - - - - } while (nextEventH > 0); - // hydraulics are done - checkErr( ENcloseH(), "ENcloseH" ); - cout << "\t\t\tdone." << endl; - cout << "Running WQ..." << endl; - - checkErr( ENopenQ(), "ENopenQ" ); - checkErr( ENinitQ(EN_NOSAVE), "ENinitQ" ); - - do { - - checkErr( ENrunQ(&simulationTime), "ENrunQ" ); - checkErr( ENnextQ(&nextEventH), "ENstepQ" ); - - // gather quality results - saveQualResults(&epanetResults[simulationTime]); - - } while (nextEventH > 0); - // water quality is done - checkErr( ENcloseQ(), "ENcloseQ" ); - cout << "\t\t\tdone." << endl; - - // everything is done - checkErr( ENclose(), "ENclose" ); - - - nextEventH = 0; - simTimeRemaining = 0; - simulationTime = 0; - - /* stepwise solver (LemonTiger) */ - cout << "*****LemonTiger results******" << endl; - - checkErr( ENopen(argv[1], argv[2], (char*)""), "ENopen" ); - - checkErr( ENopenH(), "ENopenH" ); - checkErr( ENinitH(EN_NOSAVE), "ENinitH" ); - checkErr( ENopenQ(), "ENopenQ" ); - checkErr( ENinitQ(EN_NOSAVE), "ENinitQ" ); - - cout << "Running stepwise hydraulics and water quality..." << endl; - do { - /* Solve for hydraulics & advance to next time period */ - checkErr( ENrunH(&simulationTime), "ENrunH" ); - checkErr( ENrunQ(&simulationTime), "ENrunQ" ); - - checkErr( ENnextH(&nextEventH), "ENnextH" ); - checkErr( ENnextQ(&nextEventQ), "ENstepQ" ); - - - saveHydResults(&lemonTigerResults[simulationTime]); - saveQualResults(&lemonTigerResults[simulationTime]); - - - } while (nextEventH > 0); - cout << "\t\t\tdone." << endl; - - // all done - checkErr( ENcloseH(), "ENcloseH" ); - checkErr( ENcloseQ(), "ENcloseQ" ); - checkErr( ENclose(), "ENclose" ); - - - // summarize the results - printResults(&epanetResults, &lemonTigerResults, cout); - compare(&epanetResults, &lemonTigerResults, cout); - - } catch (int err) { - cerr << "exiting with error " << err << endl; - } -} - - -void saveHydResults(networkState_t* networkState) { - int nNodes, nLinks; - float head, demand, flow; - ENgetcount(EN_NODECOUNT, &nNodes); - ENgetcount(EN_LINKCOUNT, &nLinks); - for (int iNode = 1; iNode <= nNodes; ++iNode) { - ENgetnodevalue(iNode, EN_HEAD, &head); - ENgetnodevalue(iNode, EN_DEMAND, &demand); - (*networkState).nodeState[iNode].head = head; - (*networkState).nodeState[iNode].demand = demand; - } - for (int iLink = 1; iLink <= nLinks; ++iLink) { - ENgetlinkvalue(iLink, EN_FLOW, &flow); - (*networkState).linkState[iLink].flow = flow; - } -} - - -void saveQualResults(networkState_t* networkState) { - int nNodes; - float quality; - ENgetcount(EN_NODECOUNT, &nNodes); - - for (int iNode = 1; iNode <= nNodes; iNode++) { - ENgetnodevalue(iNode, EN_QUALITY, &quality); - (*networkState).nodeState[iNode].quality = quality; - } -} - - -void printResults(result_t* results1, result_t* results2, std::ostream &out) { - - result_t::const_iterator resultIterator; - - for (resultIterator = (*results1).begin(); resultIterator != (*results1).end(); ++resultIterator) { - // get the current frame - const long time = resultIterator->first; - const networkNodeState_t networkNodeState1= resultIterator->second.nodeState; - //nodeState1 = resultIterator->second.nodeState; - const networkLinkState_t networkLinkState1 = resultIterator->second.linkState; - //linkState1 = resultIterator->second.linkState; - - // see if this time is indexed in the second state container - if ((*results2).find(time) == (*results2).end()) { - // nope. - out << "time " << time << " not found in second result set" << endl; - } - else { - // get the second result set's state - const networkNodeState_t networkNodeState2 = (*results2)[time].nodeState; - const networkLinkState_t networkLinkState2 = (*results2)[time].linkState; - // print the current simulation time - out << left; - out << setfill('*') << setw(100) << "*" << endl; - out << setfill(' '); - out << setw(4) << "T = " << setw(6) << time; - out << "|" << setw(3*COLW) << "EPANET"; - out << "|" << setw(3*COLW) << "LemonTiger" << endl; - out << setw(10) << "Index" << "|"; - out << setw(COLW) << "Demand" << setw(COLW) << "Head" << setw(COLW) << "Quality" << "|"; - out << setw(COLW) << "Demand" << setw(COLW) << "Head" << setw(COLW) << "Quality" << endl; - out << setprecision(OUTPRECISION); - - // loop through the nodes in the networkState objs, and print out the results for this time period - networkNodeState_t::const_iterator networkNodeIterator; - for (networkNodeIterator = networkNodeState1.begin(); networkNodeIterator != networkNodeState1.end(); ++networkNodeIterator) { - int nodeIndex = networkNodeIterator->first; - // trusting that all nodes are present... - const nodeState_t nodeState1 = networkNodeIterator->second; - const nodeState_t nodeState2 = networkNodeState2.at(nodeIndex); - - if (nodeState1.quality != nodeState2.quality ) { - // epanet - out << setw(10) << nodeIndex << "|"; - out << setw(COLW) << nodeState1.demand; - out << setw(COLW) << nodeState1.head; - out << setw(COLW) << nodeState1.quality; - - // lemontiger - out << "|"; - out << setw(COLW) << nodeState2.demand; - out << setw(COLW) << nodeState2.head; - out << setw(COLW) << nodeState2.quality; - out << endl; - } - } - - networkLinkState_t::const_iterator networkLinkIterator; - for (networkLinkIterator = networkLinkState1.begin(); networkLinkIterator != networkLinkState1.end(); ++networkLinkIterator) { - int linkIndex = networkLinkIterator->first; - // trusting that all nodes are present... - const linkState_t linkState1 = networkLinkIterator->second; - const linkState_t linkState2 = networkLinkState2.at(linkIndex); - - if ( linkState1.flow != linkState2.flow ) { - // epanet - out << setw(10) << linkIndex << "|"; - out << setw(COLW) << linkState1.flow; - - // lemontiger - out << "|"; - out << setw(COLW) << linkState2.flow; - out << endl; - } - } - - - } - } - -} - - - -void compare(result_t* results1, result_t* results2, std::ostream &out) { - - double sumHeadDiff=0, sumDemandDiff=0, sumQualDiff=0, sumFlowDiff=0; - - result_t::const_iterator resultIterator; - - for (resultIterator = (*results1).begin(); resultIterator != (*results1).end(); ++resultIterator) { - // get the current frame - const long time = resultIterator->first; - const networkNodeState_t nodeState1 = resultIterator->second.nodeState; - const networkLinkState_t linkState1 = resultIterator->second.linkState; - - // see if this time is indexed in the second state container - if ((*results2).find(time) == (*results2).end()) { - // nope. - out << "time " << time << " not found in second result set" << endl; - } - else { - // get the second result set's state - const networkNodeState_t networkNodeState2 = (*results2)[time].nodeState; - const networkLinkState_t networkLinkState2 = (*results2)[time].linkState; - double qualD=0; - - networkNodeState_t::const_iterator networkNodeIterator; - for (networkNodeIterator = nodeState1.begin(); networkNodeIterator != nodeState1.end(); ++networkNodeIterator) { - int nodeIndex = networkNodeIterator->first; - // trusting that all nodes are present... - const nodeState_t nodeState1 = networkNodeIterator->second; - const nodeState_t nodeState2 = networkNodeState2.at(nodeIndex); - - sumHeadDiff += fabs(nodeState1.head - nodeState2.head); - sumDemandDiff += fabs(nodeState1.demand - nodeState2.demand); - - qualD += fabs(nodeState1.quality - nodeState2.quality); - } - //out << "T: " << time << " dq: " << setprecision(20) << qualD << endl; - sumQualDiff += qualD; - - networkLinkState_t::const_iterator networkLinkIterator; - for (networkLinkIterator = linkState1.begin(); networkLinkIterator != linkState1.end(); ++networkLinkIterator) { - int linkIndex = networkLinkIterator->first; - // trusting that all nodes are present... - const linkState_t linkState1 = networkLinkIterator->second; - const linkState_t linkState2 = networkLinkState2.at(linkIndex); - - sumFlowDiff += fabs(linkState1.flow - linkState2.flow); - } - } - } - - int c1 = 18; - int p = 20; - out << setw(c1) << "Head Diff:" << setprecision(p) << sumHeadDiff << endl; - out << setw(c1) << "Demand Diff:" << setprecision(p) << sumDemandDiff << endl; - out << setw(c1) << "Quality Diff:" << setprecision(p) << sumQualDiff << endl; - out << setw(c1) << "Flow Diff:" << setprecision(p) << sumFlowDiff << endl; - - -} - - -void checkErr(int err, std::string function) { - if (err > 0) { - cerr << "Error in " << function << ": " << err << endl; - char errmsg[1024]; - ENgeterror(err, errmsg, 1024); - cerr << errmsg << endl; - throw err; - } -} diff --git a/src/testLemonTiger.h b/src/testLemonTiger.h deleted file mode 100755 index 5c1cc2f..0000000 --- a/src/testLemonTiger.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// testLemonTiger.h -// epanet -// -// Created by Sam Hatchett on 2/1/13. -// -// - -#ifndef __epanet__testLemonTiger__ -#define __epanet__testLemonTiger__ - -#include -#include - -#endif /* defined(__epanet__testLemonTiger__) */ diff --git a/src/toolkit.h b/src/toolkit.h deleted file mode 100755 index 6078898..0000000 --- a/src/toolkit.h +++ /dev/null @@ -1,255 +0,0 @@ -/* -******************************************************************* - -TOOLKIT.H - Prototypes for EPANET Functions Exported to DLL Toolkit - -VERSION: 2.00 -DATE: 5/8/00 - 10/25/00 - 3/1/01 - 8/15/07 (2.00.11) - 2/14/08 (2.00.12) -AUTHOR: L. Rossman - US EPA - NRMRL - -******************************************************************* -*/ - - -#ifndef DLLEXPORT - #ifdef DLL - #ifdef __cplusplus - #define DLLEXPORT extern "C" __declspec(dllexport) - #else - #define DLLEXPORT __declspec(dllexport) __stdcall - #endif - #elif defined(CYGWIN) - #define DLLEXPORT __stdcall - #else - #ifdef __cplusplus - #define DLLEXPORT - #else - #define DLLEXPORT - #endif - #endif -#endif - -// --- Define the EPANET toolkit constants - -#define EN_ELEVATION 0 /* Node parameters */ -#define EN_BASEDEMAND 1 -#define EN_PATTERN 2 -#define EN_EMITTER 3 -#define EN_INITQUAL 4 -#define EN_SOURCEQUAL 5 -#define EN_SOURCEPAT 6 -#define EN_SOURCETYPE 7 -#define EN_TANKLEVEL 8 -#define EN_DEMAND 9 -#define EN_HEAD 10 -#define EN_PRESSURE 11 -#define EN_QUALITY 12 -#define EN_SOURCEMASS 13 -#define EN_INITVOLUME 14 -#define EN_MIXMODEL 15 -#define EN_MIXZONEVOL 16 - -#define EN_TANKDIAM 17 -#define EN_MINVOLUME 18 -#define EN_VOLCURVE 19 -#define EN_MINLEVEL 20 -#define EN_MAXLEVEL 21 -#define EN_MIXFRACTION 22 -#define EN_TANK_KBULK 23 -#define EN_TANKVOLUME 24 -#define EN_MAXVOLUME 25 - -#define EN_DIAMETER 0 /* Link parameters */ -#define EN_LENGTH 1 -#define EN_ROUGHNESS 2 -#define EN_MINORLOSS 3 -#define EN_INITSTATUS 4 -#define EN_INITSETTING 5 -#define EN_KBULK 6 -#define EN_KWALL 7 -#define EN_FLOW 8 -#define EN_VELOCITY 9 -#define EN_HEADLOSS 10 -#define EN_STATUS 11 -#define EN_SETTING 12 -#define EN_ENERGY 13 -#define EN_LINKQUAL 14 /* TNT */ -#define EN_LINKPATTERN 15 - -#define EN_DURATION 0 /* Time parameters */ -#define EN_HYDSTEP 1 -#define EN_QUALSTEP 2 -#define EN_PATTERNSTEP 3 -#define EN_PATTERNSTART 4 -#define EN_REPORTSTEP 5 -#define EN_REPORTSTART 6 -#define EN_RULESTEP 7 -#define EN_STATISTIC 8 -#define EN_PERIODS 9 -#define EN_STARTTIME 10 /* Added TNT 10/2/2009 */ -#define EN_HTIME 11 -#define EN_HALTFLAG 12 -#define EN_NEXTEVENT 13 - -#define EN_ITERATIONS 0 -#define EN_RELATIVEERROR 1 - -#define EN_NODECOUNT 0 /* Component counts */ -#define EN_TANKCOUNT 1 -#define EN_LINKCOUNT 2 -#define EN_PATCOUNT 3 -#define EN_CURVECOUNT 4 -#define EN_CONTROLCOUNT 5 - -#define EN_JUNCTION 0 /* Node types */ -#define EN_RESERVOIR 1 -#define EN_TANK 2 - -#define EN_CVPIPE 0 /* Link types. */ -#define EN_PIPE 1 /* See LinkType in TYPES.H */ -#define EN_PUMP 2 -#define EN_PRV 3 -#define EN_PSV 4 -#define EN_PBV 5 -#define EN_FCV 6 -#define EN_TCV 7 -#define EN_GPV 8 - -#define EN_NONE 0 /* Quality analysis types. */ -#define EN_CHEM 1 /* See QualType in TYPES.H */ -#define EN_AGE 2 -#define EN_TRACE 3 - -#define EN_CONCEN 0 /* Source quality types. */ -#define EN_MASS 1 /* See SourceType in TYPES.H. */ -#define EN_SETPOINT 2 -#define EN_FLOWPACED 3 - -#define EN_CFS 0 /* Flow units types. */ -#define EN_GPM 1 /* See FlowUnitsType */ -#define EN_MGD 2 /* in TYPES.H. */ -#define EN_IMGD 3 -#define EN_AFD 4 -#define EN_LPS 5 -#define EN_LPM 6 -#define EN_MLD 7 -#define EN_CMH 8 -#define EN_CMD 9 - -#define EN_TRIALS 0 /* Misc. options */ -#define EN_ACCURACY 1 -#define EN_TOLERANCE 2 -#define EN_EMITEXPON 3 -#define EN_DEMANDMULT 4 - -#define EN_LOWLEVEL 0 /* Control types. */ -#define EN_HILEVEL 1 /* See ControlType */ -#define EN_TIMER 2 /* in TYPES.H. */ -#define EN_TIMEOFDAY 3 - -#define EN_AVERAGE 1 /* Time statistic types. */ -#define EN_MINIMUM 2 /* See TstatType in TYPES.H */ -#define EN_MAXIMUM 3 -#define EN_RANGE 4 - -#define EN_MIX1 0 /* Tank mixing models */ -#define EN_MIX2 1 -#define EN_FIFO 2 -#define EN_LIFO 3 - -#define EN_NOSAVE 0 /* Save-results-to-file flag */ -#define EN_SAVE 1 - -#define EN_INITFLOW 10 /* Re-initialize flows flag */ - -#define EN_CONST_HP 0 /* constant horsepower */ -#define EN_POWER_FUNC 1 /* power function */ -#define EN_CUSTOM 2 /* user-defined custom curve */ - -// --- Declare the EPANET toolkit functions -#if defined(__cplusplus) -extern "C" { -#endif - int DLLEXPORT ENepanet(char *, char *, char *, void (*) (char *)); - - int DLLEXPORT ENopen(char *, char *, char *); - int DLLEXPORT ENsaveinpfile(char *); - int DLLEXPORT ENclose(void); - - int DLLEXPORT ENsolveH(void); - int DLLEXPORT ENsaveH(void); - int DLLEXPORT ENopenH(void); - int DLLEXPORT ENinitH(int); - int DLLEXPORT ENrunH(long *); - int DLLEXPORT ENnextH(long *); - int DLLEXPORT ENcloseH(void); - int DLLEXPORT ENsavehydfile(char *); - int DLLEXPORT ENusehydfile(char *); - - int DLLEXPORT ENsolveQ(void); - int DLLEXPORT ENopenQ(void); - int DLLEXPORT ENinitQ(int); - int DLLEXPORT ENrunQ(long *); - int DLLEXPORT ENnextQ(long *); - int DLLEXPORT ENstepQ(long *); - int DLLEXPORT ENcloseQ(void); - - int DLLEXPORT ENwriteline(char *); - int DLLEXPORT ENreport(void); - int DLLEXPORT ENresetreport(void); - int DLLEXPORT ENsetreport(char *); - - int DLLEXPORT ENgetcontrol(int, int *, int *, float *, - int *, float *); - int DLLEXPORT ENgetcount(int, int *); - int DLLEXPORT ENgetoption(int, float *); - int DLLEXPORT ENgettimeparam(int, long *); - int DLLEXPORT ENgetflowunits(int *); - int DLLEXPORT ENgetpatternindex(char *, int *); - int DLLEXPORT ENgetpatternid(int, char *); - int DLLEXPORT ENgetpatternlen(int, int *); - int DLLEXPORT ENgetpatternvalue(int, int, float *); - int DLLEXPORT ENgetqualtype(int *, int *); - int DLLEXPORT ENgeterror(int, char *, int); - int DLLEXPORT ENgetstatistic(int code, int* value); - - int DLLEXPORT ENgetnodeindex(char *, int *); - int DLLEXPORT ENgetnodeid(int, char *); - int DLLEXPORT ENgetnodetype(int, int *); - int DLLEXPORT ENgetnodevalue(int, int, float *); - - int DLLEXPORT ENgetnumdemands(int, int *); - int DLLEXPORT ENgetbasedemand(int, int, float *); - int DLLEXPORT ENgetdemandpattern(int, int, int *); - - int DLLEXPORT ENgetlinkindex(char *, int *); - int DLLEXPORT ENgetlinkid(int, char *); - int DLLEXPORT ENgetlinktype(int, int *); - int DLLEXPORT ENgetlinknodes(int, int *, int *); - int DLLEXPORT ENgetlinkvalue(int, int, float *); - - int DLLEXPORT ENgetcurve(int curveIndex, int *nValues, float **xValues, float **yValues); - int DLLEXPORT ENgetheadcurve(int, char *); - int DLLEXPORT ENgetpumptype(int, int *); - - int DLLEXPORT ENgetversion(int *); - - int DLLEXPORT ENsetcontrol(int, int, int, float, int, float); - int DLLEXPORT ENsetnodevalue(int, int, float); - int DLLEXPORT ENsetlinkvalue(int, int, float); - int DLLEXPORT ENaddpattern(char *); - int DLLEXPORT ENsetpattern(int, float *, int); - int DLLEXPORT ENsetpatternvalue(int, int, float); - int DLLEXPORT ENsettimeparam(int, long); - int DLLEXPORT ENsetoption(int, float); - int DLLEXPORT ENsetstatusreport(int); - int DLLEXPORT ENsetqualtype(int, char *, char *, char *); - -#if defined(__cplusplus) -} -#endif