diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index e7de309..ea5e96d 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -53,4 +53,5 @@ This document describes the changes and updates that have been made in version 2 - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. - Continuous barrier functions were added to constrain emitter flows to allowable values. - The `EN_openx` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. -- The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. \ No newline at end of file +- The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. +- Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. diff --git a/src/epanet.c b/src/epanet.c index 8844cd5..8583c14 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2449,6 +2449,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu if (value < 0.0) return 209; if (value > 0.0) value = pow((Ucf[FLOW] / value), hyd->Qexp) / Ucf[PRESSURE]; Node[index].Ke = value; + if (hyd->EmitterFlow[index] == 0.0) hyd->EmitterFlow[index] = 1.0; break; case EN_INITQUAL: @@ -3428,6 +3429,12 @@ int DLLEXPORT EN_deletelink(EN_Project p, int index, int actionCode) if (net->Valve[i].Link > index) net->Valve[i].Link -= 1; } + // Reduce the number of pipes count by one if it is a pipe. + if (linkType == PIPE) + { + net->Npipes--; + } + // Delete any pump associated with the deleted link if (linkType == PUMP) { diff --git a/src/hydraul.c b/src/hydraul.c index 7d1718b..36c746e 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -286,6 +286,7 @@ void closehyd(Project *pr) { freesparse(pr); freematrix(pr); + freeadjlists(pr); } diff --git a/src/inpfile.c b/src/inpfile.c index e23284d..b2d82d0 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET -Version: 2.2 +Version: 2.3 Module: inpfile.c Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 04/30/2023 +Last Updated: 05/11/2024 ****************************************************************************** */ @@ -682,7 +682,7 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n PATTERN %s", net->Pattern[hyd->DefPat].ID); fprintf(f, "\n DEMAND MULTIPLIER %-.4f", hyd->Dmult); fprintf(f, "\n EMITTER EXPONENT %-.4f", 1.0 / hyd->Qexp); - fprintf(f, "\n EMITTER BACKFLOW %s", BackflowTxt[hyd->EmitBackFlag]); + fprintf(f, "\n BACKFLOW ALLOWED %s", BackflowTxt[hyd->EmitBackFlag]); fprintf(f, "\n VISCOSITY %-.6f", hyd->Viscos / VISCOS); fprintf(f, "\n DIFFUSIVITY %-.6f", qual->Diffus / DIFFUS); fprintf(f, "\n SPECIFIC GRAVITY %-.6f", hyd->SpGrav); diff --git a/src/input3.c b/src/input3.c index 8c10c10..1d4f03a 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 09/28/2023 +Last Updated: 05/11/2024 ****************************************************************************** */ @@ -1832,7 +1832,7 @@ int optionchoice(Project *pr, int n) ** UNBALANCED STOP/CONTINUE {Niter} ** PATTERN id ** DEMAND MODEL DDA/PDA -** EMITTER BACKFLOW YES/NO +** BACKFLOW ALLOWED YES/NO **-------------------------------------------------------------- */ { @@ -1956,11 +1956,11 @@ int optionchoice(Project *pr, int n) hyd->DemandModel = choice; } - // EMITTER BACKFLOW - else if (match(parser->Tok[0], w_EMITTER)) + // Emitter BACKFLOW ALLOWED + else if (match(parser->Tok[0], w_BACKFLOW)) { if (n < 2) return 0; - if (!match(parser->Tok[1], w_BACKFLOW)) return -1; + if (!match(parser->Tok[1], w_ALLOWED)) return -1; choice = findmatch(parser->Tok[2], BackflowTxt); if (choice < 0) return setError(parser, 2, 213); hyd->EmitBackFlag = choice; diff --git a/src/quality.c b/src/quality.c index 41869fe..2b8ccb6 100644 --- a/src/quality.c +++ b/src/quality.c @@ -410,6 +410,7 @@ int closequal(Project *pr) FREE(qual->FlowDir); FREE(qual->SortedNodes); } + freeadjlists(pr); return errcode; } diff --git a/src/text.h b/src/text.h index 3f3b50a..1a78573 100755 --- a/src/text.h +++ b/src/text.h @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: text.h Description: string constants used throughout EPANET Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 05/11/2024 ****************************************************************************** */ @@ -130,6 +130,7 @@ #define w_TOLERANCE "TOLER" #define w_EMITTER "EMIT" #define w_BACKFLOW "BACK" +#define w_ALLOWED "ALLOW" #define w_PRICE "PRICE" #define w_DMNDCHARGE "DEMAN"