Files
EPANET/include/epanet2.h
Sam Hatchett b139684164 fixes non-camelcase convention
and adds rich corinthian vintage-style (projectless) function declarations
2022-08-08 11:58:09 -04:00

440 lines
14 KiB
C

/*
******************************************************************************
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: 02/01/2020
******************************************************************************
*/
/*
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);
int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, char*));
int DLLEXPORT ENsetreportcallbackuserdata(void *userData);
/********************************************************************
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 ENsetvertex(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 ENsetcurvetype(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