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.
If you create a simple control with nine or more input tokens, the logic skips over assigning the hour variable and EPANET will activate the control at hour zero.
Ignores errors when reading node & link vertex coordinates from an input file. Also when saving a project to an input file, the [DEMANDS] section only includes non-zero demands.
See issues #603 and #174 .
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.
The copying of one input line token over another was causing a compilation error under Clang. With v2.2 this copying is no longer needed so the line of code in question was simply deleted.
This commit also deletes the HTML and Latex output generated by running Doxygen that got added from the previous update to dev since they don't really belong in a source code repo.
* co-authored with @ehsan-shafiee
* removes errant slashes
* Throws correct error for ID name too long
* Revert "Throws correct error for ID name too long"
This reverts commit 57b4873f5882cb9fd983f7e1e5a703b9e442cd74.
* fixes#534 by bubbling error codes up from add node/link internal functions
* fixes tests on Mac at least
* fixes improper success code
* Error 252 (not 250) returned for ID name too long.
From errors.dat: DAT(252,"invalid ID name")
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.
In addition to addressing compiler warnings, argument names in the API function prototypes were made more consistent and descriptive. Also additional Doxygen comments were added in preparation for producing a more thorough documentation of the API.
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.
- 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.
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.
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:
5eead5ae403c788567a4
* 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
Added a flag which controls the loading of coordinates at epanet.c line
213.
When set to TRUE coordinates are loaded and users can use the ENgetcoord
and ENsetcoord functions. Changes are then saved when ENsaveinpfile is
called.
When set to FALSE coordinates are not loaded and can't be retrieved or
changed. When saved, the COORD section is copied from the original INP
file.