/*
|
******************************************************************************
|
Project: OWA EPANET
|
Version: 2.2
|
Module: epanet2.h
|
Description: declarations of the legacy style EPANET 2 API functions
|
Authors: see AUTHORS
|
Copyright: see AUTHORS
|
License: see LICENSE
|
Last Updated: 10/29/2019
|
******************************************************************************
|
*/
|
|
/*
|
This module contains declarations of the legacy style EPANET API functions, with
|
version 2.2 updates, that apply only to single threaded applications. A second
|
set of thread safe API functions that allows one to run concurrent analyses on
|
multiple EPANET projects can be found in the epanet2_2.h header file. The two
|
APIs share the same function names and arguments with the difference being that
|
the thread safe functions use the prefix "EN_" and include an extra argument that
|
represents the EPANET project being analyzed. To avoid unneccesary repetition,
|
only the thread safe API functions have been documented. To see a description of
|
a legacy style API function declared here please refer to its complementary named
|
function in epanet2_2.h.
|
*/
|
|
#ifndef EPANET2_H
|
#define EPANET2_H
|
|
// The legacy style EPANET API can be compiled with support for either single
|
// precision or double precision floating point arguments, with the default
|
// being single precision. To compile for double precision one must #define
|
// EN_API_FLOAT_TYPE as double both here and in any client code that uses the
|
// API.
|
#ifndef EN_API_FLOAT_TYPE
|
#define EN_API_FLOAT_TYPE float
|
#endif
|
|
#ifndef DLLEXPORT
|
#ifdef _WIN32
|
#ifdef epanet2_EXPORTS
|
#define DLLEXPORT __declspec(dllexport) __stdcall
|
#else
|
#define DLLEXPORT __declspec(dllimport) __stdcall
|
#endif
|
#elif defined(__CYGWIN__)
|
#define DLLEXPORT __stdcall
|
#else
|
#define DLLEXPORT
|
#endif
|
#endif
|
|
#include "epanet2_enums.h"
|
|
// --- Declare the EPANET toolkit functions
|
#if defined(__cplusplus)
|
extern "C" {
|
#endif
|
|
|
/********************************************************************
|
|
Project Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENepanet(const char *inpFile, const char *rptFile,
|
const char *outFile, void (*pviewprog) (char *));
|
|
int DLLEXPORT ENinit(const char *rptFile, const char *outFile,
|
int unitsType, int headlossType);
|
|
int DLLEXPORT ENopen(const char *inpFile, const char *rptFile,
|
const char *outFile);
|
|
int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3);
|
|
int DLLEXPORT ENsettitle(char *line1, char *line2, char *line3);
|
|
int DLLEXPORT ENgetcomment(int object, int index, char *comment);
|
|
int DLLEXPORT ENsetcomment(int object, int index, char *comment);
|
|
int DLLEXPORT ENgetcount(int object, int *count);
|
|
int DLLEXPORT ENsaveinpfile(const char *filename);
|
|
int DLLEXPORT ENclose();
|
|
/********************************************************************
|
|
Hydraulic Analysis Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENsolveH();
|
|
int DLLEXPORT ENsaveH();
|
|
int DLLEXPORT ENopenH();
|
|
int DLLEXPORT ENinitH(int initFlag);
|
|
int DLLEXPORT ENrunH(long *currentTime);
|
|
int DLLEXPORT ENnextH(long *tStep);
|
|
int DLLEXPORT ENcloseH();
|
|
int DLLEXPORT ENsavehydfile(char *filename);
|
|
int DLLEXPORT ENusehydfile(char *filename);
|
|
/********************************************************************
|
|
Water Quality Analysis Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENsolveQ();
|
|
int DLLEXPORT ENopenQ();
|
|
int DLLEXPORT ENinitQ(int saveFlag);
|
|
int DLLEXPORT ENrunQ(long *currentTime);
|
|
int DLLEXPORT ENnextQ(long *tStep);
|
|
int DLLEXPORT ENstepQ(long *timeLeft);
|
|
int DLLEXPORT ENcloseQ();
|
|
/********************************************************************
|
|
Reporting Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENwriteline(char *line);
|
|
int DLLEXPORT ENreport();
|
|
int DLLEXPORT ENcopyreport(char *filename);
|
|
int DLLEXPORT ENclearreport();
|
|
int DLLEXPORT ENresetreport();
|
|
int DLLEXPORT ENsetreport(char *format);
|
|
int DLLEXPORT ENsetstatusreport(int level);
|
|
int DLLEXPORT ENgetversion(int *version);
|
|
int DLLEXPORT ENgeterror(int errcode, char *errmsg, int maxLen);
|
|
int DLLEXPORT ENgetstatistic(int type, EN_API_FLOAT_TYPE* value);
|
|
int DLLEXPORT ENgetresultindex(int type, int index, int *value);
|
|
/********************************************************************
|
|
Analysis Options Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENgetoption(int option, EN_API_FLOAT_TYPE *value);
|
|
int DLLEXPORT ENsetoption(int option, EN_API_FLOAT_TYPE value);
|
|
int DLLEXPORT ENgetflowunits(int *units);
|
|
int DLLEXPORT ENsetflowunits(int units);
|
|
int DLLEXPORT ENgettimeparam(int param, long *value);
|
|
int DLLEXPORT ENsettimeparam(int param, long value);
|
|
int DLLEXPORT ENgetqualinfo(int *qualType, char *chemName, char *chemUnits,
|
int *traceNode);
|
|
int DLLEXPORT ENgetqualtype(int *qualType, int *traceNode);
|
|
int DLLEXPORT ENsetqualtype(int qualType, char *chemName, char *chemUnits,
|
char *traceNode);
|
|
/********************************************************************
|
|
Node Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENaddnode(char *id, int nodeType, int *index);
|
|
int DLLEXPORT ENdeletenode(int index, int actionCode);
|
|
int DLLEXPORT ENgetnodeindex(char *id, int *index);
|
|
int DLLEXPORT ENgetnodeid(int index, char *id);
|
|
int DLLEXPORT ENsetnodeid(int index, char *newid);
|
|
int DLLEXPORT ENgetnodetype(int index, int *nodeType);
|
|
int DLLEXPORT ENgetnodevalue(int index, int property, EN_API_FLOAT_TYPE *value);
|
|
int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value);
|
|
int DLLEXPORT ENsetjuncdata(int index, EN_API_FLOAT_TYPE elev,
|
EN_API_FLOAT_TYPE dmnd, char *dmndpat);
|
|
int DLLEXPORT ENsettankdata(int index, EN_API_FLOAT_TYPE elev,
|
EN_API_FLOAT_TYPE initlvl, EN_API_FLOAT_TYPE minlvl,
|
EN_API_FLOAT_TYPE maxlvl, EN_API_FLOAT_TYPE diam,
|
EN_API_FLOAT_TYPE minvol, char *volcurve);
|
|
int DLLEXPORT ENgetcoord(int index, double *x, double *y);
|
|
int DLLEXPORT ENsetcoord(int index, double x, double y);
|
|
/********************************************************************
|
|
Nodal Demand Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENgetdemandmodel(int *model, EN_API_FLOAT_TYPE *pmin,
|
EN_API_FLOAT_TYPE *preq, EN_API_FLOAT_TYPE *pexp);
|
|
int DLLEXPORT ENsetdemandmodel(int model, EN_API_FLOAT_TYPE pmin,
|
EN_API_FLOAT_TYPE preq, EN_API_FLOAT_TYPE pexp);
|
|
int DLLEXPORT ENadddemand(int nodeIndex, EN_API_FLOAT_TYPE baseDemand,
|
char *demandPattern, char *demandName);
|
|
int DLLEXPORT ENdeletedemand(int nodeIndex, int demandIndex);
|
|
int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands);
|
|
int DLLEXPORT ENgetdemandindex(int nodeIndex, char *demandName, int *demandIndex);
|
|
int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIndex,
|
EN_API_FLOAT_TYPE *baseDemand);
|
|
int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIndex,
|
EN_API_FLOAT_TYPE baseDemand);
|
|
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIndex, int *patIndex);
|
|
int DLLEXPORT ENsetdemandpattern(int nodeIndex, int demandIndex, int patIndex);
|
|
int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIndex, char *demandName);
|
|
int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, char *demandName);
|
|
/********************************************************************
|
|
Link Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENaddlink(char *id, int linkType, char *fromNode, char *toNode, int *index);
|
|
int DLLEXPORT ENdeletelink(int index, int actionCode);
|
|
int DLLEXPORT ENgetlinkindex(char *id, int *index);
|
|
int DLLEXPORT ENgetlinkid(int index, char *id);
|
|
int DLLEXPORT ENsetlinkid(int index, char *newid);
|
|
int DLLEXPORT ENgetlinktype(int index, int *linkType);
|
|
int DLLEXPORT ENsetlinktype(int *index, int linkType, int actionCode);
|
|
int DLLEXPORT ENgetlinknodes(int index, int *node1, int *node2);
|
|
int DLLEXPORT ENsetlinknodes(int index, int node1, int node2);
|
|
int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value);
|
|
int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value);
|
|
int DLLEXPORT ENsetpipedata(int index, EN_API_FLOAT_TYPE length,
|
EN_API_FLOAT_TYPE diam, EN_API_FLOAT_TYPE rough,
|
EN_API_FLOAT_TYPE mloss);
|
|
int DLLEXPORT ENgetvertexcount(int index, int *count);
|
|
int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y);
|
|
int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count);
|
|
/********************************************************************
|
|
Pump Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENgetpumptype(int linkIndex, int *pumpType);
|
|
int DLLEXPORT ENgetheadcurveindex(int linkIndex, int *curveIndex);
|
|
int DLLEXPORT ENsetheadcurveindex(int linkIndex, int curveIndex);
|
|
/********************************************************************
|
|
Time Pattern Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENaddpattern(char *id);
|
|
int DLLEXPORT ENdeletepattern(int index);
|
|
int DLLEXPORT ENgetpatternindex(char *id, int *index);
|
|
int DLLEXPORT ENgetpatternid(int index, char *id);
|
|
int DLLEXPORT ENsetpatternid(int index, char *id);
|
|
int DLLEXPORT ENgetpatternlen(int index, int *len);
|
|
int DLLEXPORT ENgetpatternvalue(int index, int period, EN_API_FLOAT_TYPE *value);
|
|
int DLLEXPORT ENsetpatternvalue(int index, int period, EN_API_FLOAT_TYPE value);
|
|
int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value);
|
|
int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *values, int len);
|
|
/********************************************************************
|
|
Data Curve Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENaddcurve(char *id);
|
|
int DLLEXPORT ENdeletecurve(int index);
|
|
int DLLEXPORT ENgetcurveindex(char *id, int *index);
|
|
int DLLEXPORT ENgetcurveid(int index, char *id);
|
|
int DLLEXPORT ENsetcurveid(int index, char *id);
|
|
int DLLEXPORT ENgetcurvelen(int index, int *len);
|
|
int DLLEXPORT ENgetcurvetype(int index, int *type);
|
|
int DLLEXPORT ENgetcurvevalue(int curveIndex, int pointIndex,
|
EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y);
|
|
int DLLEXPORT ENsetcurvevalue(int curveIndex, int pointIndex,
|
EN_API_FLOAT_TYPE x, EN_API_FLOAT_TYPE y);
|
|
int DLLEXPORT ENgetcurve(int index, char* id, int *nPoints,
|
EN_API_FLOAT_TYPE *xValues, EN_API_FLOAT_TYPE *yValues);
|
|
int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *xValues,
|
EN_API_FLOAT_TYPE *yValues, int nPoints);
|
|
/********************************************************************
|
|
Simple Controls Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENaddcontrol(int type, int linkIndex, EN_API_FLOAT_TYPE setting,
|
int nodeIndex, EN_API_FLOAT_TYPE level, int *index);
|
|
int DLLEXPORT ENdeletecontrol(int index);
|
|
int DLLEXPORT ENgetcontrol(int index, int *type, int *linkIndex,
|
EN_API_FLOAT_TYPE *setting, int *nodeIndex, EN_API_FLOAT_TYPE *level);
|
|
int DLLEXPORT ENsetcontrol(int index, int type, int linkIndex,
|
EN_API_FLOAT_TYPE setting, int nodeIndex, EN_API_FLOAT_TYPE level);
|
|
|
/********************************************************************
|
|
Rule-Based Controls Functions
|
|
********************************************************************/
|
|
int DLLEXPORT ENaddrule(char *rule);
|
|
int DLLEXPORT ENdeleterule(int index);
|
|
int DLLEXPORT ENgetrule(int index, int *nPremises, int *nThenActions,
|
int *nElseActions, EN_API_FLOAT_TYPE *priority);
|
|
int DLLEXPORT ENgetruleID(int index, char* id);
|
|
int DLLEXPORT ENgetpremise(int ruleIndex, int premiseIndex, int *logop,
|
int *object, int *objIndex, int *variable,
|
int *relop, int *status, EN_API_FLOAT_TYPE *value);
|
|
int DLLEXPORT ENsetpremise(int ruleIndex, int premiseIndex, int logop,
|
int object, int objIndex, int variable, int relop,
|
int status, EN_API_FLOAT_TYPE value);
|
|
int DLLEXPORT ENsetpremiseindex(int ruleIndex, int premiseIndex, int objIndex);
|
|
int DLLEXPORT ENsetpremisestatus(int ruleIndex, int premiseIndex, int status);
|
|
int DLLEXPORT ENsetpremisevalue(int ruleIndex, int premiseIndex,
|
EN_API_FLOAT_TYPE value);
|
|
int DLLEXPORT ENgetthenaction(int ruleIndex, int actionIndex, int *linkIndex,
|
int *status, EN_API_FLOAT_TYPE *setting);
|
|
int DLLEXPORT ENsetthenaction(int ruleIndex, int actionIndex, int linkIndex,
|
int status, EN_API_FLOAT_TYPE setting);
|
|
int DLLEXPORT ENgetelseaction(int ruleIndex, int actionIndex, int *linkIndex,
|
int *status, EN_API_FLOAT_TYPE *setting);
|
|
int DLLEXPORT ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex,
|
int status, EN_API_FLOAT_TYPE setting);
|
|
int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority);
|
|
#if defined(__cplusplus)
|
}
|
#endif
|
|
#endif //EPANET2_H
|