From bcd6877935c33a5e8750084100defd452b86b939 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Wed, 29 Aug 2018 22:26:32 +0300 Subject: [PATCH 1/2] Add legacy ENinit API Closes #232 --- src/epanet.c | 14 +++++++++++--- win_build/WinSDK/epanet2.def | 3 ++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 95d99c9..9943d16 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -185,6 +185,14 @@ int DLLEXPORT ENepanet(const char *f1, const char *f2, const char *f3, void (*pv return (errcode); } +int DLLEXPORT ENinit(char *f2, char *f3, int UnitsType, + int HeadlossFormula) { + int errcode = 0; + ERRCODE(EN_createproject(&_defaultModel)); + ERRCODE(EN_init(_defaultModel, f2, f3, UnitsType, HeadlossFormula)); + return (errcode); +} + int DLLEXPORT ENopen(char *f1, char *f2, char *f3) { int errcode = 0; ERRCODE(EN_createproject(&_defaultModel)); @@ -602,7 +610,7 @@ int DLLEXPORT EN_deleteproject(EN_ProjectHandle *ph) } -int DLLEXPORT EN_init(EN_ProjectHandle *ph, char *f2, char *f3, +int DLLEXPORT EN_init(EN_ProjectHandle ph, char *f2, char *f3, EN_FlowUnits UnitsType, EN_FormType HeadlossFormula) /*---------------------------------------------------------------- ** Input: @@ -623,7 +631,7 @@ int DLLEXPORT EN_init(EN_ProjectHandle *ph, char *f2, char *f3, _fpreset(); #endif - EN_Project *pr = (EN_Project*)*ph; + EN_Project *pr = (EN_Project*)ph; /* Set system flags */ pr->Openflag = TRUE; @@ -3643,7 +3651,7 @@ int DLLEXPORT EN_setheadcurveindex(EN_ProjectHandle ph, int index, int curveinde double *Ucf = p->Ucf; int pIdx; Spump *pump; - + if (!p->Openflag) return set_error(p->error_handle, 102); if (index < 1 || index > Nlinks || EN_PUMP != Link[index].Type) { diff --git a/win_build/WinSDK/epanet2.def b/win_build/WinSDK/epanet2.def index 46c82c2..0dcdfc3 100644 --- a/win_build/WinSDK/epanet2.def +++ b/win_build/WinSDK/epanet2.def @@ -67,6 +67,7 @@ EXPORTS ENsetbasedemand = _ENsetbasedemand@12 ENgetaveragepatternvalue = _ENgetaveragepatternvalue@8 ENgetheadcurveindex = _ENgetheadcurveindex@8 + ENsetheadcurveindex = _ENsetheadcurveindex@8 ENgetpumptype = _ENgetpumptype@8 ENgetcurveindex = _ENgetcurveindex@8 ENgetcurveid = _ENgetcurveid@8 @@ -96,4 +97,4 @@ EXPORTS ENgetdemandmodel = _ENgetdemandmodel@16 ENsetdemandmodel = _ENsetdemandmodel@16 ENgetcurvetype = _ENgetcurvetype@8 - + ENinit = _ENinit@16 \ No newline at end of file From dbdafd6352d2e5f2fda7fabe17a2944ffa6df1e0 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Wed, 29 Aug 2018 22:31:28 +0300 Subject: [PATCH 2/2] Set status for new links in EN_addlink Status is OPEN for pumps\pipes\CV and ACTIVE for valves. Closes #173 --- src/epanet.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 9943d16..dbcf3f8 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4806,6 +4806,7 @@ int DLLEXPORT EN_addlink(EN_ProjectHandle ph, char *id, EN_LinkType linkType, ch link->Type = linkType; link->N1 = N1; link->N2 = N2; + link->Stat = OPEN; if (linkType == EN_PUMP) { link->Kc = 1.0; // Speed factor @@ -4821,23 +4822,14 @@ int DLLEXPORT EN_addlink(EN_ProjectHandle ph, char *id, EN_LinkType linkType, ch link->Kc = 0.0; // Valve setting. link->Km = 0.0; // Loss coeff link->Len = 0.0; + link->Stat = ACTIVE; } - // link->Len = 0.0; - // link->Kc = 0.01; - // link->Km = 0; link->Kb = 0; link->Kw = 0; link->R = 0; link->Rc = 0; link->Rpt = 0; - if (linkType == EN_CVPIPE) { - link->Stat = OPEN; - } - else { - link->Stat = CLOSED; - } - ENHashTableInsert(net->LinkHashTable, link->ID, n); return set_error(p->error_handle, 0); }