epanet-plus 0.0.1__cp313-cp313-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of epanet-plus might be problematic. Click here for more details.

Files changed (105) hide show
  1. docs/conf.py +67 -0
  2. epanet-msx-src/dispersion.h +27 -0
  3. epanet-msx-src/hash.c +107 -0
  4. epanet-msx-src/hash.h +28 -0
  5. epanet-msx-src/include/epanetmsx.h +104 -0
  6. epanet-msx-src/include/epanetmsx_export.h +42 -0
  7. epanet-msx-src/mathexpr.c +937 -0
  8. epanet-msx-src/mathexpr.h +39 -0
  9. epanet-msx-src/mempool.c +204 -0
  10. epanet-msx-src/mempool.h +24 -0
  11. epanet-msx-src/msxchem.c +1285 -0
  12. epanet-msx-src/msxcompiler.c +368 -0
  13. epanet-msx-src/msxdict.h +42 -0
  14. epanet-msx-src/msxdispersion.c +586 -0
  15. epanet-msx-src/msxerr.c +116 -0
  16. epanet-msx-src/msxfile.c +260 -0
  17. epanet-msx-src/msxfuncs.c +175 -0
  18. epanet-msx-src/msxfuncs.h +35 -0
  19. epanet-msx-src/msxinp.c +1504 -0
  20. epanet-msx-src/msxout.c +398 -0
  21. epanet-msx-src/msxproj.c +791 -0
  22. epanet-msx-src/msxqual.c +2011 -0
  23. epanet-msx-src/msxrpt.c +400 -0
  24. epanet-msx-src/msxtank.c +422 -0
  25. epanet-msx-src/msxtoolkit.c +1164 -0
  26. epanet-msx-src/msxtypes.h +551 -0
  27. epanet-msx-src/msxutils.c +524 -0
  28. epanet-msx-src/msxutils.h +56 -0
  29. epanet-msx-src/newton.c +158 -0
  30. epanet-msx-src/newton.h +34 -0
  31. epanet-msx-src/rk5.c +287 -0
  32. epanet-msx-src/rk5.h +39 -0
  33. epanet-msx-src/ros2.c +293 -0
  34. epanet-msx-src/ros2.h +35 -0
  35. epanet-msx-src/smatrix.c +816 -0
  36. epanet-msx-src/smatrix.h +29 -0
  37. epanet-src/AUTHORS +60 -0
  38. epanet-src/LICENSE +21 -0
  39. epanet-src/enumstxt.h +151 -0
  40. epanet-src/epanet.c +5937 -0
  41. epanet-src/epanet2.c +961 -0
  42. epanet-src/epanet2.def +131 -0
  43. epanet-src/errors.dat +79 -0
  44. epanet-src/flowbalance.c +186 -0
  45. epanet-src/funcs.h +219 -0
  46. epanet-src/genmmd.c +1000 -0
  47. epanet-src/hash.c +177 -0
  48. epanet-src/hash.h +28 -0
  49. epanet-src/hydcoeffs.c +1303 -0
  50. epanet-src/hydraul.c +1164 -0
  51. epanet-src/hydsolver.c +781 -0
  52. epanet-src/hydstatus.c +442 -0
  53. epanet-src/include/epanet2.h +466 -0
  54. epanet-src/include/epanet2_2.h +1962 -0
  55. epanet-src/include/epanet2_enums.h +518 -0
  56. epanet-src/inpfile.c +884 -0
  57. epanet-src/input1.c +672 -0
  58. epanet-src/input2.c +970 -0
  59. epanet-src/input3.c +2265 -0
  60. epanet-src/leakage.c +527 -0
  61. epanet-src/mempool.c +146 -0
  62. epanet-src/mempool.h +24 -0
  63. epanet-src/output.c +853 -0
  64. epanet-src/project.c +1691 -0
  65. epanet-src/quality.c +695 -0
  66. epanet-src/qualreact.c +800 -0
  67. epanet-src/qualroute.c +696 -0
  68. epanet-src/report.c +1559 -0
  69. epanet-src/rules.c +1500 -0
  70. epanet-src/smatrix.c +871 -0
  71. epanet-src/text.h +508 -0
  72. epanet-src/types.h +928 -0
  73. epanet-src/util/cstr_helper.c +59 -0
  74. epanet-src/util/cstr_helper.h +38 -0
  75. epanet-src/util/errormanager.c +92 -0
  76. epanet-src/util/errormanager.h +39 -0
  77. epanet-src/util/filemanager.c +212 -0
  78. epanet-src/util/filemanager.h +81 -0
  79. epanet-src/validate.c +408 -0
  80. epanet.cpython-313-darwin.so +0 -0
  81. epanet_plus/VERSION +1 -0
  82. epanet_plus/__init__.py +8 -0
  83. epanet_plus/epanet_plus.c +118 -0
  84. epanet_plus/epanet_toolkit.py +2730 -0
  85. epanet_plus/epanet_wrapper.py +2414 -0
  86. epanet_plus/include/epanet_plus.h +9 -0
  87. epanet_plus-0.0.1.dist-info/METADATA +152 -0
  88. epanet_plus-0.0.1.dist-info/RECORD +105 -0
  89. epanet_plus-0.0.1.dist-info/WHEEL +6 -0
  90. epanet_plus-0.0.1.dist-info/licenses/LICENSE +21 -0
  91. epanet_plus-0.0.1.dist-info/top_level.txt +11 -0
  92. examples/basic_usage.py +35 -0
  93. python-extension/ext.c +344 -0
  94. python-extension/pyepanet.c +2133 -0
  95. python-extension/pyepanet.h +143 -0
  96. python-extension/pyepanet2.c +1823 -0
  97. python-extension/pyepanet2.h +141 -0
  98. python-extension/pyepanet_plus.c +37 -0
  99. python-extension/pyepanet_plus.h +4 -0
  100. python-extension/pyepanetmsx.c +388 -0
  101. python-extension/pyepanetmsx.h +35 -0
  102. tests/test_epanet.py +16 -0
  103. tests/test_epanetmsx.py +36 -0
  104. tests/test_epyt.py +114 -0
  105. tests/test_load_inp_from_buffer.py +18 -0
