remove old files
This commit is contained in:
@@ -1,332 +0,0 @@
|
||||
#include <map>
|
||||
#include <iomanip>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#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<int, nodeState_t> networkNodeState_t; // nodeIndex, state
|
||||
typedef map<int, linkState_t> networkLinkState_t; // linkIndex, state
|
||||
|
||||
typedef struct {
|
||||
networkNodeState_t nodeState;
|
||||
networkLinkState_t linkState;
|
||||
} networkState_t;
|
||||
typedef map<long, networkState_t> 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;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
//
|
||||
// testLemonTiger.h
|
||||
// epanet
|
||||
//
|
||||
// Created by Sam Hatchett on 2/1/13.
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef __epanet__testLemonTiger__
|
||||
#define __epanet__testLemonTiger__
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
#endif /* defined(__epanet__testLemonTiger__) */
|
||||
255
src/toolkit.h
255
src/toolkit.h
@@ -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
|
||||
Reference in New Issue
Block a user