{"id":13949114,"url":"https://github.com/OpenWaterAnalytics/EPyT","last_synced_at":"2025-07-20T11:30:55.854Z","repository":{"id":39914144,"uuid":"497006956","full_name":"OpenWaterAnalytics/EPyT","owner":"OpenWaterAnalytics","description":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","archived":false,"fork":false,"pushed_at":"2025-06-25T10:26:57.000Z","size":26002,"stargazers_count":56,"open_issues_count":7,"forks_count":30,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2025-07-03T22:03:50.172Z","etag":null,"topics":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"latest_commit_sha":null,"homepage":"https://epanet-python-toolkit-epyt.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenWaterAnalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-27T13:27:08.000Z","updated_at":"2025-06-30T09:45:02.000Z","dependencies_parsed_at":"2023-02-18T17:30:52.464Z","dependency_job_id":"ad53110a-4bbf-4be4-a7e2-8e3670823d36","html_url":"https://github.com/OpenWaterAnalytics/EPyT","commit_stats":{"total_commits":499,"total_committers":6,"mean_commits":83.16666666666667,"dds":0.5230460921843687,"last_synced_commit":"03c825c074409a0afe863a28beeea44b6503a9b9"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264371132,"owners_count":23597712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"created_at":"2024-08-08T05:01:38.621Z","updated_at":"2025-07-20T11:30:55.843Z","avatar_url":"https://github.com/OpenWaterAnalytics.png","language":"Jupyter Notebook","funding_links":[],"categories":["Natural Resources"],"sub_categories":["Water Supply and Quality"],"readme":"﻿\u003ca href=\"http://www.kios.ucy.ac.cy\"\u003e\u003cimg src=\"https://www.kios.ucy.ac.cy/wp-content/uploads/2021/07/Logotype-KIOS.svg\" width=\"200\" height=\"100\"/\u003e\u003ca\u003e\n\n[![license](https://img.shields.io/pypi/l/epyt.svg)](https://github.com/KIOS-Research/EPyT/blob/main/LICENSE.md)\n[![pypi](https://img.shields.io/pypi/v/epyt.svg)](https://pypi.org/project/epyt/)\n[![Downloads](https://static.pepy.tech/badge/epyt)](https://pepy.tech/project/epyt)\n[![Downloads](https://static.pepy.tech/badge/epyt/month)](https://pepy.tech/project/epyt)\n[![build](https://github.com/OpenWaterAnalytics/EPyT/actions/workflows/build_tests.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPyT/actions/workflows/build_tests.yml)\n[![Documentation Status](https://readthedocs.org/projects/epanet-python-toolkit-epyt/badge/?version=latest)](https://epanet-python-toolkit-epyt.readthedocs.io/en/latest/?badge=latest)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.05947/status.svg)](https://doi.org/10.21105/joss.05947)\n\n\n# EPANET Python Toolkit (EPyT)\n\nThe `EPANET-Python Toolkit` is an open-source software, originally developed by the [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/) which operates within the Python environment, for providing a programming interface for the latest version of [EPANET](https://github.com/OpenWaterAnalytics/epanet), a hydraulic and quality modeling software created by the US EPA, with Python, a  high-level technical computing software. The goal of the EPANET Python Toolkit is to serve as a common programming framework for research and development in the growing field of smart water networks.\n\nThe `EPANET-Python Toolkit` features easy to use commands/wrappers for viewing, modifying, simulating and plotting results produced by the EPANET libraries.  \n\nFor support, please use the OWA community forum: https://github.com/orgs/OpenWaterAnalytics/discussions\n\n## Table of Contents\n\n- [EPANET Python Toolkit (EPyT)](#epanet-python-toolkit-epyt)\n- [How to cite](#how-to-cite)\n- [Requirements](#requirements)\n- [How to install](#how-to-install)\n- [How to use the Toolkit](#how-to-use-the-toolkit)\n- [How to fix/report bugs](#how-to-fixreport-bugs)\n- [Licenses](#licenses)\n- [Contributors](#contributors)\n- [Contributing](#contributing)\n- [Recommendation](#recommendation)\n- [List of Python Class Functions](#list-of-python-class-functions)\n- [List of MSX Functions](#list-of-msx-functions)\n- [List of EPANET 2.2 Functions](#list-of-epanet-22-functions)\n- [List of EPANET MSX Functions API](#list-of-epanet-msx-functions-api)\n## How to cite \n\nKyriakou, M. S., Demetriades, M., Vrachimis, S. G., Eliades, D. G., \u0026 Polycarpou, M. M. (2023). EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations. Journal of Open Source Software, 8(92), 5947. https://doi.org/10.21105/joss.05947\n\n```\n@article{Kyriakou2023,\nauthor = {Kyriakou, Marios S. and Demetriades, Marios and Vrachimis, Stelios G. and Eliades, Demetrios G. and Polycarpou, Marios M.},\ndoi = {10.21105/joss.05947},\njournal = {Journal of Open Source Software},\nmonth = dec,\nnumber = {92},\npages = {5947},\ntitle = {{EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations}},\nurl = {https://joss.theoj.org/papers/10.21105/joss.05947},\nvolume = {8},\nyear = {2023}\n}\n```\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## Requirements\n\n* Python \u003e=3.8\n* Windows, OSX or Linux\n* [EPANET 2.2](https://github.com/OpenWaterAnalytics/epanet)\n\nLinux: `sudo cp libepanet2.so /lib/x86_64-linux-gnu/libepanet.so`\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## How to install\n\n**Environments -\u003e base (root) -\u003e open terminal -\u003e pip install epyt**\n\n* PyPI: \u003cb\u003epip install epyt\u003c/b\u003e\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## How to use the Toolkit\n\n**Minimum Example:**\n\n```python\n\u003e\u003e\u003e from epyt import epanet\n\u003e\u003e\u003e \n\u003e\u003e\u003e d = epanet('Net1.inp')\n\u003e\u003e\u003e d.getNodeCount()\n\u003e\u003e\u003e d.getNodeElevations()\n``` \n\n**Minumun Example using custom Library:**\n```python\n\u003e\u003e\u003e from epyt import epanet\n\u003e\u003e\u003e\n\u003e\u003e\u003eepanetlib=os.path.join(os.getcwd(), 'epyt','libraries','win','epanet2.dll')\n\u003e\u003e\u003emsxlib=os.path.join(os.getcwd(), 'epyt','libraries','win','epanetmsx.dll')\n\u003e\u003e\u003ed = epanet(inpname, customlib=epanetlib)\n\u003e\u003e\u003ed.loadMSXFile(msxname, customMSXlib=msxlib)\n``` \n\n**More examples:** \n\n[https://github.com/KIOS-Research/EPYT/tree/main/epyt/examples](https://github.com/KIOS-Research/EPYT/tree/main/epyt/examples#readme)\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## How to fix/report bugs\n\nTo fix a bug `Fork` the `EPyT`, `Edit` the code and make the appropriate change, and then `Pull` it so that we evaluate it. \n\nKeep in mind that some bugs may exist in the `EPANET` libraries, in case you are not receiving the expected results.\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## Licenses\n\n* `EPANET`: Public Domain\n* `EPANET-Python Toolkit (EPyT)`: EUPL\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## Contributors\n\n* Marios Kyriakou, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n* Marios Demetriades, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n* Stelios Vrachimis, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n* Demetrios Eliades, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n\nThe `EPyT` is based/inspired on the [EPANET-Matlab Toolkit](https://github.com/OpenWaterAnalytics/EPANET-Matlab-Toolkit).\n\n## Contributing\nIf you want to contribute, please check out our [Code of Conduct](https://github.com/KIOS-Research/EPyT/blob/dev/CODE_OF_CONDUCT.md). Everyone is welcome to contribute whether reporting a new [issue](https://github.com/KIOS-Research/EPyT/issues), suggesting a new feature, or writing code. If you want to contribute code, you can create a new fork in the repo to your own account. Make your commits on your dev branch (based on dev) and when you are finished then you can create a [pull request](https://github.com/KIOS-Research/EPyT/pulls) to test the code and discuss your changes.\n\n## Recommendation\n\n* Install Anaconda\u003cbr\u003e\n* Run `EPyT` with [Spyder IDE](https://www.spyder-ide.org/)\n* Run `EPyT` with [PyCharm](https://www.jetbrains.com/pycharm/)\n\n*Settings on Spyder IDE*\n\n* Tools -\u003e Preferrences\n![image](https://user-images.githubusercontent.com/2945956/154067349-3aed266f-3a23-4573-8b93-db0b4f224964.png)\n* View -\u003e Window layouts -\u003e Matlab layout\n* Enable interactive plot on matlibplot\n  : Tools -\u003e Preferences -\u003e IPython console -\u003e Graphics -\u003e Graphics backend -\u003e Backend: Automatic\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## List of Python Class Functions\n\n| Function                          |Description|\n|-----------------------------------|----------|\n| addControls                       |Adds a new simple control|\n| addCurve                          |Adds a new curve appended to the end of the existing curves|\n| addLinkPipe                       |Adds a new pipe|\n| addLinkPipeCV                     |Adds a new control valve pipe|\n| addLinkPump                       |Adds a new pump|\n| addLinkValveFCV                   |Adds a new FCV valve|\n| addLinkValveGPV                   |Adds a new GPV valve|\n| addLinkValvePBV                   |Adds a new PBV valve|\n| addLinkValvePRV                   |Adds a new PRV valve|\n| addLinkValvePSV                   |Adds a new PSV valve|\n| addLinkValveTCV                   |Adds a new TCV valve|\n| addNodeJunction                   |Adds a new junction|\n| addNodeJunctionDemand             |Adds a new demand to a junction given the junction index, base demand, demand time pattern and demand category name|\n| addNodeReservoir                  |Adds a new reservoir|\n| addNodeTank                       |Adds a new tank|\n| addPattern                        |Adds a new time pattern to the network|\n| addRules                          |Adds a new rule-based control to a project|\n| appRotateNetwork                  |Rotates the network by theta degrees counter-clockwise|\n| appShiftNetwork                   |Shifts the network|\n| clearReport                       |Clears the contents of a project's report file|\n| closeHydraulicAnalysis            |Closes the hydraulic analysis system, freeing all allocated memory|\n| closeNetwork                      |Closes down the Toolkit system|\n| closeQualityAnalysis              |Closes the water quality analysis system, freeing all allocated memory|\n| copyReport                        |Copies the current contents of a project's report file to another file|\n| createProject                     |Creates a new epanet projec|\n| deleteAllTemps                    |Delete all temporary files (.inp, .bin) created in networks folder|\n| deleteControls                    |Deletes an existing simple control|\n| deleteCurve                       |Deletes a data curve from a project|\n| deleteLink                        |Deletes a link|\n| deleteNode                        |Deletes nodes|\n| deletePattern                     |Deletes a time pattern from a project|\n| deletePatternsAll                 |Deletes all time patterns from a project|\n| deleteProject                     |Deletes the epanet project|\n| deleteRules                       |Deletes an existing rule-based control given it's index\n| getAdjacencyMatrix                |Compute the adjacency matrix (connectivity graph) considering the flows, using mean flow|\n| getAllAttributes                  |Get all attributes of a given Python object|\n| getCMDCODE                        |Retrieves the CMC code|\n| getComputedHydraulicTimeSeries    |Computes hydraulic simulation and retrieves all time-series\n| getComputedQualityTimeSeries      |Computes Quality simulation and retrieves all or some time-series\n| getComputedTimeSeries             |Run analysis with binary fil\n| getConnectivityMatrix             |Retrieve the Connectivity Matrix of the networ\n| getControlRulesCount              |Retrieves the number of controls\n| getControls                       |Retrieves the parameters of all control statements\n| getCounts                         |Retrieves the number of network components\n| getCurveComment                   |Retrieves the comment string of a curve\n| getCurveCount                     |Retrieves the number of curves\n| getCurveIndex                     |Retrieves the index of a curve with specific ID\n| getCurveLengths                   |Retrieves number of points in a curve\n| getCurveNameID                    |Retrieves the IDs of curves\n| getCurveType                      |Retrieves the curve-type for all curves\n| getCurveTypeIndex                 |Retrieves the curve-type index for all curves\n| getCurveValue                     |Retrieves the X, Y values of points of curves\n| getCurvesInfo                     |Retrieves all the info of curves\n| getDemandModel                    |Retrieves the type of demand model in use and its parameters\n| getENfunctionsImpemented          |Retrieves the epanet functions that have been developed\n| getError                          |Retrieves the text of the message associated with a particular error or warning code\n| getFlowUnits                      |Retrieves flow units used to express all flow rates\n| getLibFunctions                   |Retrieves the functions of DLL\n| getLinkActualQuality              |Retrieves the current computed link quality (read only)\n| getLinkBulkReactionCoeff          |Retrieves the value of all link bulk chemical reaction coefficient\n| getLinkComment                    |Retrieves the comment string assigned to the link object\n| getLinkCount                      |Retrieves the number of links\n| getLinkDiameter                   |Retrieves the value of link diameters\n| getLinkEnergy                     |Retrieves the current computed pump energy usage (read only)\n| getLinkFlows                      |Retrieves the current computed flow rate (read only)\n| getLinkHeadloss                   |Retrieves the current computed head loss (read only)\n| getLinkIndex                      |Retrieves the indices of all links, or the indices of an ID set of links\n| getLinkInitialSetting             |Retrieves the value of all link roughness for pipes or initial speed for pumps or initial setting for valves\n| getLinkInitialStatus              |Retrieves the value of all link initial status\n| getLinkLength                     |Retrieves the value of link lengths\n| getLinkMinorLossCoeff             |Retrieves the value of link minor loss coefficients\n| getLinkNameID                     |Retrieves the ID label(s) of all links, or the IDs of an index set of links\n| getLinkNodesIndex                 |Retrieves the indexes of the from/to nodes of all links\n| getLinkPipeCount                  |Retrieves the number of pipes\n| getLinkPipeIndex                  |Retrieves the pipe indices\n| getLinkPipeNameID                 |Retrieves the pipe ID\n| getLinkPumpCount                  |Retrieves the number of pumps\n| getLinkPumpECost                  |Retrieves the pump average energy price\n| getLinkPumpECurve                 |Retrieves the pump efficiency v\n| getLinkPumpEPat                   |Retrieves the pump energy price time pattern index\n| getLinkPumpEfficiency             |Retrieves the current computed pump efficiency (read only)\n| getLinkPumpHCurve                 |Retrieves the pump head v\n| getLinkPumpHeadCurveIndex         |Retrieves the index of a head curve for all pumps\n| getLinkPumpIndex                  |Retrieves the pump indices\n| getLinkPumpNameID                 |Retrieves the pump ID\n| getLinkPumpPatternIndex           |Retrieves the pump speed time pattern index\n| getLinkPumpPatternNameID          |Retrieves pump pattern name ID\n| getLinkPumpPower                  |Retrieves the pump constant power rating (read only)\n| getLinkPumpState                  |Retrieves the current computed pump state (read only) (see @ref EN_PumpStateType)\n| getLinkPumpSwitches               |Retrieves the number of pump switches\n| getLinkPumpType                   |Retrieves the type of a pump\n| getLinkPumpTypeCode               |Retrieves the code of type of a pump\n| getLinkQuality                    |Retrieves the value of link quality\n| getLinkResultIndex                |Retrieves the order in which a link's results were saved to an output file\n| getLinkRoughnessCoeff             |Retrieves the value of link roughness coefficient\n| getLinkSettings                   |Retrieves the current computed value of all link roughness for pipes or actual speed for pumps or actual setting for valves\n| getLinkStatus                     |Retrieves the current link status (see @ref EN_LinkStatusType) (0 = closed, 1 = open)\n| getLinkType                       |Retrieves the link-type code for all links\n| getLinkTypeIndex                  |Retrieves the link-type code for all links\n| getLinkValveCount                 |Retrieves the number of valves\n| getLinkValveIndex                 |Retrieves the valve indices\n| getLinkValveNameID                |Retrieves the valve ID\n| getLinkVelocity                   |Retrieves the current computed flow velocity (read only)\n| getLinkVertices                   |Retrieves the coordinate's of a vertex point assigned to a link\n| getLinkVerticesCount              |Retrieves the number of internal vertex points assigned to a link\n| getLinkWallReactionCoeff          |Retrieves the value of all pipe wall chemical reaction coefficient\n| getLinksInfo                      |Retrieves all link info\n| getNetworksDatabase               |Retrieves all EPANET Input Files from EPyT database\n| getNodeActualDemand               |Retrieves the computed value of all node actual demands\n| getNodeActualDemandSensingNodes   |Retrieves the computed demand values at some sensing nodes\n| getNodeActualQuality              |Retrieves the computed values of the actual quality for all nodes\n| getNodeActualQualitySensingNodes  |Retrieves the computed quality values at some sensing node\n| getNodeBaseDemands                |Retrieves the value of all node base demands\n| getNodeComment                    |Retrieves the comment string assigned to the node object\n| getNodeCoordinates                \n| getNodeCount                      |Retrieves the number of nodes\n| getNodeDemandCategoriesNumber     |Retrieves the value of all node base demands categorie number\n| getNodeDemandDeficit              |Retrieves the amount that full demand is reduced under PDA\n| getNodeDemandPatternIndex         |Retrieves the value of all node base demands pattern index\n| getNodeDemandPatternNameID        |Retrieves the value of all node base demands pattern name ID\n| getNodeElevations                 |Retrieves the value of all node elevations\n| getNodeEmitterCoeff               |Retrieves the value of all node emmitter coefficients\n| getNodeHydraulicHead              |Retrieves the computed values of all node hydraulic heads\n| getNodeIndex                      |Retrieves the indices of all nodes or some nodes with a specified ID\n| getNodeInitialQuality             |Retrieves the value of all node initial quality\n| getNodeJunctionCount              |Retrieves the number of junction nodes\n| getNodeJunctionDemandIndex        |Retrieves the demand index of the junctions\n| getNodeJunctionDemandName         |Gets the name of a node's demand category\n| getNodeJunctionIndex              |Retrieves the indices of junctions\n| getNodeJunctionNameID             |Retrieves the junction ID label\n| getNodeMassFlowRate               |Retrieves the computed mass flow rates per minute of chemical sources for all nodes\n| getNodeNameID                     |Retrieves the ID label of all nodes or some nodes with a specified index\n| getNodePatternIndex               |Retrieves the value of all node demand pattern indices\n| getNodePressure                   |Retrieves the computed values of all node pressures\n| getNodeReservoirCount             |Retrieves the number of Reservoirs\n| getNodeReservoirIndex             |Retrieves the indices of reservoirs\n| getNodeReservoirNameID            |Retrieves the reservoir ID label\n| getNodeReservoirHeadPatternIndex  |Retrieves the indices of all reservoir head patterns\n| getNodeResultIndex                |Retrieves the order in which a node's results were saved to an output file\n| getNodeSourcePatternIndex         |Retrieves the value of all node source pattern index\n| getNodeSourceQuality              |Retrieves the value of all node source quality\n| getNodeSourceType                 |Retrieves the value of all node source type\n| getNodeSourceTypeIndex            |Retrieves the value of all node source type index\n| getNodeTankBulkReactionCoeff      |Retrieves the tank bulk rate coefficient\n| getNodeTankCanOverFlow            |Retrieves the tank can overflow (= 1) or not (= 0)\n| getNodeTankCount                  |Retrieves the number of Tanks\n| getNodeTankData                   |Retrieves a group of properties for a tank\n| getNodeTankDiameter               |Retrieves the tank diameters\n| getNodeTankIndex                  |Retrieves the tank indices\n| getNodeTankInitialLevel           |Retrieves the value of all tank initial water levels\n| getNodeTankInitialWaterVolume     |Retrieves the tank initial water volume\n| getNodeTankMaximumWaterLevel      |Retrieves the tank maximum water level\n| getNodeTankMaximumWaterVolume     |Retrieves the tank maximum water volume\n| getNodeTankMinimumWaterLevel      |Retrieves the tank minimum water level\n| getNodeTankMinimumWaterVolume     |Retrieves the tank minimum water volume\n| getNodeTankMixZoneVolume          |Retrieves the tank mixing zone volume\n| getNodeTankMixingFraction         |Retrieves the tank Fraction of total volume occupied by the inlet/outlet zone in a 2-compartment tank\n| getNodeTankMixingModelCode        |Retrieves the tank mixing model code\n| getNodeTankMixingModelType        |Retrieves the tank mixing model type\n| getNodeTankNameID                 |Retrieves the tank IDs\n| getNodeTankReservoirCount         |Retrieves the number of tanks\n| getNodeTankVolume                 |Retrieves the tank volume\n| getNodeTankVolumeCurveIndex       |Retrieves the tank volume curve index\n| getNodeType                       |Retrieves the node-type code for all nodes\n| getNodeTypeIndex                  |Retrieves the node-type code for all nodes\n| getNodesConnectingLinksID         |Retrieves the id of the from/to nodes of all links\n| getNodesConnectingLinksIndex      |Retrieves the indexes of the from/to nodes of all links\n| getNodesInfo                      |Retrieves nodes info (elevations, demand patterns, emmitter coeff, initial quality, source quality, source pattern index, source type index, node type index)\n| getOptionsAccuracyValue           |Retrieves the total normalized flow change for hydraulic convergence\n| getOptionsCheckFrequency          |Retrieves the frequency of hydraulic status checks\n| getOptionsDampLimit               |Retrieves the accuracy level where solution damping begins\n| getOptionsDemandCharge            |Retrieves the energy charge per maximum KW usage\n| getOptionsEmitterExponent         |Retrieves the power exponent for the emmitters\n| getOptionsExtraTrials             |Retrieves the extra trials allowed if hydraulics don't converge\n| getOptionsFlowChange              |Retrieves the maximum flow change for hydraulic convergence\n| getOptionsGlobalEffic             |Retrieves the global efficiency for pumps(percent)\n| getOptionsGlobalPattern           |Retrieves the index of the global energy price pattern\n| getOptionsGlobalPrice             |Retrieves the global average energy price per kW-Hour\n| getOptionsHeadError               |Retrieves the maximum head loss error for hydraulic convergence\n| getOptionsHeadLossFormula         |Retrieves the headloss formula\n| getOptionsLimitingConcentration   |Retrieves the limiting concentration for growth reactions\n| getOptionsMaxTrials               |Retrieves the maximum hydraulic trials allowed for hydraulic convergence\n| getOptionsMaximumCheck            |Retrieves the maximum trials for status checking\n| getOptionsPatternDemandMultiplier |Retrieves the global pattern demand multiplier\n| getOptionsPipeBulkReactionOrder   |Retrieves the bulk water reaction order for pipes\n| getOptionsPipeWallReactionOrder   |Retrieves the wall reaction order for pipes (either 0 or 1)\n| getOptionsQualityTolerance        |Retrieves the water quality analysis tolerance\n| getOptionsSpecificDiffusivity     |Retrieves the specific diffusivity (relative to chlorine at 20 deg C)\n| getOptionsSpecificGravity         |Retrieves the specific gravity\n| getOptionsSpecificViscosity       |Retrieves the specific viscosity\n| getOptionsTankBulkReactionOrder   |Retrieves the bulk water reaction order for tanks\n| getPattern                        |Retrieves the multiplier factor for all patterns and all times\n| getPatternAverageValue            |Retrieves the average values of all the time patterns\n| getPatternComment                 |Retrieves the comment string assigned to the pattern object\n| getPatternCount                   |Retrieves the number of patterns\n| getPatternIndex                   |Retrieves the index of all or some time patterns given their IDs\n| getPatternLengths                 |Retrieves the number of time periods in all or some time patterns\n| getPatternNameID                  |Retrieves the ID label of all or some time patterns indices\n| getPatternValue                   |Retrieves the multiplier factor for a certain pattern and time\n| getQualityCode                    |Retrieves the code of water quality analysis type\n| getQualityInfo                    |Retrieves quality analysis information (type, chemical name, units, trace node ID)\n| getQualityTraceNodeIndex          |Retrieves the trace node index of water quality analysis type\n| getQualityType                    |Retrieves the type of water quality analysis type\n| getRuleCount                      |Retrieves the number of rules\n| getRuleID                         |Retrieves the ID name of a rule-based control given its index\n| getRuleInfo                       |Retrieves summary information about a rule-based control given it's index\n| getRules                          |Retrieves the rule - based control statements\n| getStatistic                      |Returns error code\n| getTimeHTime                      |Retrieves the elapsed time of current hydraulic solution\n| getTimeHaltFlag                   |Retrieves the number of halt flag indicating if the simulation was halted\n| getTimeHydraulicStep              |Retrieves the value of the hydraulic time step\n| getTimeNextEvent                  |Retrieves the shortest time until a tank becomes empty or full\n| getTimeNextEventTank              |Retrieves the index of tank with shortest time to become empty or full\n| getTimePatternStart               |Retrieves the value of pattern start time\n| getTimePatternStep                |Retrieves the value of the pattern time step\n| getTimeQTime                      |Retrieves the elapsed time of current quality solution\n| getTimeQualityStep                |Retrieves the value of the water quality time step\n| getTimeReportingPeriods           |Retrieves the number of reporting periods saved to the binary\n| getTimeReportingStart             |Retrieves the value of the reporting start time\n| getTimeReportingStep              |Retrieves the value of the reporting time step\n| getTimeRuleControlStep            |Retrieves the time step for evaluating rule-based controls\n| getTimeSimulationDuration         |Retrieves the value of simulation duration\n| getTimeStartTime                  |Retrieves the simulation starting time of day\n| getTimeStatisticsIndex            |Retrieves the index of the type of time series post-processing\n| getTimeStatisticsType             |Retrieves the type of time series post-processing\n| getTitle                          |Retrieves the title lines of the project\n| getUnits                          |Retrieves the Units of Measurement\n| getVersion                        |Retrieves the current EPANET version of DLL\n| initializeEPANET                  |Initializes an EPANET project that isn't opened with an input fil\n| initializeHydraulicAnalysis       |Initializes storage tank levels, link status and settings, and the simulation clock time prior to running a hydraulic analysis\n| initializeQualityAnalysis         |Initializes water quality and the simulation clock time prior to running a water quality analysis\n| loadEPANETFile                    |Load epanet file when use bin functions\n| loadMSXEPANETFile                 |Re-Load EPANET MSX file - parfor\n| nextHydraulicAnalysisStep         |Determines the length of time until the next hydraulic event occurs in an extended period simulation\n| nextQualityAnalysisStep           |Advances the water quality simulation to the start of the next hydraulic time period\n| openAnyInp                        |Open as on matlab editor any EPANET input file using built function open\n| openCurrentInp                    |Opens EPANET input file who is loade\n| openHydraulicAnalysis             |Opens the hydraulics analysis system\n| openQualityAnalysis               |Opens the water quality analysis system\n| plot                              |Plot Network, show all components, plot pressure/flow/elevation|\n| plot_close                        |Close all open figures|\n| plot_save                         |Save plot|\n| plot_show                         |Show plot|\n| reloadNetwork                     |Reloads the Network (ENopen)\n| runEPANETexe                      |Runs epanet .exe file|\n| runHydraulicAnalysis              |Runs a single period hydraulic analysis, retrieving the current simulation clock time t\n| runQualityAnalysis                |Makes available the hydraulic and water quality results that occur at the start of the next time period of a water quality analysis, where the start of the period is returned in t\n| runsCompleteSimulation            |Runs a complete hydraulic and water simulation to create binary \u0026 report files with name: [NETWORK_temp.txt], [NETWORK_temp.bin] OR you can use argument to runs a complete simulation via self.api.en_epane\n| saveHydraulicFile                 |Saves the current contents of the binary hydraulics file to a file\n| saveHydraulicsOutputReportingFile |Transfers results of a hydraulic simulation from the binary Hydraulics file to the binary Output file, where results are only reported at uniform reporting intervals\n| saveInputFile                     |Writes all current network input data to a file using the format of an EPANET input file\n| setCMDCODE                        |Sets the CMC code|\n| setControls                       |Sets the parameters of a simple control statement\n| setCurve                          |Sets x, y values for a specific curve\n| setCurveComment                   |Sets the comment string of a curve\n| setCurveNameID                    |Sets the name ID of a curve given it's index and the new ID\n| setCurveValue                     |Sets x, y point for a specific point number and curve\n| setDemandModel                    |Sets the type of demand model to use and its parameters\n| setFlowUnitsAFD                   |Sets flow units to AFD(Acre-Feet per Day)\n| setFlowUnitsCFS                   |Sets flow units to CFS(Cubic Feet per Second)\n| setFlowUnitsCMD                   |Sets flow units to CMD(Cubic Meters per Day)\n| setFlowUnitsCMH                   |Sets flow units to CMH(Cubic Meters per Hour)\n| setFlowUnitsGPM                   |Sets flow units to GPM(Gallons Per Minute)\n| setFlowUnitsIMGD                  |Sets flow units to IMGD(Imperial Million Gallons per Day)\n| setFlowUnitsLPM                   |Sets flow units to LPM(Liters Per Minute)\n| setFlowUnitsLPS                   |Sets flow units to LPS(Liters Per Second)\n| setFlowUnitsMGD                   |Sets flow units to MGD(Million Gallons per Day)\n| setFlowUnitsMLD                   |Sets flow units to MLD(Million Liters per Day)\n| setLinkBulkReactionCoeff          |Sets the value of bulk chemical reaction coefficient\n| setLinkComment                    |Sets the comment string assigned to the link object\n| setLinkDiameter                   |Sets the values of diameters\n| setLinkInitialSetting             |Sets the values of initial settings, roughness for pipes or initial speed for pumps or initial setting for valves\n| setLinkInitialStatus              |Sets the values of initial status\n| setLinkLength                     |Sets the values of lengths\n| setLinkMinorLossCoeff             |Sets the values of minor loss coefficient\n| setLinkNameID                     |Sets the ID name for links\n| setLinkNodesIndex                 |Sets the indexes of a link's start- and end-nodes\n| setLinkPipeData                   |Sets a group of properties for a pipe\n| setLinkPumpECost                  |Sets the pump average energy price\n| setLinkPumpECurve                 |Sets the pump efficiency v\n| setLinkPumpEPat                   |Sets the pump energy price time pattern index\n| setLinkPumpHCurve                 |Sets the pump head v\n| setLinkPumpHeadCurveIndex         |Sets the curves index for pumps index|\n| setLinkPumpPatternIndex           |Sets the pump speed time pattern index\n| setLinkPumpPower                  |Sets the power for pumps\n| setLinkRoughnessCoeff             |Sets the values of roughness coefficient\n| setLinkSettings                   |Sets the values of current settings, roughness for pipes or initial speed for pumps or initial setting for valves\n| setLinkStatus                     |Sets the values of current status for links\n| setLinkTypePipe                   |Sets the link type pipe for a specified link\n| setLinkTypePipeCV                 |Sets the link type cvpipe(pipe with check valve) for a specified link\n| setLinkTypePump                   |Sets the link type pump for a specified link\n| setLinkTypeValveFCV               |Sets the link type valve FCV(flow control valve) for a specified link\n| setLinkTypeValveGPV               |Sets the link type valve GPV(general purpose valve) for a specified link\n| setLinkTypeValvePBV               |Sets the link type valve PBV(pressure breaker valve) for a specified link\n| setLinkTypeValvePRV               |Sets the link type valve PRV(pressure reducing valve) for a specified link\n| setLinkTypeValvePSV               |Sets the link type valve PSV(pressure sustaining valve) for a specified link\n| setLinkTypeValveTCV               |Sets the link type valve TCV(throttle control valve) for a specified link\n| setLinkVertices                   |Assigns a set of internal vertex points to a link\n| setLinkWallReactionCoeff          |Sets the value of wall chemical reaction coefficient\n| setNodeBaseDemands                |Sets the values of demand for nodes\n| setNodeComment                    |Sets the comment string assigned to the node object\n| setNodeCoordinates                |Sets node coordinates\n| setNodeDemandPatternIndex         |Sets the values of demand time pattern indices\n| setNodeReservoirHeadPatternIndex  |Sets the pattern index for a reservoir node head\n| setNodeElevations                 |Sets the values of elevation for nodes\n| setNodeEmitterCoeff               |Sets the values of emitter coefficient for nodes\n| setNodeInitialQuality             |Sets the values of initial quality for nodes\n| setNodeJunctionData               |Sets a group of properties for a junction node\n| setNodeJunctionDemandName         |Assigns a name to a node's demand category\n| setNodeNameID                     |Sets the ID name for nodes\n| setNodeSourcePatternIndex         |Sets the values of quality source pattern index\n| setNodeSourceQuality              |Sets the values of quality source strength\n| setNodeSourceType                 |Sets the values of quality source type\n| setNodeTankBulkReactionCoeff      |Sets the tank bulk reaction coefficient\n| setNodeTankCanOverFlow            |Sets the tank can-overflow (= 1) or not (= 0)\n| setNodeTankData                   |Sets a group of properties for a tank\n| setNodeTankDiameter               |Sets the diameter value for tanks\n| setNodeTankInitialLevel           |Sets the values of initial level for tanks\n| setNodeTankMaximumWaterLevel      |Sets the maximum water level value for tanks\n| setNodeTankMinimumWaterLevel      |Sets the minimum water level value for tanks\n| setNodeTankMinimumWaterVolume     |Sets the minimum water volume value for tanks\n| setNodeTankMixingFraction         |Sets the tank mixing fraction of total volume occupied by the inlet/outlet zone in a 2-compartment tank\n| setNodeTankMixingModelType        |Sets the mixing model type value for tanks\n| setNodeTypeJunction               |Transforms a node to JUNCTION The new node keeps the id,coordinates and elevation of the deleted on\n| setNodeTypeReservoir              |Transforms a node to RESERVOIR The new node keeps the id,coordinates and elevation of the deleted on\n| setNodeTypeTank                   |Transforms a node to TANK The new node keeps the id,coordinates and elevation of the deleted on\n| setNodesConnectingLinksID         |Sets the IDs of a link's start- and end-nodes\n| setOptionsAccuracyValue           |Sets the total normalized flow change for hydraulic convergence\n| setOptionsCheckFrequency          |Sets the frequency of hydraulic status checks\n| setOptionsDampLimit               |Sets the accuracy level where solution damping begins\n| setOptionsDemandCharge            |Sets the energy charge per maximum KW usage\n| setOptionsEmitterExponent         |Sets the power exponent for the emmitters\n| setOptionsExtraTrials             |Sets the extra trials allowed if hydraulics don't converge\n| setOptionsFlowChange              |Sets the maximum flow change for hydraulic convergence\n| setOptionsGlobalEffic             |Sets the global efficiency for pumps(percent)\n| setOptionsGlobalPattern           |Sets the global energy price pattern\n| setOptionsGlobalPrice             |Sets the global average energy price per kW-Hour\n| setOptionsHeadError               |Sets the maximum head loss error for hydraulic convergence\n| setOptionsHeadLossFormula         |Sets the headloss formula\n| setOptionsLimitingConcentration   |Sets the limiting concentration for growth reactions\n| setOptionsMaxTrials               |Sets the maximum hydraulic trials allowed for hydraulic convergence\n| setOptionsMaximumCheck            |Sets the maximum trials for status checking\n| setOptionsPatternDemandMultiplier |Sets the global pattern demand multiplier\n| setOptionsPipeBulkReactionOrder   |Sets the bulk water reaction order for pipes\n| setOptionsPipeWallReactionOrder   |Sets the wall reaction order for pipes (either 0 or 1)\n| setOptionsQualityTolerance        |Sets the water quality analysis tolerance\n| setOptionsSpecificDiffusivity     |Sets the specific diffusivity (relative to chlorine at 20 deg C)\n| setOptionsSpecificGravity         |Sets the specific gravity\n| setOptionsSpecificViscosity       |Sets the specific viscosity\n| setOptionsTankBulkReactionOrder   |Sets the bulk water reaction order for tanks\n| setPattern                        |Sets all of the multiplier factors for a specific time pattern\n| setPatternComment                 |Sets the comment string assigned to the pattern object\n| setPatternMatrix                  |Sets all of the multiplier factors for all time patterns\n| setPatternNameID                  |Sets the name ID of a time pattern given it's index and the new ID\n| setPatternValue                   |Sets the multiplier factor for a specific period within a time pattern\n| setQualityType                    |Sets the type of water quality analysis called for\n| setReport                         |Issues a report formatting command\n| setReportFormatReset              |Resets a project's report options to their default values\n| setReportStatus                   |Sets the level of hydraulic status reporting\n| setRuleElseAction                 |Sets rule - based control else actions\n| setRulePremise                    |Sets the premise of a rule - based control\n| setRulePremiseObejctNameID        |Sets the ID of an object in a premise of a rule-based control\n| setRulePremiseStatus              |Sets the status being compared to in a premise of a rule-based control\n| setRulePremiseValue               |Sets the value being compared to in a premise of a rule-based control\n| setRulePriority                   |Sets rule - based control priority\n| setRuleThenAction                 |Sets rule - based control then actions\n| setRules                          |Sets a rule - based control\n| setTimeHydraulicStep              |Sets the hydraulic time step\n| setTimePatternStart               |Sets the time when time patterns begin\n| setTimePatternStep                |Sets the time pattern step\n| setTimeQualityStep                |Sets the quality time step\n| setTimeReportingStart             |Sets the time when reporting starts\n| setTimeReportingStep              |Sets the reporting time step\n| setTimeRuleControlStep            |Sets the rule-based control evaluation time step\n| setTimeSimulationDuration         |Sets the simulation duration (in seconds)\n| setTimeStatisticsType             |Sets the statistic type\n| setTitle                          |Sets the title lines of the project\n| solveCompleteHydraulics           |Runs a complete hydraulic simulation with results for all time periods written to the binary Hydraulics file\n| solveCompleteQuality              |Runs a complete water quality simulation with results at uniform reporting intervals written to EPANET's binary Output file\n| splitPipe                         |Splits a pipe, creating two new pipes and adds a junction/node in between\n| stepQualityAnalysisTimeLeft       |Advances the water quality simulation one water quality time step\n| unload                            |unload library and close the EPANET Toolkit system\n| useHydraulicFile                  |Uses the contents of the specified file as the current binary hydraulics file\n| writeLineInReportFile             |Writes a line of text to the EPANET report file\n| writeReport                       |Writes a formatted text report on simulation results to the Report file\n\n## List of MSX Functions \n|Function|Description|\n|---------|----------|            \n| addMSXPattern                   | Adds a new, empty MSX source time pattern to the project |\n| getMSXAreaUnits                 | Retrieves the area units (FT2/M2/CM2) |\n| getMSXAtol                      | Retrieves the absolute concentration tolerance |\n| getMSXCompiler                  | Retrieves the compiler (NONE/VC/GC) |\n| getMSXComputedLinkQualitySpecie | Returns the link quality for specific specie |\n| getMSXComputedNodeQualitySpecie | Returns the node quality for specific specie |\n| getMSXComputedQualityLink       | Returns the computed quality for links. |\n| getMSXComputedQualityNode       | Retrieves the concentration of a chemical species at a specific node of the network at the current simulation time step. |\n| getMSXComputedQualitySpecie     | Retrieves the quality values for specific specie (e.g getMSXComputedQualitySpecie('CL2')) |\n| getMSXComputedQualitySpecie     | Retrieves the quality values for specific specie (e.g getMSXComputedQualitySpecie(['CL2'])) |\n| getMSXConstantsCount            | Retrieves the number of constants |\n| getMSXConstantsIndex            | Retrieves the internal index number of constants (given its ID name) |\n| getMSXConstantsNameID           | Retrieves the ID name of constants (given its internal index number) |\n| getMSXConstantsValue            | Retrieves the constant's value. |\n| getMSXCoupling                  | Retrieves the coupling (FULL/NONE) |\n| getMSXEquationsPipes            | Retrieves the species dynamics in pipes |\n| getMSXEquationsTanks            | Retrieves the species dynamics in tanks |\n| getMSXEquationsTerms            | Retrieves the species dynamics in terms |\n| getMSXError                     | Returns the text for an error message given its error code |\n| getMSXLinkInitqualValue         | Retrieves the initial concentration of chemical species assigned to links of the pipe network |\n| getMSXNodeInitqualValue         | Retrieves the initial concentration of chemical species assigned to nodes |\n| getMSXOptions                   | Retrieves all the msx option parameters |\n| getMSXParametersCount           | Retrieves the number of parameters |\n| getMSXParametersIndex           | Retrieves the indices of parameters |\n| getMSXParametersNameID          | Retrieves the ID name of parameters |\n| getMSXParametersPipesValue      | Retrieves the value of reaction parameters for pipes |\n| getMSXParametersTanksValue      | Retrieves the value of reaction parameters for tanks |\n| getMSXPattern                   | Retrieves the multiplier factor for all patterns and all times |\n| getMSXPatternValue              | Retrieves the multiplier at a specific time period for a given source time pattern |\n| getMSXPatternsCount             | Retrieves the number of patterns |\n| getMSXPatternsIndex             | Retrieves the indices of patterns |\n| getMSXPatternsLengths           | Retrieves the number of time periods in all or some patterns |\n| getMSXPatternsNameID            | Retrieves the patterns IDs |\n| getMSXRateUnits                 | Retrieves the rate/time units (SEC/MIN/HR/DAY) |\n| getMSXRtol                      | Retrieves the relative concentration tolerance |\n| getMSXSolver                    | Retrieves the solver method. |\n| getMSXSourceLevel               | Retrieves the value of all nodes source level |\n| getMSXSourceNodeNameID          | Retrieves the ID label of all nodes |\n| getMSXSourcePatternIndex        | Retrieves the value of all node source pattern index |\n| getMSXSourceType                | Retrieves the value of all node source type |\n| getMSXSources                   | Retrieves Msx sources |\n| getMSXSpeciesATOL               | Retrieves the atol |\n| getMSXSpeciesConcentration      | Retrieves the concentration of chemical species for nodes and links |\n| getMSXSpeciesCount              | Retrieves the number of species |\n| getMSXSpeciesIndex              | Retrieves the indices of species |\n| getMSXSpeciesNameID             | Retrieves the species IDs |\n| getMSXSpeciesRTOL               | Retrieves the rtol |\n| getMSXSpeciesType               | Retrieves the type of all species (BULK/WALL) |\n| getMSXSpeciesUnits              | Retrieves the species mass units |\n| getMSXTimeStep                  | Retrieves the time step |\n| getMethods                      | Returns all methods of epanet |\n| loadMSXFile        \t\t\t  | Loads an msx file |\n| initializeMSXQualityAnalysis    | Initializes the MSX system before solving for water quality results in step-wise fashion |\n| plotMSXSpeciesLinkConcentration | Plots concentration of species for links over time. |\n| plotMSXSpeciesNodeConcentration | Plots concentration of species for nodes over time. |\n| saveMSXFile                     | Saves the data associated with the current MSX project into a new MSX input file |\n| saveMSXQualityFile              | Saves water quality results computed for each node, link and reporting time period to a named binary file |\n| setMSXAreaUnitsCM2              | Sets area units to CM2 |\n| setMSXAreaUnitsFT2              | Sets area units to FT2 |\n| setMSXAreaUnitsM2               | Sets area units to M2 |\n| setMSXAtol                      | Sets the value of Atol |\n| setMSXCompilerGC                | Sets compilet to GC |\n| setMSXCompilerNONE              | Sets compiler to None |\n| setMSXCompilerVC                | Sets compiler to VC |\n| setMSXConstantsValue            | Assigns a new value to a specific reaction constant |\n| setMSXCouplingFULL              | Sets coupling option to FULL |\n| setMSXCouplingNONE              | Sets coupling option to NONE |\n| setMSXLinkInitqualValue         | Assigns an initial concentration of chemical species to links |\n| setMSXNodeInitqualValue         | Assigns an initial concentration of chemical species to nodes |\n| setMSXParametersPipesValue      | Assigns a value to a particular reaction parameter for given pipes |\n| setMSXParametersTanksValue      | Assigns a value to a particular reaction parameter for given tanks |\n| setMSXPattern                   | Sets all of the multiplier factors for a specific time pattern |\n| setMSXPatternMatrix             | Sets the multiplier factors for all patterns |\n| setMSXPatternValue              | Assigns a new value to the multiplier for a specific time period in a given MSX source time pattern |\n| setMSXRateUnitsDAY              | Sets rate units to DAY |\n| setMSXRateUnitsHR               | Sets rate units to HR |\n| setMSXRateUnitsMIN              | Sets rate units to MIN |\n| setMSXRateUnitsSEC              | Sets rate units to SEC |\n| setMSXRtol                      | Sets the value of Rtol |\n| setMSXSolverEUL                 | Sets solver to EUL (standard Euler integrator) |\n| setMSXSolverRK5                 | Sets solver to RK5 (Runge-Kutta 5th order integrator) |\n| setMSXSolverROS2                | Sets solver to ROS2 (2nd order Rosenbrock integrator) |\n| setMSXSources                   | Sets the attributes of an external source of a particular chemical species to a specific node of the pipe network |\n| setMSXTimeStep                  | Sets time step |\n| solveMSXCompleteHydraulics      | Solves for system hydraulics over the entire simulation period saving results to an internal scratch file |\n| solveMSXCompleteQuality         | Solves for water quality over the entire simulation period and saves the results to an internal scratch file |\n| stepMSXQualityAnalysisTimeLeft  | Advances the water quality solution through a single water quality time step when performing a step-wise simulation |\n| useMSXHydraulicFile             | Uses a previously saved EPANET hydraulics file as the source of hydraulic information |\n| unloadMSX                       | Unloads MSX file |\n| writeMSXFile                    | Write a new MSX file |\n| writeMSXReport                  | Writes MSX report |\n\n## List of EPANET 2.2 Functions \n\n|Function|Description|\n|---------|----------|\n|ENepanet|Runs a complete EPANET simulation\n|ENaddcontrol|Adds a new simple control to a project\n|ENaddcurve|Adds a new data curve to a project\n|ENadddemand|Appends a new demand to a junction node demands list\n|ENaddlink|Adds a new link to a project\n|ENaddnode|Adds a new node to a project\n|ENaddpattern|Adds a new time pattern to a project\n|ENaddrule|Adds a new rule-based control to a project\n|ENclearreport|Clears the contents of a project's report file\n|ENclose|Closes a project and frees all of its memory\n|ENcloseH|Closes the hydraulic solver freeing all of its allocated memory\n|ENcloseQ|Closes the water quality solver, freeing all of its allocated memory\n|ENcopyreport|Copies the current contents of a project's report file to another file\n|ENcreateproject|Copies the current contents of a project's report file to another file\n|ENdeletecontrol|Deletes an existing simple control\n|ENdeletecurve|Deletes a data curve from a project\n|ENdeletedemand|Deletes a demand from a junction node\n|ENdeletelink|Deletes a link from the project\n|ENdeletenode|Deletes a node from a project\n|ENdeletepattern|Deletes a time pattern from a project\n|ENdeleteproject|Deletes an EPANET project\n|ENdeleterule|Deletes an existing rule-based control\n|ENgetaveragepatternvalue|Retrieves the average of all pattern factors in a time pattern\n|ENgetbasedemand|Gets the base demand for one of a node's demand categories\n|ENgetcomment|Sets a comment to a specific index\n|ENgetcontrol|Retrieves the comment of a specific index of a type object\n|ENgetcoord|Gets the (x,y) coordinates of a node\n|ENgetcount|Retrieves the number of objects of a given type in a project\n|ENgetcurve|Retrieves all of a curve's data\n|ENgetcurveid|Retrieves the ID name of a curve given its index\n|ENgetcurveindex|Retrieves the index of a curve given its ID name\n|ENgetcurvelen|Retrieves the number of points in a curve\n|ENgetcurvetype|Retrieves a curve's type\n|ENgetcurvevalue|Retrieves the value of a single data point for a curve\n|ENgetdemandindex|Retrieves the index of a node's named demand category\n|ENgetdemandmodel|Retrieves the type of demand model in use and its parameters\n|ENgetdemandname|Retrieves the name of a node's demand category\n|ENgetdemandpattern|Retrieves the index of a time pattern assigned to one of a node's demand categories\n|ENgetelseaction|Gets the properties of an ELSE action in a rule-based control\n|ENgeterror|Returns the text of an error message generated by an error code, as warning\n|ENgetflowunits|Retrieves a project's flow units\n|ENgetheadcurveindex|Retrieves the curve assigned to a pump's head curve\n|ENgetlinkid|Gets the ID name of a link given its index\n|ENgetlinkindex|Gets the index of a link given its ID name\n|ENgetlinknodes|Gets the indexes of a link's start- and end-nodes\n|ENgetlinktype|Retrieves a link's type\n|ENgetlinkvalue|Retrieves a property value for a link\n|ENgetnodeid|Gets the ID name of a node given its index\n|ENgetnodeindex|Gets the index of a node given its ID name\n|ENgetnodetype|Retrieves a node's type given its index\n|ENgetnodevalue|Retrieves a property value for a node\n|ENgetnumdemands|Retrieves the number of demand categories for a junction node\n|ENgetoption|Retrieves the value of an analysis option\n|ENgetpatternid|Retrieves the ID name of a time pattern given its index\n|ENgetpatternindex|Retrieves the index of a time pattern given its ID name\n|ENgetpatternlen|Retrieves the number of time periods in a time pattern\n|ENgetpatternvalue|Retrieves a time pattern's factor for a given time period\n|ENgetpremise|Gets the properties of a premise in a rule-based control\n|ENgetpumptype|Retrieves the type of head curve used by a pump\n|ENgetqualinfo|Gets information about the type of water quality analysis requested\n|ENgetqualtype|Retrieves the type of water quality analysis to be run\n|ENgetresultindex|Retrieves the order in which a node or link appears in an output file\n|ENgetrule|Retrieves summary information about a rule-based control\n|ENgetruleID|Gets the ID name of a rule-based control given its index\n|ENgetstatistic|Retrieves a particular simulation statistic\n|ENgetthenaction|Gets the properties of a THEN action in a rule-based control\n|ENgettimeparam|Retrieves the value of a time parameter\n|ENgettitle|Retrieves the title lines of the project\n|ENgetversion|Retrieves the toolkit API version number\n|ENgetvertex|Retrieves the coordinate's of a vertex point assigned to a link\n|ENgetvertexcount|Retrieves the number of internal vertex points assigned to a link\n|ENinit|Initializes an EPANET project\n|ENinitH|Initializes a network prior to running a hydraulic analysis\n|ENinitQ|Initializes a network prior to running a water quality analysis\n|ENnextH| Determines the length of time until the next hydraulic event occurs in an extended period simulation\n|ENnextQ|Advances a water quality simulation over the time until the next hydraulic event\n|ENopen|Opens an EPANET input file \u0026 reads in network data\n|ENopenH|Opens a project's hydraulic solver\n|ENopenQ|Opens a project's water quality solver\n|ENreport|Writes simulation results in a tabular format to a project's report file\n|ENresetreport|Resets a project's report options to their default values\n|ENrunH|Computes a hydraulic solution for the current point in time\n|ENrunQ|Makes hydraulic and water quality results at the start of the current time period available to a project's water quality solver\n|ENsaveH|Transfers a project's hydraulics results from its temporary hydraulics file to its binary output file, where results are only reported at uniform reporting intervals\n|ENsavehydfile|Saves a project's temporary hydraulics file to disk\n|ENsaveinpfile|Saves a project's data to an EPANET-formatted text file\n|ENsetbasedemand|Sets the base demand for one of a node's demand categories\n|ENsetcomment|Sets a comment to a specific index\n|ENsetcontrol|Sets the properties of an existing simple control\n|ENsetcoord|Sets the (x,y) coordinates of a node\n|ENsetcurve|Assigns a set of data points to a curve\n|ENsetcurveid|Changes the ID name of a data curve given its index\n|ENsetcurvevalue|Sets the value of a single data point for a curve\n|ENsetdemandmodel|Sets the Type of demand model to use and its parameters\n|ENsetdemandname|Assigns a name to a node's demand category\n|ENsetdemandpattern|Sets the index of a time pattern used for one of a node's demand categories\n|ENsetelseaction|Sets the properties of an ELSE action in a rule-based control\n|ENsetflowunits|Sets a project's flow units\n|ENsetheadcurveindex|Assigns a curve to a pump's head curve\n|ENsetjuncdata|Sets a group of properties for a junction node\n|ENsetlinkid|Changes the ID name of a link\n|ENsetlinknodes|Sets the indexes of a link's start- and end-nodes\n|ENsetlinktype|Changes a link's type\n|ENsetlinkvalue|Sets a property value for a link\n|ENsetnodeid|Changes the ID name of a node\n|ENsetnodevalue|Sets a property value for a node\n|ENsetoption|Sets the value for an anlysis option\n|ENsetpattern|Sets the pattern factors for a given time pattern\n|ENsetpatternid|Changes the ID name of a time pattern given its index\n|ENsetpatternvalue|Sets a time pattern's factor for a given time period\n|ENsetpipedata|Sets a group of properties for a pipe link\n|ENsetpremise|Sets the properties of a premise in a rule-based control\n|ENsetpremiseindex|Sets the index of an object in a premise of a rule-based control\n|ENsetpremisestatus|Sets the status being compared to in a premise of a rule-based control\n|ENsetpremisevalue|Sets the value in a premise of a rule-based control\n|ENsetqualtype|Sets the type of water quality analysis to run\n|ENsetreport|Processes a reporting format command\n|ENsetrulepriority|Sets the priority of a rule-based control\n|ENsetstatusreport|Sets the level of hydraulic status reporting\n|ENsettankdata|Sets a group of properties for a tank node\n|ENsetthenaction|Sets the properties of a THEN action in a rule-based control\n|ENsettimeparam|Sets the value of a time parameter\n|ENsettitle|Sets the title lines of the project\n|ENsetvertices|Assigns a set of internal vertex points to a link\n|ENsolveH|Runs a complete hydraulic simulation with results for all time periods written to a temporary hydraulics file\n|ENsolveQ| Runs a complete water quality simulation with results at uniform reporting intervals written to the project's binary output file\n|ENstepQ|Advances a water quality simulation by a single water quality time step\n|ENusehydfile|Uses a previously saved binary hydraulics file to supply a project's hydraulics\n|ENwriteline|Writes a line of text to a project's report file\n\n## List of EPANET MSX Functions API\n\n| Function           | Description                                                                                                                              |\n|--------------------|------------------------------------------------------------------------------------------------------------------------------------------|\n| MSXaddpattern      | Adds a new empty MSX source time pattern to an MSX project |\n| MSXclose           | Close .msx file |\n| MSXerror           | Retrieves the MSX erorr message for specific erorr code |\n| MSXgetID           | Retrieves the ID name of an object given its internal index number |\n| MSXgetIDlen        | Retrieves the number of characters in the ID name of an MSX object given its internal index number |\n| MSXgetconstant     | Retrieves the value of a particular rection constant |\n| MSXgetcount        | Retrieves the number of objects of a specific type |\n| MSXgeterror        | Returns the text for an error message given its error code |\n| MSXgetindex        | Retrieves the number of objects of a specific type |\n| MSXgetinitqual     | Retrieves the intial concetration of a particular chemical species assigned to a specific node or link of the pipe network |\n| MSXgetparameter    | Retrieves the value of a particular reaction parameter for a given pipe |\n| MSXgetpatternlen   | Retrieves the number of time periods within a source time pattern |\n| MSXgetpatternvalue | Retrieves the multiplier at a specific time period for a given source time pattern |\n| MSXgetqual         | Retrieves a chemical species concentration at a given node or the average concentration along a link at the current sumulation time step |\n| MSXgetsource       | Retrieves information on any external source of a particular chemical species assigned to a specific node or link of the pipe network |\n| MSXgetspecies      | Retrieves the attributes of a chemical species given its internal index number |\n| MSXinit            | Initialize the MSX system before solving for water quality results in the step-wise fashion |\n| MSXopen            | Opens .MSX file |\n| MSXreport          | Writes water quality simulations results as instructed by MSX input file to a text file |\n| MSXsavemsxfile     | Saves the data associated with the current MSX project into a new MSX input file |\n| MSXsaveoutfile     | Saves water quality results computed for each node, link and reporting time period to a named binary file |\n| MSXsetconstant     | Assigns a new value to a specific reaction constant |\n| MSXsetinitqual     | Assigns an initial concetration of a particular chemical species node or link of the pipe network |\n| MSXsetparameter    | Assigns a value to a particular reaction parameter for a given pipe or tank within the pipe network |\n| MSXsetpattern      | Assigns a new set of multipliers to a given MSX source time pattern |\n| MSXsetpatternvalue | Assigns a new value to the multiplier for a specific time period in a given MSX source time pattern |\n| MSXsetsource       | Sets the attributes of an external source of particular chemical species to specific node of the pipe network |\n| MSXsolveH          | Solves for system hydraulics over the entire simulation period saving results to an internal scratch file |\n| MSXsolveQ          | Solves for water quality over the entire simulation period and saves the results to an internal scratch file |\n| MSXstep            | Advances the water quality solution through a single water quality time step when performing a step-wise simulation |\n| MSXusehydfile      | Uses a previously saved EPANET hydraulics file as the source of hydraulic information |\n\n\n\n\u0026uparrow; [Back to top](#table-of-contents)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenWaterAnalytics%2FEPyT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOpenWaterAnalytics%2FEPyT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenWaterAnalytics%2FEPyT/lists"}