Commit Graph

55 Commits

Author SHA1 Message Date
Lew Rossman
ee9313aa24 Update hydraul.c 2025-04-19 14:39:12 -04:00
Lew Rossman
47b474ff4c Update hydraul.c 2025-04-19 14:14:58 -04:00
Lew Rossman
30c20770b3 InitSetting added to Link struct
Addresses issue #823.
2025-04-19 12:54:45 -04:00
Lew Rossman
b0796f346a Adding leakage model 2024-06-26 11:15:01 -04:00
Dennis
c79f125608 Fix: pass the network pointer to freeadjlists and not the project 2024-06-04 13:49:24 +02:00
Dennis
9307913c5b Proposed Fix for Issue #789
See the comment on the Issue.
2024-05-23 10:24:29 +03:00
Lew Rossman
10d5079d75 Add EN_openX function
EN_openX allows an EPANET input file to be opened even if it has errors. This required re-arranging code, mainly in input3.c, so that default values are assigned to an object before its input line is parsed.
2023-10-04 09:53:05 -04:00
Sam Hatchett
d0ab568a5d using int/bool convention instead of new enum type 2023-09-13 09:14:57 -04:00
Sam Hatchett
06a43cdb4e adds api support for enabling/disabling controls and rules 2023-09-12 14:51:44 -04:00
0tkl
b860f9b16f add a default value to controlIndex 2023-08-09 15:38:41 +08:00
Sam Hatchett
2705f8adc1 Merge branch 'dev' into 681-request-additional-api-function-for-getting-finer-grained-time-step-information 2023-01-19 11:52:18 -05:00
Lew Rossman
6db17193f5 New positional control valve added 2022-08-16 11:47:44 -04:00
Sam Hatchett
5f8ee49fd6 adds an API function to get information about upcoming events 2022-07-27 14:18:50 -04:00
Lew Rossman
dbd3f6387d Fixes possible integer overflow
Fixes a possible integer overflow when computing time for a tank to fill/empty (issue #666 ). Also fixes issue #642 that failed to set a pump's initial setting to 0 when its initial status was CLOSED.
2022-03-19 13:25:55 -04:00
Lew Rossman
afda609223 Adds get/set for default demand pattern to toolkit 2022-01-14 08:50:33 -05:00
Lew Rossman
854abdf5d2 Update hydraul.c
Fixes a bug that was adding time on-line to a closed pump's energy usage for the time step just prior to when a rule-based control re-opens it.
2020-12-09 20:26:13 -05:00
Lew Rossman
bca3b99b88 Fixes error in energy usage for tank pumps 2020-09-20 19:37:15 -04:00
Lew Rossman
67f7d8f76b Merge branch 'dev' into dev_2.3 2020-07-10 14:36:46 -04:00
Corey McNeish
ee5e910454 Alloc, free persistent parts of Hydraul in allocdata, rather than in allocmatrix 2020-04-11 11:33:37 -07:00
Lew Rossman
80f9acfe4d Network building enhancements 2020-02-04 10:01:23 -05:00
Lew Rossman
d05ea20c9a Fixes problem with re-opening const. HP pumps
See latest comments in issue #528. Also, the setlinkflow() function was deleted as it was never called anywhere.
2019-12-05 10:16:12 -05:00
Lew Rossman
b640a8685c Adds EN_getresultindex function to the API
See issue #546 . Also fixes a small bug in project.c.
2019-10-26 11:25:09 -04:00
Lew Rossman
a89f339525 PDA fixes 2019-07-22 09:50:41 -04:00
Lew Rossman
c9b836973e Removes _DEBUG directives from all source files
This commit removes the #ifdef _DEBUG statements at the top of all source code files per issue #482. It also updates the doc files to stress that the speedup observed for hydraulic analysis with the MMD node re-ordering method only applies to single period runs.
2019-05-13 23:49:19 -04:00
Lew Rossman
365ab00dcb Refactors the API's demand editing functions 2019-05-09 10:26:40 -04:00
Michael Tryby
bf519fdd94 Work in progress
Fixing problems when demand lists are null
2019-04-18 14:24:30 -04:00
Michael Tryby
109276e379 Work in progress
Implementing generic demand pattern lists. Compiles but does not run.
2019-04-17 17:24:34 -04:00
Michael Tryby
84bf6f98d0 Cleaning up include statements adding crtdbg.h 2019-04-03 15:55:23 -04:00
Lew Rossman
3ce0361c1d Network validity checks added to openhyd()
Checks on illegal valve connections made whenever API creates a new link, changes its end nodes, or changes its type.
2018-12-20 08:36:05 -05:00
Lew Rossman
9a540cc0f4 Code cleanup
1. Added a standard header to each code module and removed obsolete comments.
2. Re-named several of the sub-structs in the project struct and re-arranged some of their contents.
3. Re-named _defaultModel to _defaultProject.
4. Removed the need to call EN_createproject and EN_deleteproject when working with the default project.
5. Made X & Y coords. part of Snode properties instead of a separate struct.
6. Moved the non-API functions in epanet.c into a new module named project.c.
7. Re-factored the quality module so that it uses the same nodal adjacency lists as the hydraulics solver.
8. Re-factored the sparse matrix module (smatrix.c) to be more memory efficient.
9. Restricted line lengths to < 90 columns.
10. Grouped the placement of functions in EPANET2.H and EPANET.C by category.
2018-11-27 14:22:06 -05:00
Lew Rossman
7443cea9d4 Fixes #172 (adjust controls when node/link is deleted) & EN_addrule added
- Deleting controls with node/link deletion made conditional.
- New EN_addrule function added along with a test file.
- Rule structures re-named & rules.c heavily modified.
- Issue with exceeding limit on number of temporary file names fixed.
- VB declaration and DEF files updated.
2018-11-07 23:09:47 -05:00
Lew Rossman
7c021cf533 Fixed water quality mass balance issue (#160) 2018-10-09 12:53:20 -04:00
Lew Rossman
b5e3986e6b Pressure Dependent Demands added to address issue 163 2018-08-09 10:42:47 -04:00
Lew Rossman
e9303de078 Fixes to implement issue #161 2018-06-19 10:30:02 -04:00
Lew Rossman
b3ab8ea2c7 Addresses issue #161
Adds new options HEADERROR and FLOWCHANGE to provide more rigorous criteria for hydraulic convergence. Also breaks HYDRAUL.C into 3 separate files to improve code readability.
2018-06-16 11:02:18 -04:00
Lew Rossman
24d6b91607 Changes to get Net1.inp to run 2018-05-22 11:12:14 -04:00
Sam Hatchett
f97d837231 Feature wrapper (#136)
this quite sizable commit does several things, but is primarily
focussed on building a toolkit that can run simultaneous
simulations/analyses within a shared memory space. Versions <=2.1 use a
long list of global variables that prevent multiple instantiations on
linux systems without resorting to compilation tricks (like duplicate
binaries or similar via static linkage). This version uses a single "Project" pointer to encapsulate
the network and analysis data. There are no changes to existing algo
implementations other than to accomodate dereferencing of the passed-in
pointers. A more detailed list of major changes below:

- mirrors all “ENxxxx” function calls with “EN_xxxx” versions (note the
underscore) that take an extra first parameter: a pointer to an
EN_Project struct, which contains all network, hydraulic, quality, and
associated data.
- tweaks some code formatting to make it more readable
- removes some deprecated/commented code that was sufficiently old
- fixes implicit type-cast warnings

* Added ENaddnode and ENaddlink functions

* More memory reallocations

* Added ENInit, ENsetheadcurveindex

* Added ENdeletelink and ENdeletenode

* restored default behavior for float types

* fixed type

* Added docstrings for ENinit

* cleanup change

* moves global rule variables to vars.h

* migrates rule structs to typedefs

for better readability

* char types to proper enums

fixes #93

* Change some variable declarations for compatibility

Changes to keep compatibility with C89 compilers: variables must be
declared at the top of the functions. Remove the use of EN_LinkType in
function call as it is not compatible with ENgetnodetype.

* Moved declaration of idstodelete to top of function

* Updated ENinit function and headers

Updated header files with new functions
Updated def file with new functions
For ENinit changes names of parameters #98
Added enum for headloss formula

* Missed these files in 1a033fc

* migrates char types to enums fixes #93,

supports unified link/node type enums, rather than public/private
redefinitions

* removing links in reverse-index order maintains proper indexing fixes #96

* style

* clarifies curve getter units issue (dox)

closes #95

* fixes link/node confusion in ENsetlinktype

partially reverts a3bce95dc330a5a297634a303d438e2e1bc41cc9

* partial compilation fix

* fixes dox issue

* fixes allocation issues with enums

- updates style in various places
- introduces FlowDirection enum
- use snprintf to prevent overflow

* fixes enum type cast

* updated mac project settings

* Use of _snprintf on Windows and remove DLLEXPORT from mempool.h

snprintf it not compatible on Windows so we use _snprintf
mempool gave starnge compilation errors while removing DLLEXPORT worked.
Not sure why these functions needed to be exposed in the DLL?

* Revert "Use of _snprintf on Windows and remove DLLEXPORT from mempool.h"

This reverts commit 6238f77d47fa0feaabe5836043c006937de433a2.

* use of _snprintf instead of snprintf on Windows and removed DLLEXPORT from mempool.h

Had compilation errors on mempool.h. Removed DLLEXPORT so solve it. Not
sure why there was a need to expose these functions?

* Shift indices for Links in ENaddnode

Need to shift indices for Links not just Pipes since a pump could be
connected directly to a reservoir. Also set the defult base demand to
zero (was 5).

* Set defualts for madatory link properties in ENaddlink and small fix for ENsetheadcurveindex

Relates to #102 and closes #103

* wraps globals into structs, duplicates api functions with objective versions



* parse and serialize Comment field for network elements

related to #47

* adds getter for head/efficiency curve

in EN_getlinkvalue

* adds getter for event node index

… to return the index of the junction (tank) that triggered the event.

* fixes edge case in parsing

… where inp files without demands in [JUNCTIONS] and without any
[DEMAND] categories will fail.

* adds freeing function for project pointer

* removes redundant string literals, fixes overrun issue in error message getter function

* check for hydraulics already closed

* moving error definitions to data file

* deprecates ENR err message getter (unused)

* updates location of errors data file

also begins to expose blind structs to curves and patterns,
anticipating buildout of APIs for those.

* updates CLI output to reflect executable name as invoked

relates to #109

* Feature nrtest (#131)

* Initial commit EPANET testing tools.

* Initial commit for epanet-nrtestsuite

* SWIG wrapper for EPANET outputapi (#118)

* Removed pervious version of outputapi and wrapper

* SWIG wrapper for EPANET outputapi

* Patching cmake build script fixed target for outputapi

* Build failing on deprecated test script

* Minor changes. Responding to review comments.

* Feature nrtest (#121)

* Configured python setup to automatically build nrtest tools.

* Working on build / testing automation

* Adding EPANET 2.0.12 benchmark

* Updated Travis yml to run nrtest

* Fixing InsecurePlatformWarning

* Fixing InsecurePlatformWarning again

* Fixing InsecurePlatformWarning

* Fixing InsecurePlatformWarning

* Fixing InsecurePlatformWarning

* Update .travis.yml

* Update .travis.yml

* Update .travis.yml

* Update .travis.yml

* Working on configuring python environment and building test tools under Travis CI.

* Making gen-config.sh and run-nrtest.sh executable

* Debugging .travis.yml

* Debugging .travis.yml

* Debugging .travis.yml again

* Debugging .travis.yml again

* debugging travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* debugging Travis setup

* Fixing bug with __strncpy_chk destlen < len

* nrtesting clean up

* re-implements fixes from:

5eead5ae40
3c788567a4

* removes extraneous build files, moves cmake and updates travis

* mirror of 9b37035560f9683f1514b439f7586a5c17bca5bf

* Move some variable declarations

* More variable declarations

* Fix TmpDir

* Allocate _defaultModel

* Fix EN_addcurve funcrion

* Fix for inpfile

* Fix writeRuleinInp call

* Set MAXMSG to 79 chars

* Fix for flow direction

* Refactoring testing related python packages and SWIG wrapper bug fix (#139)

* Eliminated epanet-reader package. Removed numpy dependency from epanet-output. Fixed reference counting bug in SWIG wrapper. Added error checking to run_nrtest.sh. Added nrtest package to requirements file.

* changing buildhome directory

* Fixing bug related to preprocessor definition of PI
2018-01-09 16:56:42 -05:00
AngelaMarchi
1d071d19ba VSP efficiency + retrieving efficiency directly (#81)
* VSP efficiency + retrieving efficiency directly

Changes to the getenergy function (in hydraulic.c) to compute the
correct efficiency of variable speed pumps according to the affinity
laws.
Changes to epanet2.h and epanet.c are for retrieving the efficiency of
pumps throught the ENgetlinkvalue function (code 16 for efficiency)

* Update epanet.c

* VSP efficiency (incl. bas and vb file)

- bas and vb file have been updated with code 16 for efficiency.
- Retrieving efficiency case has been improved.
2016-09-09 09:57:16 -07:00
Sam Hatchett
10a5ae4cf6 updated some variable names to make the code a bit more self-documenting 2013-09-30 16:28:12 -04:00
Sam Hatchett
e7f6a8a085 fixed the getstatistic api call -- should return floattype by ref 2013-07-23 14:56:12 -04:00
Sam Hatchett
ba82aee97d Merge branch 'rtx-1.1-lib-mods' into lemontiger-rtx
Conflicts:
	build/Xcode/epanet/epanet.xcodeproj/project.pbxproj
	include/epanet2.h
	src/epanet.c
	src/hydraul.c
	src/quality.c
	src/toolkit.h
	src/types.h
	src/vars.h
2013-07-19 13:27:26 -04:00
sam hatchett
434d78c6ed Lemon Tiger changes 2013-05-23 19:36:03 -04:00
sam hatchett
bd62f399f9 fake data was being written to the binary file. if a link element is nominally closed, even if there's actually flow calculated there, the flow is disregarded upon writing results. so when the flow is read back in, it's zero -- which is different than it would have been if it had stayed in memory. i wonder what that does to mass balance?
this version works, at least with Net3, simplenet, and SampleTown -- but the results are non-canonical, as the current workaround for the issue above writes tiny flow values to the binary file for closed elements. presumably we should check for closed status in the transport() function.
2013-03-09 09:46:12 -05:00
sam hatchett
b4164f56b4 more stepwise mods 2013-02-04 21:17:58 -05:00
JinduanChen
9f8dcadb58 Solved the tank level issue. LemonTigerJ now gives right hyd/WQ results. 2013-01-24 00:48:19 -05:00
JinduanChen
2e22456896 Set up the environment for building with VS 2012 2013-01-22 11:27:12 -05:00
Sam Hatchett
f8e843d584 adding rtx modifications
- get volume curves
- get relative error / n iterations from last solution
- get more tank characteristics
- modify sim duration during active simulation
2013-01-08 12:41:48 -05:00
Tom Taxon
3336c4119c All files in this commit: Added ifdef for Apple compilation - it does not have a malloc.h include file.
epanet.c
reset file variables to NULL so if the code is executed again without termination, the variables will be in a valid initial state.

Added retrieval of EN_STARTTIME to ENgettimeparam.
Added retrieval of EN_TANKVOLUME to ENgetnodevalue
Added retrieval of EN_LINKQUAL to ENgetlinkvalue
Fixed the check for identical filenames so it now allows for an empty (not generated) report file and outfile.
Added ENgetbasedemand and ENgetdemandpattern functions

input2.c
Fixed some compiler warnings


git-svn-id: https://epanet.svn.sourceforge.net/svnroot/epanet/BASE/trunk@424 c320cabd-cc23-0410-96d8-e60fbf53ed7f
2011-12-06 18:25:02 +00:00
Sam Hatchett
80b484df16 roll back to known version. i messed this up unintentionally with a previous commit
git-svn-id: https://epanet.svn.sourceforge.net/svnroot/epanet/BASE/trunk@377 c320cabd-cc23-0410-96d8-e60fbf53ed7f
2011-01-12 18:24:05 +00:00
Sam Hatchett
e0b9ee5feb changed old RTX to "KF-DAL", the Kalman Filter Demand Allocation Library
git-svn-id: https://epanet.svn.sourceforge.net/svnroot/epanet/BASE/trunk@348 c320cabd-cc23-0410-96d8-e60fbf53ed7f
2010-07-28 14:40:30 +00:00