Commit Graph

55 Commits

Author SHA1 Message Date
Lew Rossman
365ab00dcb Refactors the API's demand editing functions 2019-05-09 10:26:40 -04:00
Michael Tryby
901a802f21 Passing open and close test 2019-04-18 16:16:02 -04:00
Michael Tryby
880bdfffba Work in progress
compiles with warnings, definitely not working
2019-04-12 18:00:36 -04:00
Lew Rossman
edcd4b69c7 Eliminates use of temporary linked lists to process Patterns & Curves (issue #449) 2019-04-05 13:02:39 -04:00
Lew Rossman
83ffc1cfc7 Removed the EN_DEFDEMANDPAT option
See issue #429. Also allowed the EN_HEADLOSSFORM option to be changed if the solver is not active.
2019-04-03 10:25:37 -04:00
Lew Rossman
18f65eb8b0 Replace fixed-sized comment strings with dynamic strings 2019-03-17 19:54:51 -04:00
Lew Rossman
0cfa45e52e New updates to address compiler warnings (issue #370)
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.
2019-01-19 16:56:19 -05:00
Lew Rossman
628fffc718 Added additional network building features (#367) 2019-01-02 10:33:58 -05:00
Lew Rossman
f1175b1f92 Error reporting fixes and re-formatting (issue #358) 2018-12-15 15:13:19 -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
Michael Tryby
ad4969ea1b Rolling back errormanager 2018-11-19 16:40:40 -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
ee335ab077 Fixes bug #172 (adjust controls & rules when node/link added or deleted)
- Also adds new API function EN_deletecontrol
- Updates and re-arranges entries in the VBA and VB.Net headers
2018-10-31 11:32:01 -04:00
Lew Rossman
39fcfa2162 Fixed bug setting pump curve params (#314) and in setting demand categories
-Split off calc. of a pump's curve coeffs. from getpumpparams to updatepumpparams.
- Fixed problem with initializing node demand category when default demand pattern set before node is created.
- Increased MAXLINE to 1024 to accomodate increase in MAXMSG.
- Replaced EN_geterror calls in input2.c with geterrmsg (it's bad form to call API functions in the body of the library)
2018-10-25 09:39:28 -04:00
Lew Rossman
60a79de4a9 Fixed bug in hash.c
A bug in the delete function in hash.c was preventing the unit test of the new set ID API functions from running properly. In fixing this bug the entire hash table code was refactored to make it look more like the mempool service routines. Also the need to copy the string passed into the table's insert function was eliminated.
2018-10-18 10:03:09 -04:00
Lew Rossman
1fce14efb8 Increased size of MAXMSG to 255 (#189) 2018-10-15 11:34:25 -04:00
Lew Rossman
7c021cf533 Fixed water quality mass balance issue (#160) 2018-10-09 12:53:20 -04:00
Elad Salomons
cc21b55b68 Read and write demand categories names
Fixes #290
2018-09-22 11:19:05 +03:00
Lew Rossman
e45a23c4ef More robust method for handling zero/low flows (#164) 2018-09-12 10:38:01 -04:00
Lew Rossman
6e73b6a4f5 Made mempool.c threadsafe (#234) 2018-09-03 10:29:41 -04:00
Michael Tryby
bdc05058ca Resolving merge conflicts 2018-08-27 09:38:46 -04:00
Michael Tryby
f495d2c707 Merge branch 'dev' into contributor-lr 2018-08-24 16:09:21 -04:00
Michael Tryby
75e400cf44 Merging changes from upstream dev 2018-08-22 15:09:33 -04:00
Elad Salomons
4e48c31147 Fix PumpType and CurveType enums
Also adds a general \default curve type. Fixes #208.
2018-08-15 07:37:19 +03:00
Lew Rossman
b5e3986e6b Pressure Dependent Demands added to address issue 163 2018-08-09 10:42:47 -04:00
Michael Tryby
4723336726 Adding errormanager to toolkit api 2018-07-13 11:47:47 -04:00
Michael Tryby
ff2c851b1c Merging latest from dev, trying to get import lib generated 2018-07-03 17:38:40 -04:00
Lew Rossman
86ffbcf614 Improved node re-ordering method (Issue #162) 2018-07-02 13:55:41 -04:00
Lew Rossman
e9303de078 Fixes to implement issue #161 2018-06-19 10:30:02 -04:00
Lew Rossman
d5194ffb81 Merge branch 'contributor-lr' of https://github.com/LRossman/EPANET into contributor-lr 2018-06-16 11:12:59 -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
Michael Tryby
d374e7bf1a Changing MAXFNAME from 260 back to 259 2018-06-15 10:41:52 -04:00
Lew Rossman
a73b2d7508 #defined MAXFNAME as 260 instead of L_tmpnam_s 2018-06-09 12:07:44 -04:00
Lew Rossman
f0c9684871 Changes to pass reg tests
Revised getTmpName() in EPANET.C
2018-06-05 10:31:18 -04:00
Lew Rossman
24d6b91607 Changes to get Net1.inp to run 2018-05-22 11:12:14 -04:00
Michael Tryby
62d6c9fade Converting EN_Project to void* EN_ProjectHandle to facilitate wrapping Toolkit API using SWIG. 2018-01-30 18:12:27 -05: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
Elad Salomons
e1da9bc9d7 Fix duplicate w_POWER definition
Fix duplicate w_POWER definition and some house keeping. Tested the new
commit by @AngelaMarchi from #87, all results are the same as version
2.1.
2016-11-09 16:37:57 +02:00
Elad Salomons
bca5409952 Merge pull request #87 from AngelaMarchi/ChangingRuleBased_v2
Thanks @AngelaMarchi
2016-11-08 12:00:20 +02:00
AngelaMarchi
83dd6c7b7c ChangingRuleBased_v2
The code has the following modifications:
- RULE section is written just after controls
- SYST is now written SYSTEM (also PRESSURE, DEMAND, POWER, SETTING,
FILLTIME and DRAINTIME have been changed)
- some description to the function writeRuleinInp has been added
- Actions are now written in the correct order
2016-11-08 18:37:54 +10:30
Elad Salomons
9942f6761d Updated def file and float types in function APIs
Added the new funcions to the DEF file.
Updated VB headers from Double to Single
Changed a few APIs calls to support EN_API_FLOAT_TYPE - this needs more
work for the rest of the new functions
2016-09-24 12:28:20 +03:00
AngelaMarchi
4e349cd3c1 ModifyingRuleBaseControls
These modifications allow rule based controls to be modified with the
additional functions added in the dll toolkit
2016-09-23 13:14:15 +09:30
Elad Salomons
99a215b88a Change VERSION to ENGINE_VERSION
Also changed it form 200 to 201 as some changes were made to the engine
in 2.1.

Closes #27
2015-12-07 22:18:05 +02:00
Elad Salomons
186f21f9a7 update coord struct 2015-09-12 11:54:57 +03:00
Elad Salomons
40cbb5f95e Check for open file in ENgetcurve and minor fixes 2015-06-13 00:16:30 +03:00
Sam Hatchett
2a6f5bafc4 updated version number 2013-09-30 16:34:30 -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
9da5f4f658 rtx mods, epanet gets coords 2013-05-24 15:54:02 -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