From 3f515e7ad49c92b4c82fe5ea3a5ef47ad55675c1 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 19 Apr 2020 09:42:43 +0300 Subject: [PATCH 1/4] Fix EN_settankdata for elevation with SI units Fix #593 --- src/epanet.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index dd6348b..1464e7a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2666,11 +2666,11 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, else area = PI * diam * diam / 4.0; // Assign parameters to tank object - net->Node[Tank[j].Node].El = elevation; + net->Node[Tank[j].Node].El = elevation / Ucf[ELEV]; Tank[j].A = area / Ucf[ELEV] / Ucf[ELEV]; - Tank[j].H0 = elevation + initlvl / Ucf[ELEV]; - Tank[j].Hmin = elevation + minlvl / Ucf[ELEV]; - Tank[j].Hmax = elevation + maxlvl / Ucf[ELEV]; + Tank[j].H0 = (elevation + initlvl) / Ucf[ELEV]; + Tank[j].Hmin = (elevation + minlvl) / Ucf[ELEV]; + Tank[j].Hmax = (elevation + maxlvl) / Ucf[ELEV]; Tank[j].Vcurve = curveIndex; if (curveIndex == 0) { From 99f09f1edb8241a4d77e6b84dde66342f9fd64ee Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 19 Apr 2020 09:16:08 -0400 Subject: [PATCH 2/4] A simpler fix to EN_settankdata Changes 1 line instead of 4. --- src/epanet.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 1464e7a..0179b7e 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2628,7 +2628,7 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, Network *net = &p->network; int i, j, n, curveIndex = 0; - double area, elevation = elev; + double area, elevation = elev / Ucf[ELEV]; double *Ucf = p->Ucf; Stank *Tank = net->Tank; Scurve *curve; @@ -2666,11 +2666,11 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, else area = PI * diam * diam / 4.0; // Assign parameters to tank object - net->Node[Tank[j].Node].El = elevation / Ucf[ELEV]; + net->Node[Tank[j].Node].El = elevation; Tank[j].A = area / Ucf[ELEV] / Ucf[ELEV]; - Tank[j].H0 = (elevation + initlvl) / Ucf[ELEV]; - Tank[j].Hmin = (elevation + minlvl) / Ucf[ELEV]; - Tank[j].Hmax = (elevation + maxlvl) / Ucf[ELEV]; + Tank[j].H0 = elevation + initlvl / Ucf[ELEV]; + Tank[j].Hmin = elevation + minlvl / Ucf[ELEV]; + Tank[j].Hmax = elevation + maxlvl / Ucf[ELEV]; Tank[j].Vcurve = curveIndex; if (curveIndex == 0) { From 37a58a467cc9033b3018e320322d5be0de29e4bf Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 19 Apr 2020 09:25:36 -0400 Subject: [PATCH 3/4] Update epanet.c --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 0179b7e..8e5f183 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2628,8 +2628,8 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, Network *net = &p->network; int i, j, n, curveIndex = 0; - double area, elevation = elev / Ucf[ELEV]; double *Ucf = p->Ucf; + double area, elevation = elev / Ucf[ELEV]; Stank *Tank = net->Tank; Scurve *curve; From 37342c70b11d1413bad312d9cfbc0c657f973dcf Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 19 Apr 2020 18:05:08 +0300 Subject: [PATCH 4/4] Another option for EN_settankdata fix --- src/epanet.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 8e5f183..46e7211 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2629,7 +2629,7 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, int i, j, n, curveIndex = 0; double *Ucf = p->Ucf; - double area, elevation = elev / Ucf[ELEV]; + double area; Stank *Tank = net->Tank; Scurve *curve; @@ -2666,11 +2666,11 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, else area = PI * diam * diam / 4.0; // Assign parameters to tank object - net->Node[Tank[j].Node].El = elevation; + net->Node[Tank[j].Node].El = elev / Ucf[ELEV]; Tank[j].A = area / Ucf[ELEV] / Ucf[ELEV]; - Tank[j].H0 = elevation + initlvl / Ucf[ELEV]; - Tank[j].Hmin = elevation + minlvl / Ucf[ELEV]; - Tank[j].Hmax = elevation + maxlvl / Ucf[ELEV]; + Tank[j].H0 = (elev + initlvl) / Ucf[ELEV]; + Tank[j].Hmin = (elev + minlvl) / Ucf[ELEV]; + Tank[j].Hmax = (elev + maxlvl) / Ucf[ELEV]; Tank[j].Vcurve = curveIndex; if (curveIndex == 0) {