@@ -0,0 +1,9 @@
1
+ #ifndef EPANETPLUS_H
2
+ #define EPANETPLUS_H
3
+
4
+ #include "epanet2_2.h"
5
+
6
+ int DLLEXPORT ENopenfrombuffer(const char *inpBuffer, const char *inpFile, const char *rptFile, const char *outFile);
7
+ int DLLEXPORT EN_openfrombuffer(EN_Project p, const char *inpBuffer, const char *inpFile, const char *rptFile, const char *outFile);
8
+
9
+ #endif //EPANETPLUS_H
@@ -0,0 +1,152 @@
1
+ Metadata-Version: 2.4
2
+ Name: epanet-plus
3
+ Version: 0.0.1
4
+ Summary: Python interface for EPANET-PLUS (incl. EPANET and EPANET-MSX)
5
+ Author-email: André Artelt <aartelt@techfak.uni-bielefeld.de>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/WaterFutures/EPANET-PLUS
8
+ Project-URL: Documentation, https://epanet-plus.readthedocs.io/en/stable/
9
+ Project-URL: Repository, https://github.com/WaterFutures/EPANET-PLUS.git
10
+ Project-URL: Issues, https://github.com/WaterFutures/EPANET-PLUS/issues
11
+ Keywords: epanet,water,networks,hydraulics,quality,simulations
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Dynamic: license-file
24
+
25
+ [![pypi](https://img.shields.io/pypi/v/epanet-plus.svg)](https://pypi.org/project/epanet-plus/)
26
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
27
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/epanet-plus)
28
+ [![build](https://github.com/WaterFutures/EPANET-PLUS/actions/workflows/build.yml/badge.svg)](https://github.com/WaterFutures/EPANET-PLUS/actions/workflows/build.yml)
29
+ [![Documentation Status](https://readthedocs.org/projects/epanet-plus/badge/?version=stable)](https://epanet-plus.readthedocs.io/en/stable/?badge=stable)
30
+ [![Downloads](https://static.pepy.tech/badge/epanet-plus)](https://pepy.tech/project/epanet-plus)
31
+ [![Downloads](https://static.pepy.tech/badge/epanet-plus/month)](https://pepy.tech/project/epanet-plus)
32
+
33
+ # EPANET-PLUS
34
+
35
+ EPANET-PLUS is a C library that merges [EPANET](https://github.com/OpenWaterAnalytics/EPANET)
36
+ and [EPANET-MSX](https://github.com/OpenWaterAnalytics/epanet-msx) into a single library.
37
+ Most importantly, it also provides a Python package with a high-performance interface
38
+ (i.e., C extension) to the C library, together with additional helper functions for an easier
39
+ use of EPANET and EPANET-MSX.
40
+
41
+ ## Unique Features
42
+
43
+ Unique features of EPANET-PLUS that make it superior to other Python interfaces of EPANET are the following:
44
+
45
+ - High-performance (single) interface to the latest version of EPANET and EPANET-MSX
46
+ - Additional C-functions to extend EPANET and EPANET-MSX
47
+ - Python toolkit with handy functions for working with EPANET and EPANET-MSX
48
+
49
+ ## Installation
50
+
51
+ Note that EPANET-PLUS supports Python 3.9 - 3.13.
52
+ The Python package contains the the C library as a C extension and is
53
+ already pre-build for all major platforms.
54
+
55
+ ### PyPI
56
+
57
+ ```
58
+ pip install epanet-plus
59
+ ```
60
+
61
+
62
+ ### Git
63
+
64
+ Download or clone the repository:
65
+
66
+ ```
67
+ git clone https://github.com/WaterFutures/EPANET-PLUS.git
68
+ cd EPANET-PLUS
69
+ ```
70
+
71
+ Install all requirements as listed in [REQUIREMENTS.txt](https://raw.githubusercontent.com/WaterFutures/EPANET-PLUS/main/REQUIREMENTS.txt):
72
+
73
+ ```
74
+ pip install -r REQUIREMENTS.txt
75
+ ```
76
+
77
+ Build and install the package:
78
+
79
+ ```
80
+ pip install .
81
+ ```
82
+
83
+ ## Quick Example
84
+
85
+ ```python
86
+ from epanet_plus import EPyT, EpanetConstants
87
+
88
+ if __name__ == "__main__":
89
+ # Load an .inp file in EPANET using the toolkit class
90
+ epanet_api = EPyT("net2-cl2.inp")
91
+
92
+ # Print some general information
93
+ print(f"All nodes: {epanet_api.get_all_nodes_id()}")
94
+ print(f"All links: {epanet_api.get_all_links_id()}")
95
+
96
+ print(f"Simulation duration in seconds: {epanet_api.get_simulation_duration()}")
97
+ print(f"Hydraulic time step in seconds: {epanet_api.get_hydraulic_time_step()}")
98
+ print(f"Demand model: {epanet_api.get_demand_model()}")
99
+
100
+ # Run hydraulic simulation and output pressure at each node (at every simulation step)
101
+ epanet_api.openH()
102
+ epanet_api.initH(EpanetConstants.EN_NOSAVE)
103
+
104
+ tstep = 1
105
+ r = []
106
+ while tstep > 0:
107
+ t = epanet_api.runH()
108
+
109
+ print(epanet_api.getnodevalues(EpanetConstants.EN_PRESSURE))
110
+
111
+ tstep = epanet_api.nextH()
112
+
113
+ epanet_api.closeH()
114
+
115
+ # Close EPANET
116
+ epanet_api.close()
117
+ ```
118
+
119
+ ## Documentation
120
+
121
+ Documentation is available on readthedocs: [https://epanet-plus.readthedocs.io/en/latest/](https://epanet-plus.readthedocs.io/en/stable)
122
+
123
+ # License
124
+
125
+ MIT license -- see [LICENSE](LICENSE)
126
+
127
+ ## How to Cite?
128
+
129
+ If you use this software, please cite it as follows:
130
+
131
+ ```bibtex
132
+ @misc{github:epanetplus,
133
+ author = {André Artelt},
134
+ title = {{EPANET-PLUS}},
135
+ year = {2025},
136
+ publisher = {GitHub},
137
+ journal = {GitHub repository},
138
+ howpublished = {https://github.com/WaterFutures/EPANET-PLUS}
139
+ }
140
+ ```
141
+
142
+ ## How to get Support?
143
+
144
+ If you come across any bug or need assistance please feel free to open a new
145
+ [issue](https://github.com/WaterFutures/EPyT-Flow/issues/)
146
+ if non of the existing issues answers your questions.
147
+
148
+ ## How to Contribute?
149
+
150
+ Contributions (e.g. creating issues, pull-requests, etc.) are welcome --
151
+ please make sure to read the [code of conduct](CODE_OF_CONDUCT.md) and
152
+ follow the [developers' guidelines](DEVELOPERS.md).
@@ -0,0 +1,105 @@
1
+ epanet.cpython-313-darwin.so,sha256=pqkbmOoqwfdnfLbXo7gfR-DPL8qifEKPdxPBj4JvPE0,675024
2
+ python-extension/pyepanetmsx.h,sha256=BXI0jBTl2RzAaogfIeALgv7n1-pizSVtYqUtupEVTkQ,2088
3
+ python-extension/ext.c,sha256=sjDx2HWTY9Ov35rxDH0E6szI249YDCK5DT2EKLFSfVg,38183
4
+ python-extension/pyepanet.h,sha256=jh7NJrkogyV78BwpVEFpXqxBQiNGLE1f1FaUlOTz-vs,9094
5
+ python-extension/pyepanet_plus.c,sha256=A_6eN31QeNBw3nfACpblDsvndzvKB1N9Bq4qT6f6UUs,938
6
+ python-extension/pyepanet2.h,sha256=fmyrc6py14iiwvd-co_V4bQ_v46gp0hcNDhyKd7PhrQ,9064
7
+ python-extension/pyepanetmsx.c,sha256=3uZcfLpyVFhOxzyqk-1iuLV8XRAcprOsKUCkj57JmL4,9282
8
+ python-extension/pyepanet.c,sha256=YkhB-Ey_GsaCINczvEIIbZ1oS4DeZItlJUUe6qqa1bs,55640
9
+ python-extension/pyepanet_plus.h,sha256=2Pz6cVxJas_nlcYVeYU3xnqXMTcsCJ18P-vnnZa_YAs,156
10
+ python-extension/pyepanet2.c,sha256=h9HJE7B3X7wyXlFagOzN9hRLVqvwcJNc2WN-T3Y4emI,44567
11
+ epanet-msx-src/mathexpr.h,sha256=1nbte9BLbqk8l9Ai2HhY1rqSmEUw0Ex03goUWBaN3QQ,1342
12
+ epanet-msx-src/msxtoolkit.c,sha256=0KgIpPP28-sOCCExBaq1Hh8ib2J-W65kNf0-fR5D5OE,33863
13
+ epanet-msx-src/msxqual.c,sha256=6Aj6Lu9ehnmjp-9AL3kN34aG4NaD8a9I6MQX93IjEpE,57805
14
+ epanet-msx-src/dispersion.h,sha256=qYeHTzI4N2Y2ja0qGkKUBG6aGaD_erNgvHuhGgy0iLM,941
15
+ epanet-msx-src/smatrix.h,sha256=heHTNgQNNDTs_Jx0YBts7_B7dPg8VUF1jgBBmU-qbfc,1567
16
+ epanet-msx-src/msxout.c,sha256=x_gLPmsFfh1Bqb3J9GrPcVKdCpyVB2vNyf2HBf3sBZg,11246
17
+ epanet-msx-src/newton.c,sha256=tgbGLLn_cwbD7zKu5DA1xZfx2h8mKsSIO09vhYiMI-Y,4387
18
+ epanet-msx-src/ros2.c,sha256=ycMgrsopw2yD_nKRfjUaGY-fWibrR124PPugkwcFikg,8542
19
+ epanet-msx-src/msxutils.c,sha256=HLPavITgmlX9-s6mOUkQPt3noQUiv0I1gT_59Q33dfs,12104
20
+ epanet-msx-src/mempool.c,sha256=WR_2IU5YdYD74f-s4gr2ia9AlgNXMMoLCdXxdVbseQM,4283
21
+ epanet-msx-src/rk5.c,sha256=3rCy4ivgbwZXS0DfCckrdO_bpFqhsaFTtFDCA7sC3UA,9778
22
+ epanet-msx-src/msxfuncs.h,sha256=P7BfVu7xrFp7DUfNcO-TuBIITcPEJYmqkKRVdj_k5Qs,1337
23
+ epanet-msx-src/hash.c,sha256=bxilMFOs3t-UuI2ZxJQZrjbUi6sUNMrp6MO0Q5snMmo,2848
24
+ epanet-msx-src/msxchem.c,sha256=CzJoJyAepVAylmKH78uucUKYz3Ng4CkCy2RI2Mv4h-E,35046
25
+ epanet-msx-src/smatrix.c,sha256=l4VVV_44Jm7xAqQ4EEk66JZCyZ0MWOFwm99VAqgq5l4,28375
26
+ epanet-msx-src/msxerr.c,sha256=kFqe96sn-kFjj6PwwLKyJ3fAQ0dslVc8PE-e2AM6fKU,3055
27
+ epanet-msx-src/msxtank.c,sha256=UNeZg9pcBjx8kHiVgDWWAPrfOrUDr3gpEwDO66_bh20,12126
28
+ epanet-msx-src/mathexpr.c,sha256=ZddmJu3NvnmOZwqF58vXcy4x8fijB86DzSi_sr-g8b0,23189
29
+ epanet-msx-src/msxcompiler.c,sha256=mYzjdspLZSZM7L2ECgzmHOk_VoqB_cf0mcbL-oMrG1s,10817
30
+ epanet-msx-src/msxdict.h,sha256=1nAa1vhcJUY8QFgigPXRaZcbNxJwyQ1awpeuD5nmbrQ,2147
31
+ epanet-msx-src/mempool.h,sha256=zErH6G07mEDdrBRe-VoaEzjyuxD8RICxAAv9ROpnkGQ,455
32
+ epanet-msx-src/msxproj.c,sha256=Of2YTh98MXMUv2ZiwNyUcKf7gh2QsYVEMV_yJiQ7bBs,21817
33
+ epanet-msx-src/ros2.h,sha256=Ll-IInq4X1pVGchQH8PRGiPPLhoson7Vt0w3c0_Xx1o,1249
34
+ epanet-msx-src/msxrpt.c,sha256=RW-sD7Q1LaxKLNSBXrxSkEKerGNCMMdA9BkSkJm3Pis,11505
35
+ epanet-msx-src/newton.h,sha256=mkSbH7deDiL83DstIt1xLoC933G0gc16ofc7QL04r5s,1090
36
+ epanet-msx-src/msxutils.h,sha256=R1qNWqw74TcaAErzzeBjXnH6cwDX2NYvQYX-pc4mfMA,1811
37
+ epanet-msx-src/msxdispersion.c,sha256=qsFYBGV1OUkGTnSa6u6gy-qebiV7NqyISZo_MoHBbi0,14274
38
+ epanet-msx-src/msxtypes.h,sha256=0LSgX4yiCxWBuFm0Dt1lD0lryRob5T8x38ukXWg9rSc,24060
39
+ epanet-msx-src/hash.h,sha256=2C4ebltth9ekERJvJy8QI2s-4zpIudpqW5bdy2IIeSA,412
40
+ epanet-msx-src/msxinp.c,sha256=QNrZt2yLo7sXiK4QXgMskDNXYXXmS5iyCZIxkC4WWT0,38985
41
+ epanet-msx-src/rk5.h,sha256=HzbHtGY4vMc16-CtBoM1epjQgt53NJ44asBnIW_3L3c,1280
42
+ epanet-msx-src/msxfuncs.c,sha256=uXdp0LUQapVIgE9Yj0V9qG99SSrvqzIt7olysuRKbJQ,4364
43
+ epanet-msx-src/msxfile.c,sha256=rVG-dKgvfrhaNP-Sy1_4EmTWi8GCwlAqYa0Vbnnk8aY,7068
44
+ epanet-msx-src/include/epanetmsx.h,sha256=P4baHSK7NQzuwYhrWLE0VmieTlXW2XOQF52UgyhZDuk,3456
45
+ epanet-msx-src/include/epanetmsx_export.h,sha256=h5UMaf6pH_0asRJOmhWUGAZhyA180ui2Cz8_y5h1FKw,1054
46
+ epanet_plus/epanet_wrapper.py,sha256=YQggdIm7IBPd7sPzBSqgWCnFTNL6XCnnRu63LQJ4_-s,73126
47
+ epanet_plus/epanet_toolkit.py,sha256=VNAV_oqIWvuvuK7EvfV8DAc-3v94GIAeJvx1oUIVgEM,80937
48
+ epanet_plus/__init__.py,sha256=XorLU8AO-crTDUwlM-EVyrOYynh3FrGkhQuSsWwI9Ls,215
49
+ epanet_plus/VERSION,sha256=axN4nkPlSFY0Uz3hamXYup00xMl1hYi2ZYBUNfgOsRU,5
50
+ epanet_plus/epanet_plus.c,sha256=zWfYlLgYdQCQtIkVHNpgEBOBqJefeJX7H3cHZThkxnw,3183
51
+ epanet_plus/include/epanet_plus.h,sha256=z2PEExuz6szxUp1k5vwsMQy2uSRz_X-W9B7xSP2f33s,340
52
+ epanet_plus-0.0.1.dist-info/RECORD,,
53
+ epanet_plus-0.0.1.dist-info/WHEEL,sha256=oqGJCpG61FZJmvyZ3C_0aCv-2mdfcY9e3fXvyUNmWfM,136
54
+ epanet_plus-0.0.1.dist-info/top_level.txt,sha256=igwRsFnggi2fSCG7AHkP3LfOLlgsT2aUu0oa8DpvHDo,103
55
+ epanet_plus-0.0.1.dist-info/METADATA,sha256=NCBbW5G9wreRT6-ftlK69Tt_O89E7RyBfSH8_PXEZl4,5207
56
+ epanet_plus-0.0.1.dist-info/licenses/LICENSE,sha256=q5jqVgUtLMJstE7DSa26FnVk3N2yAuQPCW6wCtQm6Eo,1074
57
+ tests/test_epanetmsx.py,sha256=mAKTEscKVcZG_RKZg7fco7G6CQmLNK0XKnPJpT0EeFs,996
58
+ tests/test_epyt.py,sha256=ZTIi5f4gfTPFCjIvpnGopcf5s8tAEDsAcha7QJUIxtc,3533
59
+ tests/test_load_inp_from_buffer.py,sha256=-EqeKqI_-FNcARpe1SPrBs7lSNtMvfw6oUKyDPhIabo,543
60
+ tests/test_epanet.py,sha256=jgiqFiHZ3UB7on6WzbWKS6D0aXxIUTBCexDGoSmLitQ,463
61
+ docs/conf.py,sha256=xd41cfAn4qscUNt--XoojOmgC9kWUI7ZNfpLjbRPpuU,2132
62
+ epanet-src/inpfile.c,sha256=obYLcr4DikW89h_uBc-LvLViU2m9gJozZa1CsXy19nY,28208
63
+ epanet-src/validate.c,sha256=nT6Xyd2E0ZXVZEZj2Zuo-K_TOBznIGrODUXqXmpMcCI,12117
64
+ epanet-src/input2.c,sha256=qJUHBY-tcmXLriah3VOTNTNnbUvWNtrh_L7gy0ftysA,29542
65
+ epanet-src/errors.dat,sha256=5p-lbCKco6-iNNLVUKohi4eLa3sE1l4_F3BuALmW3WE,3014
66
+ epanet-src/text.h,sha256=sFv5LZQ-7pKRz9xe6NVMT2PeJZzdeuP4jE6CIYXqu9M,17731
67
+ epanet-src/LICENSE,sha256=XrPEC-tu4Ha8AGxwh4uSTgaENMyXGrsTdVOzsFBk8A0,1090
68
+ epanet-src/hydstatus.c,sha256=C7X660ow5T1AmSqIB-EHc7xD5NoF_dGqS9NrufERGi8,13196
69
+ epanet-src/report.c,sha256=AbKWhEj4itrGgSVWgSr2Z6fZcIpBN1qvOA2cV5C0-HM,46033
70
+ epanet-src/types.h,sha256=3y8YCn5xCQgzDB-_2UUH_BRPmLm16-zyUyEaBb6EGG0,33129
71
+ epanet-src/AUTHORS,sha256=8nnSXx3x4js8FtPZrcluaIbwm5vUxxCZlGhAAx2XALc,1916
72
+ epanet-src/rules.c,sha256=OaJIr1WCZ0keJp8mxJs2-S_mE8QB1TVKEeprAfhof5Y,39491
73
+ epanet-src/mempool.c,sha256=3idwF-IfhG4fWZPeESnmG2nWeRpdATaPpiNkPC6wGus,3646
74
+ epanet-src/hydsolver.c,sha256=tO6zfzyzhoDXGjReE0CRn2_EtEYIM9cxO4kp4-VA3_M,25428
75
+ epanet-src/project.c,sha256=Z1K01Of1ga4wB6paXkhklM6Z_ny94IZ6pYINFpHVzHM,51675
76
+ epanet-src/epanet2.def,sha256=5265uHv5EV-GSO5XbdXvod469pencib1LZThMyJ7siM,7782
77
+ epanet-src/input1.c,sha256=W8DJFAaaOwyfiBWei8pVZNAvXyIqlkbxncdliHTLepc,22899
78
+ epanet-src/hash.c,sha256=wY8Rzw-93oNrXUOFsfe4NVRn7NYXhlVHAciQm11goH0,4231
79
+ epanet-src/epanet2.c,sha256=AgRfutfQraTcjrE-IlEbejg_BxuzS_Ly98i6OIW3a80,27910
80
+ epanet-src/leakage.c,sha256=ygnmgJCAZhpzERdM2hQATlOmbNexH2RclXlH3r8x6Zs,16470
81
+ epanet-src/flowbalance.c,sha256=zEFAgmMRtKR9KJkEKb7j3JXui01jsnj1zLJiGI3Y_ik,5661
82
+ epanet-src/smatrix.c,sha256=NNZIRSKTyzfi_fdWyqwcUsqJXRjFC2pnmRZhTrLX3oA,26020
83
+ epanet-src/epanet.c,sha256=3r7smEFzN4Ndt4d8V_YBFaTRqQGg9k2k1B6B2gK5lw4,182356
84
+ epanet-src/hydcoeffs.c,sha256=CP0p6F-8000e_9153T9qruJPPjICL1J6Wd2uxNhi7kc,38589
85
+ epanet-src/qualreact.c,sha256=W2nxecPc3E44EkRUWU_bSFmA_SNYUKMkpIDsVxXSa5E,23731
86
+ epanet-src/genmmd.c,sha256=qM0JX1LbiGTawbANyXs93XK-khVPMyWhiGQRNQ8SSKE,32936
87
+ epanet-src/hydraul.c,sha256=VlAsh6sfSqn-HGwI0LrO0khDP823Rdayc-KUNEl8OfQ,33686
88
+ epanet-src/funcs.h,sha256=bpm0sKJnH9Mydl-HCeLrAZ9kcFn8jZu1a0OMcPYosxQ,7018
89
+ epanet-src/mempool.h,sha256=JKSJX5vBHjhQ3_rme6MtAkXSy2KPbiKu-7-nMRcp5I8,677
90
+ epanet-src/qualroute.c,sha256=nq0DtBsWYukvZxn0yYYdYjiGm7kyiAvhqJXEc0FL8sw,21714
91
+ epanet-src/quality.c,sha256=dbm7zLxaFu-UaUVRf3ZVMg_aYGKOL7gGKMTFxaR28fE,19839
92
+ epanet-src/input3.c,sha256=SZpAWtSus00dd78MrFo5JQW1qXE9P0RD_mRXuoHUqwI,68743
93
+ epanet-src/enumstxt.h,sha256=aJYz_VOnGF4oJ3spdtbHlJq7k3rJSjc0koszg32Y9FI,4974
94
+ epanet-src/output.c,sha256=SuOVWz0ZT3hqxqXKOc2DAt7sg3XKKPhKqel89FR0LKU,26680
95
+ epanet-src/hash.h,sha256=xRyuJSJz6tQB9Jds6FZtE57kIWq3bgJUf-Bis--QcJI,896
96
+ epanet-src/util/filemanager.h,sha256=QM0J6ED52S-LjJIOJ3zYw0KRSGnQ9KCogJtf77kqsb0,1844
97
+ epanet-src/util/errormanager.c,sha256=yvdysNOo6yeoSWWYYGsBn6ywtpTmuV5Qpq4Vy_QIdLs,2058
98
+ epanet-src/util/cstr_helper.h,sha256=2ivKuiOY097jBCFb0hWWoSgZqrxUyo6BVVbdmqkTYlc,727
99
+ epanet-src/util/cstr_helper.c,sha256=qFvFKXV0YLtk_Q79T0ERuXlgvsgznPMQKbpzz40xbkI,1348
100
+ epanet-src/util/errormanager.h,sha256=ghebj0NO_1lvmFncgUt35t9Z9D4zrWwTSnpxzyfahig,982
101
+ epanet-src/util/filemanager.c,sha256=ul4LdINZ8Lb273KPCRWo1KjCLC6dIzhWE62sXJwX5kc,4666
102
+ epanet-src/include/epanet2_enums.h,sha256=vP4c3AhIB6Md2HLS8YaKVXADUqXiuJSu1NmNDl9vhEY,22683
103
+ epanet-src/include/epanet2_2.h,sha256=JAs1spcJixip6zdSd0G-cWG19PGKBR6CKQM5UDGJiJg,77508
104
+ epanet-src/include/epanet2.h,sha256=qggFwluyLeh0ZudO3aCowpq3Bq5da9exd5qhoXDCcEw,15274
105
+ examples/basic_usage.py,sha256=c2PlqGFLPxpoe2f37neEN4T479deTqummNfojumzLUo,1087
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp313-cp313-macosx_11_0_arm64
5
+ Generator: delocate 0.13.0
6
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) EPANET-PLUS Developers
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,11 @@
1
+ build
2
+ docs
3
+ epanet
4
+ epanet-msx-src
5
+ epanet-src
6
+ epanet_plus
7
+ examples
8
+ python-extension
9
+ src
10
+ tests
11
+ wheelhouse
@@ -0,0 +1,35 @@
1
+ """
2
+ Basic example showing how to load an .inp file and run a hydraulic simulation.
3
+ """
4
+ from epanet_plus import EPyT, EpanetConstants
5
+
6
+
7
+ if __name__ == "__main__":
8
+ # Load an .inp file in EPANET using the toolkit class
9
+ epanet_api = EPyT("net2-cl2.inp")
10
+
11
+ # Print some general information
12
+ print(f"All nodes: {epanet_api.get_all_nodes_id()}")
13
+ print(f"All links: {epanet_api.get_all_links_id()}")
14
+
15
+ print(f"Simulation duration in seconds: {epanet_api.get_simulation_duration()}")
16
+ print(f"Hydraulic time step in seconds: {epanet_api.get_hydraulic_time_step()}")
17
+ print(f"Demand model: {epanet_api.get_demand_model()}")
18
+
19
+ # Run hydraulic simulation and output pressure at each node (at every simulation step)
20
+ epanet_api.openH()
21
+ epanet_api.initH(EpanetConstants.EN_NOSAVE)
22
+
23
+ tstep = 1
24
+ r = []
25
+ while tstep > 0:
26
+ t = epanet_api.runH()
27
+
28
+ print(f"Current pressure per node: {epanet_api.getnodevalues(EpanetConstants.EN_PRESSURE)}")
29
+
30
+ tstep = epanet_api.nextH()
31
+
32
+ epanet_api.closeH()
33
+
34
+ # Close EPANET
35
+ epanet_api.close()