diff --git a/doc/html/DataFlow.png b/doc/html/DataFlow.png new file mode 100644 index 0000000..a499f45 Binary files /dev/null and b/doc/html/DataFlow.png differ diff --git a/doc/html/DistributionSystem.png b/doc/html/DistributionSystem.png new file mode 100644 index 0000000..4804e7e Binary files /dev/null and b/doc/html/DistributionSystem.png differ diff --git a/doc/html/Example2.png b/doc/html/Example2.png new file mode 100644 index 0000000..bff8f4e Binary files /dev/null and b/doc/html/Example2.png differ diff --git a/doc/html/Network.png b/doc/html/Network.png new file mode 100644 index 0000000..3a6df9e Binary files /dev/null and b/doc/html/Network.png differ diff --git a/doc/html/_action_clauses.html b/doc/html/_action_clauses.html new file mode 100644 index 0000000..7daa93f --- /dev/null +++ b/doc/html/_action_clauses.html @@ -0,0 +1,99 @@ + + +
+ + + + +|
+ EPANET
+ 2.2.0
+
+ |
+
An action clause in a Rule-Based Control takes the form of:
+object id STATUS / SETTING IS value
+where
| object | = | LINK, PIPE, PUMP, or VALVE keyword |
| id | = | the object's ID label |
| value | = | a status condition (OPEN or CLOSED), pump speed setting, or valve setting |
+ Some example action clauses are:
+ LINK 23 STATUS IS CLOSED
+ PUMP P100 SETTING IS 1.5
+ VALVE 123 SETTING IS 90
+
See the notes for the [STATUS] section for conventions used in specifying link status and setting, particularly for control valves.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_backdrop_page.html b/doc/html/_backdrop_page.html
new file mode 100644
index 0000000..0ea9ee3
--- /dev/null
+++ b/doc/html/_backdrop_page.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Identifies a backdrop image and dimensions for visualizing the network's layout.
+Formats:
| DIMENSIONS | LLx LLy URx URy |
| UNITS | FEET/METERS/DEGREES/NONE |
| FILE | filename |
| OFFSET | X Y |
Definitions:
+DIMENSIONS provides the X and Y coordinates of the lower-left and upper-right corners of the network's bounding rectangle. Defaults are the extents of the nodal coordinates supplied in the [COORDINATES] section.
+UNITS specifies the units that the network's dimensions are given in. Default is NONE.
+FILE supplies the name of the file that contains a backdrop image for the network.
+OFFSET lists the X and Y distance that the upper-left corner of the backdrop image is offset from the upper-left corner of the network's bounding rectangle. Default is zero offset.
+Remarks:
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_condition_clauses.html b/doc/html/_condition_clauses.html
new file mode 100644
index 0000000..fbe9dbe
--- /dev/null
+++ b/doc/html/_condition_clauses.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
A condition clause in a Rule-Based Control takes the form of:
+ object id attribute relation value
+
where
| object | = | a category of network object |
| id | = | the object's ID label |
| attribute | = | an attribute or property of the object |
| relation | = | a relational operator |
| value | = | an attribute value |
Some example conditional clauses are:
+ JUNCTION 23 PRESSURE > 20
+ TANK T200 FILLTIME BELOW 3.5
+ LINK 44 STATUS IS OPEN
+ SYSTEM CLOCKTIME = 7:30 AM
+ SYSTEM DEMAND >= 1500
+
Objects can be any of the following keywords:
+ NODE JUNCTION TANK RESERVOIR
+ LINK PIPE PUMP VALVE
+ SYSTEM
When SYSTEM is used in a condition no ID is supplied.
+The following attributes can be used with Node-type objects:
+ DEMAND
+ HEAD
+ PRESSURE
The following attributes can be used with Tanks:
+ LEVEL
+ FILLTIME (hours needed to fill a tank)
+ DRAINTIME (hours needed to empty a tank)
These attributes can be used with Link-Type objects:
+ FLOW
+ STATUS (OPEN, CLOSED, or ACTIVE)
+ SETTING (pump speed or valve setting)
The SYSTEM object can use the following attributes:
| DEMAND | (total system demand) |
| TIME | (hours from the start of the simulation expressed |
| either as a decimal number or in hours:minutes format) | |
| CLOCKTIME | (24-hour clock time with AM or PM appended) |
Relation operators consist of the following:
+
| = | IS |
| <> | NOT |
| < | BELOW |
| > | ABOVE |
| <= | |
| >= |
+ 1.8.16
+
+
+
diff --git a/doc/html/_coords_page.html b/doc/html/_coords_page.html
new file mode 100644
index 0000000..0c2811a
--- /dev/null
+++ b/doc/html/_coords_page.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Assigns map coordinates to network's nodes.
+Format:
+One line for each node containing:
Remarks:
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_ctrls_page.html b/doc/html/_ctrls_page.html
new file mode 100644
index 0000000..934c86f
--- /dev/null
+++ b/doc/html/_ctrls_page.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines simple controls that modify links based on a single condition.
+
Format:
+One line for each control which can be of the form:
+LINK linkID status IF NODE nodeID ABOVE / BELOW value
+LINK linkID status AT TIME time
+LINK linkID status AT CLOCKTIME clocktime AM / PM
+where:
| linkID | = | a link ID label |
| status | = | OPEN / CLOSED, a pump speed setting, or a control valve setting + |
| nodeID | = | a node ID label |
| value | = | a pressure for a junction or a water level for a tank |
| time | = | a time since the start of the simulation in hours |
| clocktime | = | a 24-hour clock time (hrs:min) |
Remarks:
Examples:
+[CONTROLS]
+ ;Close Link 12 if the level in Tank 23 exceeds 20 ft.
+ LINK 12 CLOSED IF NODE 23 ABOVE 20
;Open Link 12 if the pressure at Node 130 is under 30 psi
+ LINK 12 OPEN IF NODE 130 BELOW 30
;Pump PUMP02's speed is set to 1.5 at 16 hours into the simulation
+ LINK PUMP02 1.5 AT TIME 16
;Link 12 is closed at 10 am and opened at 8 pm throughout the simulation
+ LINK 12 CLOSED AT CLOCKTIME 10 AM
+ LINK 12 OPEN AT CLOCKTIME 8 PM
+ 1.8.16
+
+
+
diff --git a/doc/html/_curves_page.html b/doc/html/_curves_page.html
new file mode 100644
index 0000000..0207547
--- /dev/null
+++ b/doc/html/_curves_page.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines data curves and their X,Y points.
+
Format:
+One line for each X,Y point on each curve containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_data_flow.html b/doc/html/_data_flow.html
new file mode 100644
index 0000000..11dcbc8
--- /dev/null
+++ b/doc/html/_data_flow.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The EPANET Toolkit contains separate code modules for network building, hydraulic analysis, water quality analysis, and report generation. The data flow diagram for analyzing a pipe network is shown below. The processing steps depicted in this diagram can be summarized as follows:
+
+
+
+ |
Toolkit functions exist to carry out all of these steps under the programmer's control, including the ability to read and modify the contents of the Project data structure.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_data_model.html b/doc/html/_data_model.html
new file mode 100644
index 0000000..bfcc7df
--- /dev/null
+++ b/doc/html/_data_model.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
EPANET models a pipe network as a collection of links connected to nodes. The links represent pipes, pumps, and control valves. The nodes represent junctions, tanks, and reservoirs. The figure below illustrates how these objects can be connected to one another to form a network.
+
+
+
+ |
Junctions have a user-supplied water withdrawal rate (i.e., consumer demand) associated with them. Tanks are storage units whose water level changes over time. Reservoirs are boundary points where a fixed hydraulic head applies.
+Pipes have a length, diameter and roughness coefficient that determines their head loss as a function of flow rate. Pumps have either a constant power rating or a head curve that determines the head they add as a function of flow rate. Valves are used to regulate either flow or pressure. Controls can be applied to completely open or close a link or to adjust its setting (pump speed or valve setting).
+In addition to these physical objects an EPANET model can also contain the following data objects:
An EPANET model also contains a number of analysis options that specify:
Please refer to the EPANET 2 Users Manual for more information on EPANET's data model.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_dmnds_page.html b/doc/html/_dmnds_page.html
new file mode 100644
index 0000000..6064aad
--- /dev/null
+++ b/doc/html/_dmnds_page.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Supplement to [JUNCTIONS] section for defining multiple water demands at junction nodes.
+Format:
+One line for each category of demand at a junction containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_emits_page.html b/doc/html/_emits_page.html
new file mode 100644
index 0000000..46cc8b6
--- /dev/null
+++ b/doc/html/_emits_page.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines junctions modeled as emitters (sprinklers or orifices).
+Format:
+One line for each emitter containing:
Remarks:
+ 1.8.16
+
+
+
diff --git a/doc/html/_energy_page.html b/doc/html/_energy_page.html
new file mode 100644
index 0000000..4b5c89b
--- /dev/null
+++ b/doc/html/_energy_page.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines parameters used to compute pumping energy and cost.
+Formats:
+GLOBAL PRICE / PATTERN / EFFIC value
+PUMP pumpID PRICE / PATTERN / EFFIC value
+DEMAND CHARGE value
+Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_example1.html b/doc/html/_example1.html
new file mode 100644
index 0000000..f9f2f24
--- /dev/null
+++ b/doc/html/_example1.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
This example shows how simple it is for the Toolkit to provide a network analysis engine for other applications. There are three steps that the application would need to take:
Here is an example where a callback function writeConsole is provided to write EPANET's progress messages to the console:
+ 1.8.16
+
+
+
diff --git a/doc/html/_example2.html b/doc/html/_example2.html
new file mode 100644
index 0000000..4877c18
--- /dev/null
+++ b/doc/html/_example2.html
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
This example shows how a network can be built just through toolkit function calls, eliminating the need to always use an EPANET formatted input file. This creates opportunities to use other sources of network data in one's code, such as relational database files or GIS/CAD files.
+Below is a schematic of the network to be built.
+
+
+ |
+ 1.8.16
+
+
+
diff --git a/doc/html/_example3.html b/doc/html/_example3.html
new file mode 100644
index 0000000..c592b72
--- /dev/null
+++ b/doc/html/_example3.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
This example illustrates how the Toolkit could be used to develop a hydrant rating curve used in fire flow studies. This curve shows the amount of flow available at a node in the system as a function of pressure. The curve is generated by running a number of steady state hydraulic analyses with the node of interest subjected to a different demand in each analysis. For this example we assume that the ID label of the node of interest is MyNode and that N different demand levels stored in the array D need to be examined. The corresponding pressures will be stored in P. To keep the code more readable, no error checking is made on the results returned from the Toolkit function calls.
+ 1.8.16
+
+
+
diff --git a/doc/html/_example4.html b/doc/html/_example4.html
new file mode 100644
index 0000000..b12124d
--- /dev/null
+++ b/doc/html/_example4.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
This example illustrates how the Toolkit could be used to determine the lowest dose of chlorine applied at the entrance to a distribution system needed to ensure that a minimum residual is met throughout the system. We assume that the EPANET input file contains the proper set of kinetic coefficients that describe the rate at which chlorine will decay in the system being studied. In the example code, the ID label of the source node is contained in SourceID, the minimum residual target is given by Ctarget, and the target is only checked after a start-up duration of 5 days (432,000 seconds). To keep the code more readable, no error checking is made on the results returned from the Toolkit function calls.
+ 1.8.16
+
+
+
diff --git a/doc/html/_files.html b/doc/html/_files.html
new file mode 100644
index 0000000..6b5b494
--- /dev/null
+++ b/doc/html/_files.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Toolkit can make use of several different types of files when analyzing a pipe network. These include:
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_header_files.html b/doc/html/_header_files.html
new file mode 100644
index 0000000..fe3aa1d
--- /dev/null
+++ b/doc/html/_header_files.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Toolkit provides several header files that are needed to develop C/C++ applications:
epanet2.h contains declarations of the single-threaded version of the Toolkit (the ENxxx named functions).epanet2_2.h contains declarations of the multi-threaded version of the Toolkit (the EN_xxx named functions).epanet2_enums.h contains definitions of the symbolic constants used by the Toolkit.epanet2.lib must be linked in to any Toolkit application compiled for Windows using MS Visual C++. epanet2.h or epanet2_2.h in their C/C++ code depending on whether they are building a single-threaded or multi-threaded application. There is no need to explicitly include epanet2_enums.h as it is automatically included by both of the other header files.Several additional function declaration files that provide bindings for other programming languages are included with the Toolkit package:
epanet2.bas for Visual Basic for Applications and Visual Basic 6epanet2.vb for Visual Basic .NETepanet2.pas for Delphi Pascal, Free Pascal or Lazarus.These bindings only support the single-threaded version of the Toolkit.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_hyd_file.html b/doc/html/_hyd_file.html
new file mode 100644
index 0000000..eb02ec2
--- /dev/null
+++ b/doc/html/_hyd_file.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Hydraulics file is an unformatted binary file used to store the results of a hydraulic analysis. Results for all time periods are stored, including those at intermediate times when special hydraulic events occur (e.g., pumps and tanks opening or closing because control conditions have been satisfied).
+Normally it is a temporary file that is deleted after the EN_deleteproject function is called. However, it will be saved if the EN_savehydfile function is called before that.
+Likewise, a previously saved Hydraulics file can be used if the command HYDRAULICS USE filename appears in the [OPTIONS] section of the input file, or if the EN_usehydfile function is called.
When the Toolkit function EN_solveH is used to make a hydraulic analysis, results are automatically saved to the Hydraulics file. When the EN_initH - EN_runH - EN_nextH set of functions is used, the initFlag argument to EN_initH determines whether results are saved or not. The need to save hydraulic results is application-dependent. They must always be saved to the Hydraulics file if a water quality analysis will follow.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_inp_file.html b/doc/html/_inp_file.html
new file mode 100644
index 0000000..ca9f479
--- /dev/null
+++ b/doc/html/_inp_file.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Input file is a standard EPANET input data file that describes the system being analyzed. It can either be created external to the application being developed with the Toolkit or by the application itself. It is the first file name supplied to the EN_open function. A project's data associated with its Input file remains accessible until the project is closed down with the EN_close or deleted with EN_deleteproject.
+The file is organized by sections where each section begins with a keyword enclosed in brackets. The various keywords are listed below. Click on a section to see the format of the data it contains.
+| Network Components | System Operation | Water Quality | Options & Reporting | GUI Support |
|---|---|---|---|---|
| [Title] | [Curves] | [Quality] | [Options] | [Backdrop] |
| [Junctions] | [Patterns] | [Reactions] | [Times] | [Coordinates] |
| [Reservoirs] | [Energy] | [Sources] | [Report] | [Vertices] |
| [Tanks] | [Status] | [Mixing] | [Labels] | |
| [Pipes] | [Controls] | |||
| [Pumps] | [Rules] | |||
| [Valves] | [Demands] | |||
| [Emitters] |
The order of sections is not important. However, whenever a node or link is referred to in a section it must have already been defined in the [JUNCTIONS], [RESERVOIRS], [TANKS], [PIPES], [PUMPS], or [VALVES] sections. Thus it is recommended that these sections be placed first.
+Each section can contain one or more lines of data. Blank lines can appear anywhere in the file and the semicolon (;) can be used to indicate that what follows on the line is a comment, not data. A maximum of 1024 characters can appear on a line.
+The ID labels used to identify nodes, links, curves and patterns can be any combination of up to 31 characters and numbers.
+The GUI Support sections are provided to assist an external program that wishes to draw a visual representation of a project's network.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_juncs_page.html b/doc/html/_juncs_page.html
new file mode 100644
index 0000000..d13d654
--- /dev/null
+++ b/doc/html/_juncs_page.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines junction nodes contained in the network.
+Format:
+One line for each junction containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_labels_page.html b/doc/html/_labels_page.html
new file mode 100644
index 0000000..1c1fc11
--- /dev/null
+++ b/doc/html/_labels_page.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Assigns coordinates to labels added to a network's visualization.
+Format:
+One line for each label containing:
Remarks:
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_mixing_page.html b/doc/html/_mixing_page.html
new file mode 100644
index 0000000..8516afa
--- /dev/null
+++ b/doc/html/_mixing_page.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Identifies the model that governs mixing within storage tanks.
+Format:
+One line per tank containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_options_page.html b/doc/html/_options_page.html
new file mode 100644
index 0000000..b3aa7cd
--- /dev/null
+++ b/doc/html/_options_page.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines various simulation options.
+Formats:
| UNITS | CFS / GPM / MGD / IMGD / AFD / |
| LPS / LPM / MLD / CMH / CMD | |
| HEADLOSS | H-W / D-W / C-M |
| HYDRAULICS | USE / SAVE filename |
| VISCOSITY | value |
| SPECIFIC GRAVITY | value |
| TRIALS | value |
| ACCURACY | value |
| FLOWCHANGE | value |
| HEADERROR | value |
| CHECKFREQ | value |
| MAXCHECK | value |
| DAMPLIMIT | value |
| UNBALANCED | STOP / CONTINUE / CONTINUE n |
| DEMAND MODEL | DDA / PDA |
| MINIMUM PRESSURE | value |
| REQUIRED PRESSURE | value |
| PRESSURE EXPONENT | value |
| PATTERN | id |
| DEMAND MULTIPLIER | value |
| EMITTER EXPONENT | value |
| QUALITY | NONE / CHEMICAL / AGE / TRACE nodeID |
| DIFFUSIVITY | value |
| TOLERANCE | value |
| MAP | filename |
Definitions:
+UNITS sets the units in which flow rates are expressed where:
For CFS, GPM, MGD, IMGD, and AFD other input quantities are expressed in US Customary Units. If flow units are in liters or cubic meters then Metric Units must be used for all other input quantities as well. (See the Measurement Units topic). The default flow units are GPM.
+HEADLOSS selects a formula to use for computing head loss for flow through a pipe. The choices are the Hazen-Williams (H-W ), Darcy-Weisbach (D-W ), or Chezy-Manning (C-M ) formulas. The default is H-W.
+The HYDRAULICS option allows you to either SAVE the current hydraulics solution to a file or USE a previously saved hydraulics solution. This is useful when studying factors that only affect water quality behavior.
+VISCOSITY is the kinematic viscosity of the fluid being modeled relative to that of water at 20 deg. C (1.0 centistoke). The default value is 1.0.
+SPECIFIC GRAVITY is the ratio of the density of the fluid being modeled to that of water at 4 deg. C (unitless). The default value is 1.0.
+TRIALS are the maximum number of trials used to solve network hydraulics at each hydraulic time step of a simulation. The default is 40.
+ACCURACY prescribes the convergence criterion that determines when a hydraulic solution has been reached. The trials end when the sum of all flow changes from the previous solution divided by the total flow in all links is less than this number. The default is 0.001.
+FLOWCHANGE is a similar convergence criterion requiring that the largest absolute flow change between the current and previous solutions be less than the specified value (in flow units). The default is 0 which means that this criterion is not used.
+HEADERROR is yet another convergence criterion requiring that the head loss computed by the head loss formula compared to the difference in nodal heads across each link be less than the specified value (in ft or m). The default is 0 which means that this criterion is not used.
+CHECKFREQ sets the number of solution trials that pass during hydraulic balancing before the status of pumps, check valves, flow control valves and pipes connected to tanks are once again updated. The default value is 2, meaning that status checks are made every other trial.
+MAXCHECK is the number of solution trials after which periodic status checks are discontinued. Instead, a status check is made only after convergence is achieved. The default value is 10, meaning that after 10 trials, instead of checking status every CHECKFREQ trials, status is checked only at convergence.
+DAMPLIMIT is the accuracy value at which solution damping and status checks on PRVs and PSVs should begin. Damping limits all flow changes to 60% of what they would otherwise be as future trials unfold. The default is 0 which indicates that no damping should be used and that status checks on control valves are made at every iteration.
+UNBALANCED determines what happens if a hydraulic solution cannot be reached within the prescribed number of TRIALS at some hydraulic time step into the simulation. STOP will halt the entire analysis at that point. CONTINUE will continue the analysis with a warning message issued. CONTINUE n will continue the search for a solution for another n trials with the status of all links held fixed at their current settings. The simulation will be continued at this point with a message issued about whether convergence was achieved or not. The default choice is STOP.
+DEMAND MODEL specifies whether a demand driven analysis ( DDA ) or a pressure driven analysis ( PDA ) should be made. Under DDA full nodal demands are always met even if negative pressures result. PDA assumes that demand varies between 0 and its full value as a power function of nodal pressure. The default demand model is DDA.
+MINIMUM PRESSURE is the pressure below which no demand can be delivered under a pressure driven analysis. It has no effect on a demand driven analysis. Its default value is 0.
+REQUIRED PRESSURE is the pressure required to supply a node's full demand under a pressure driven analysis. It has no effect on a demand driven analysis. It must be at least 0.1 psi or m higher than the MINIMUM PRESSURE, which is also its default value.
+PRESSURE EXPONENT is the power to which pressure is raised when computing the demand delivered to a node under a pressure driven analysis. It has no effect on a demand driven analysis. Its default value is 0.5.
+PATTERN provides the ID label of a default demand pattern to be applied to all junctions where no demand pattern was specified. If no such pattern exists in the [PATTERNS] section then by default the pattern consists of a single multiplier equal to 1.0. If this option is not used, then the global default demand pattern has a label of "1".
+The DEMAND MULTIPLIER is used to adjust the values of baseline demands for all junctions and all demand categories. For example, a value of 2 doubles all baseline demands, while a value of 0.5 would halve them. The default value is 1.0.
+EMITTER EXPONENT specifies the power to which the pressure at a junction is raised when computing the flow issuing from an emitter. The default is 0.5.
+QUALITY selects the type of water quality analysis to perform. The choices are NONE, CHEMICAL, AGE, and TRACE. In place of CHEMICAL the actual name of the chemical can be used followed by its concentration units (e.g., CHLORINE mg/L). If TRACE is selected it must be followed by the ID label of the node being traced. The default selection is NONE (no water quality analysis).
+DIFFUSIVITY is the molecular diffusivity of the chemical being analyzed relative to that of chlorine in water. The default value is 1.0. Diffusivity is only used when mass transfer limitations are considered in pipe wall reactions. A value of 0 will cause EPANET to ignore mass transfer limitations.
+TOLERANCE is the difference in water quality level below which one can say that one parcel of water is essentially the same as another. The default is 0.01 for all types of quality analyses (chemical, age (measured in hours), or source tracing (measured in percent)).
+MAP is used to supply the name of a file containing coordinates of the network's nodes so that a map of the network can be drawn. It is not used for any hydraulic or water quality computations.
+Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_out_file.html b/doc/html/_out_file.html
new file mode 100644
index 0000000..4f8e8bd
--- /dev/null
+++ b/doc/html/_out_file.html
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Output file is an unformatted binary file used to store both hydraulic and water quality results at uniform reporting intervals. It is the third file name supplied to the EN_open function (or second name to EN_init). If an empty string ("") is used as its name then a scratch temporary file will be used. Otherwise the Output file will be saved after the EN_close function is called. Saving this file is useful if further post-processing of the output results are needed.
+The function EN_saveH will transfer hydraulic results to the Output file if no water quality analysis will be made. Using EN_solveQ to run a water quality analysis automatically saves both hydraulic and water quality results to this file. If the EN_initQ - EN_runQ - EN_nextQ set of functions is used to perform a water quality analysis, then results will be saved only if the saveflag argument of EN_initQ is set to EN_SAVE. Again, the need to save results to the Output file is application-dependent. If a formatted output report is to be generated using EN_report, then results must first be saved to the Output file.
The data written to the file is either 4-byte integers, 4-byte floats, or fixed-size strings whose size is a multiple of 4 bytes. This allows the file to be divided conveniently into 4-byte records. The file consists of four sections of the following sizes in bytes:
+| Section | Size in Bytes |
|---|---|
| Prolog | 884 + 36*Nnodes + 52*Nlinks + 8*Ntanks |
| Energy Usage | 28*Npumps + 4 |
| Dynamic Results | (16*Nnodes + 32*Nlinks)*Nperiods |
| Epilog | 28 |
where:
All of these counts are themselves written to the file's Prolog or Epilog sections.
+The Prolog section of an EPANET binary output file contains the following data:
+| Item | Type | # Bytes |
|---|---|---|
| Magic Number = 516114521 | Integer | 4 |
| Version (= 200) | Integer | 4 |
| Number of Nodes | Integer | 4 |
| Number of Reservoirs & Tanks | Integer | 4 |
| Number of Links | Integer | 4 |
| Number of Pumps | Integer | 4 |
| Number of Valves | Integer | 4 |
| Water Quality Option - see EN_QualityType | Integer | 4 |
| Traced Node Index | Integer | 4 |
| Flow Units Option | Integer | 4 |
| Pressure Units Option: +0 = psi +1 = meters +2 = kPa | Integer | 4 |
| Report Statistic Type - see EN_StatisticType | Integer | 4 |
| Reporting Start Time (sec) | Integer | 4 |
| Reporting Time Step (sec) | Integer | 4 |
| Simulation Duration (sec) | Integer | 4 |
| Project Title (1st line) | Char | 80 |
| Project Title (2nd line) | Char | 80 |
| Project Title (3rd line) | Char | 80 |
| Name of Input File | Char | 260 |
| Name of Report File | Char | 260 |
| Name of Quality Chemical | Char | 32 |
| Chemical Concentration Units | Char | 32 |
| ID String of Each Node | Char | 32*Nnodes |
| ID String of Each Link | Char | 32*Nlinks |
| Index of Head Node of Each Link | Integer | 4*Nlinks |
| Index of Tail Node of Each Link | Integer | 4*Nlinks |
| Type Code of Each Link (see EN_LinkType) | Integer | 4*Nlinks |
| Node Index of Each Tank | Integer | 4*Ntanks |
| Surface Area of Each Tank | Float | 4*Ntanks |
| Elevation of Each Node | Float | 4*Nnodes |
| Length of Each Link | Float | 4*Nlinks |
| Diameter of Each Link | Float | 4*Nlinks |
The Energy Usage section of an EPANET binary output file contains the following data:
+| Item (Repeated for Each Pump) | Type | # Bytes |
|---|---|---|
| Pump Index in list of links | Integer | 4 |
| Pump Utilization (%) | Float | 4 |
| Average Efficiency (%) | Float | 4 |
| Average kW/MGal (or kW/m^3) | Float | 4 |
| Average kW | Float | 4 |
| Peak kW | Float | 4 |
| Average Cost per Day | Float | 4 |
| Peak Energy Usage (kWh) | Float | 4 |
The Dynamic Results section of an EPANET binary output file contains the following set of data for each reporting period (the reporting time step is written to the Output File's Prolog Section and the number of such steps is written to the Epilog Section):
+| Item | Type | # Bytes |
|---|---|---|
| Demand at Each Node | Float | 4*Nnodes |
| Head (Grade) at Each Node | Float | 4*Nnodes |
| Pressure at Each Node | Float | 4*Nnodes |
| Water Quality at Each Node | Float | 4*Nnodes |
| Flow in Each Link + (negative for reverse flow) | Float | 4*Nlinks |
| Velocity in Each Link | Float | 4*Nlinks |
| Head Loss per 1000 Units of Length for Each Link + (total head for pumps and head loss for valves) | Float | 4*Nlinks |
| Average Water Quality in Each Link | Float | 4*Nlinks |
| Status Code for Each Link: +0 = closed (pump shutoff head exceeded) +1 = temporarily closed +2 = closed +3 = open +4 = active (partially open) +5 = open (pump max. flow exceeded) +6 = open (FCV can't supply flow) +7 = open (PRV/PSV can't supply pressure) | Float | 4*Nlinks |
| Setting for Each Link | Float | 4*Nlinks |
| Reaction Rate for Each Link (mass/L/day) | Float | 4*Nlinks |
| Friction Factor for Each Link | Float | 4*Nlinks |
The Epilog section of an EPANET binary output file contains the following data:
+| Item | Type | # Bytes |
|---|---|---|
| Average bulk reaction rate (mass/hr) | Float | 4 |
| Average wall reaction rate (mass/hr) | Float | 4 |
| Average tank reaction rate (mass/hr) | Float | 4 |
| Average source inflow rate (mass/hr) | Float | 4 |
| Number of Reporting Periods | Integer | 4 |
| Warning Flag: +0 = no warnings +1 = warnings were generated | Integer | 4 |
| Magic Number = 516114521 | Integer | 4 |
+ 1.8.16
+
+
+
diff --git a/doc/html/_pats_page.html b/doc/html/_pats_page.html
new file mode 100644
index 0000000..fc29c11
--- /dev/null
+++ b/doc/html/_pats_page.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines time patterns.
+Format:
+One or more lines for each pattern containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_pipes_page.html b/doc/html/_pipes_page.html
new file mode 100644
index 0000000..5cad83e
--- /dev/null
+++ b/doc/html/_pipes_page.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines all pipe links contained in the network.
+
Format:
+One line for each pipe containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_pumps_page.html b/doc/html/_pumps_page.html
new file mode 100644
index 0000000..65980d0
--- /dev/null
+++ b/doc/html/_pumps_page.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines all pump links contained in the network.
+Format:
+One line for each pump containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_qual_page.html b/doc/html/_qual_page.html
new file mode 100644
index 0000000..0005b9e
--- /dev/null
+++ b/doc/html/_qual_page.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines initial water quality at nodes.
+Format:
+One line per node containing:
Remarks:
+ 1.8.16
+
+
+
diff --git a/doc/html/_reacts_page.html b/doc/html/_reacts_page.html
new file mode 100644
index 0000000..65d0bc1
--- /dev/null
+++ b/doc/html/_reacts_page.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines parameters related to chemical reactions occurring in the network.
+Formats:
+ORDER BULK / WALL / TANK value
+GLOBAL BULK / WALL value
+BULK / WALL pipeID value
+TANK tankID value
+LIMITING POTENTIAL value
+ROUGHNESS CORRELATION value
+Definitions:
+ORDER is used to set the order of reactions occurring in the bulk fluid, at the pipe wall, or in tanks, respectively. Values for wall reactions must be either 0 or 1. If not supplied the default reaction order is 1.0.
+GLOBAL is used to set a global value for all bulk reaction coefficients (pipes and tanks) or for all pipe wall coefficients. The default value is zero.
+BULK, WALL, and TANK are used to override the global reaction coefficients for specific pipes and tanks.
+LIMITING POTENTIAL specifies that reaction rates are proportional to the difference between the current concentration and some limiting potential value.
+ROUGHNESS CORRELATION will make all default pipe wall reaction coefficients be related to pipe roughness in the following manner:
| Head Loss Equation | Roughness Correlation |
|---|---|
| Hazen-Williams | F / C |
| Darcy-Weisbach | F / log(e/D) |
| Chezy-Manning | F * n |
where F = roughness correlation, C = Hazen-Williams C-factor, e = Darcy-Weisbach roughness, D = pipe diameter, and n = Chezy-Manning roughness coefficient. The default value computed this way can be overridden for any pipe by using the WALL format to supply a specific value for the pipe.
+Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_report_page.html b/doc/html/_report_page.html
new file mode 100644
index 0000000..98846d1
--- /dev/null
+++ b/doc/html/_report_page.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Describes the contents of the output report produced from a simulation.
+Formats:
| PAGESIZE | value |
| FILE | filename |
| STATUS | YES / NO / FULL |
| SUMMARY | YES / NO |
| MESSAGES | YES / NO |
| ENERGY | YES / NO |
| NODES | NONE / ALL/ node1 node2 ... |
| LINKS | NONE / ALL/ node1 node2 ... |
| variable | YES / NO |
| variable | BELOW / ABOVE / PRECISION value |
Definitions:
+PAGESIZE sets the number of lines written per page of the output report. The default is 0, meaning that no line limit per page is in effect.
+FILE supplies the name of a file to which the output report will be written (ignored by the Windows version of EPANET). The default is to write the report to the project's Report File file.
+STATUS determines whether a hydraulic status report should be generated. If YES is selected the report will identify all network components that change status during each time step of the simulation. If FULL is selected, then the status report will also include information from each trial of each hydraulic analysis. This level of detail is only useful for de-bugging networks that become hydraulically unbalanced. The default is NO.
+SUMMARY determines whether a summary table of number of network components and key analysis options is generated. The default is YES.
+ENERGY determines if a table reporting average energy usage and cost for each pump is provided. The default is NO.
+NODES identifies which nodes will be reported on. You can either list individual node ID labels or use the keywords NONE or ALL. Additional NODES lines can be used to continue the list. The default is NONE.
+LINKS identifies which links will be reported on. You can either list individual link ID labels or use the keywords NONE or ALL Additional LINKS lines can be used to continue the list. The default is NONE.
+The variable reporting option is used to identify which quantities are reported on, how many decimal places are displayed, and what kind of filtering should be used to limit output reporting. Node variables that can be reported on include:
Link variables include:
The default quantities reported are Demand, Head, Pressure, and Quality for nodes and Flow, Velocity, and Headloss for links. The default precision is two decimal places.
+Remarks:
Example:
+The following example reports on nodes N1, N2, N3, and N17 and all links with velocity above 3.0. The standard node variables (Demand, Head, Pressure, and Quality) are reported on while only Flow, Velocity, and F-Factor (friction factor) are displayed for links.
+ 1.8.16
+
+
+
diff --git a/doc/html/_resv_page.html b/doc/html/_resv_page.html
new file mode 100644
index 0000000..a8b281e
--- /dev/null
+++ b/doc/html/_resv_page.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines all reservoir nodes contained in the network.
+Format:
+One line for each reservoir containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_rpt_file.html b/doc/html/_rpt_file.html
new file mode 100644
index 0000000..535eb98
--- /dev/null
+++ b/doc/html/_rpt_file.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Report file is the second file name supplied to the EN_open function (or the first file name to EN_init). It is used to log any error messages that occur when an Input file is being processed and to record all status messages that are generated during a hydraulic simulation. In addition, if the EN_report function is called the resulting report can also be written to this file as can user-generated lines of text using the EN_writeline function. The format of the report is controlled by statements placed in the [REPORT] section of the Input file and by similar statements included in calls to the EN_setreport function. Only results at a specified uniform reporting time interval are written to this file.
+To suppress the writing of all error and warning messages to the Report file either include the command MESSAGES NO in the [REPORT] section of the Input file or call the Toolkit function EN_setreport("MESSAGES NO").
To route a formatted report to a different file than the Report file either include the command FILE filename in the [REPORT] section of the Input file or call the Toolkit function EN_setreport("FILE filename"), where filename is the name of the file to use.
Toolkit clients will not be able to access the contents of a Report file until a project is closed. If access is needed before then, the EN_copyreport function can be used to copy its current contents to another file. A EN_clearreport function is also available to clear the current contents of the Report file.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_rules_page.html b/doc/html/_rules_page.html
new file mode 100644
index 0000000..2fb6126
--- /dev/null
+++ b/doc/html/_rules_page.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines rule-based controls which modify links based on a combination of conditions.
+Format:
+Each rule is a series of statements of the form:
+RULE ruleID
+ IF condition_1
+ AND condition_2
+ OR condition_3
+ AND condition_4
+ etc.
+ THEN action_1
+ AND action_2
+ etc.
+ ELSE action_3
+ AND action_4
+ etc.
+ PRIORITY value
+
where:
| ruleID | = | an ID label assigned to the rule |
| conditon_n | = | a condition clause |
| action_n | = | an action clause |
| PRIORITY | = | a priority value (e.g., a number from 1 to 5) |
Remarks:
IF A or B and C IF (A or B) and C IF A or (B and C)IF A THEN ... IF B and C THEN ... Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_sources_page.html b/doc/html/_sources_page.html
new file mode 100644
index 0000000..623f497
--- /dev/null
+++ b/doc/html/_sources_page.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines locations of water quality sources.
+Format:
+One line for each water quality source containing:
Remarks:
Example:
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_status_page.html b/doc/html/_status_page.html
new file mode 100644
index 0000000..4060641
--- /dev/null
+++ b/doc/html/_status_page.html
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines initial status of selected links at the start of a simulation.
+Format:
+One line per link being controlled containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_tanks_page.html b/doc/html/_tanks_page.html
new file mode 100644
index 0000000..478a4f3
--- /dev/null
+++ b/doc/html/_tanks_page.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines all tank nodes contained in the network.
+Format:
+One line for each junction containing:
Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_times_page.html b/doc/html/_times_page.html
new file mode 100644
index 0000000..45528ef
--- /dev/null
+++ b/doc/html/_times_page.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose: Defines various time step parameters used in the simulation.
+Formats:
| DURATION | value (units) |
| HYDRAULIC TIMESTEP | value (units) |
| QUALITY TIMESTEP | value (units) |
| RULE TIMESTEP | value (units) |
| PATTERN TIMESTEP | value (units) |
| PATTERN START | value (units) |
| REPORT TIMESTEP | value (units) |
| REPORT START | value (units) |
| START CLOCKTIME | value (AM / PM) |
| STATISTIC | NONE / AVERAGED / MINIMUM / MAXIMUM / RANGE |
Definitions:
+DURATION is the duration of the simulation. Use 0 to run a single period snapshot analysis. The default is 0.
+HYDRAULIC TIMESTEP determines how often a new hydraulic state of the network is computed. If greater than either the PATTERN or REPORT time step it will be automatically reduced. The default is 1 hour.
+QUALITY TIMESTEP is the time step used to track changes in water quality throughout the network. The default is 1/10 of the hydraulic time step.
+RULE TIMESTEP is the time step used to check for changes in system status due to activation of rule-based controls between hydraulic time steps. The default is 1/10 of the hydraulic time step.
+PATTERN TIMESTEP is the interval between time periods in all time patterns. The default is 1 hour.
+PATTERN START is the time offset at which all patterns will start. For example, a value of 6 hours would start the simulation with each pattern in the time period that corresponds to hour 6. The default is 0.
+REPORT TIMESTEP sets the time interval between which output results are reported. The default is 1 hour.
+REPORT START is the length of time into the simulation at which output results begin to be reported. The default is 0.
+START CLOCKTIME is the time of day (e.g., 3:00 PM) at which the simulation begins. The default is 12:00 AM midnight.
+STATISTIC determines what kind of statistical post-processing should be done on the time series of simulation results generated. AVERAGED reports a set of time-averaged results, MINIMUM reports only the minimum values, MAXIMUM the maximum values, and RANGE reports the difference between the minimum and maximum values. NONE reports the full time series for all quantities for all nodes and links and is the default.
+Remarks:
Example:
+ 1.8.16
+
+
+
diff --git a/doc/html/_title_page.html b/doc/html/_title_page.html
new file mode 100644
index 0000000..176ac7a
--- /dev/null
+++ b/doc/html/_title_page.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Attaches a descriptive title to the network being analyzed.
+Format:
+Any number of lines of text.
+Remarks:
+The [TITLE] section is optional.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_toolkit_examples.html b/doc/html/_toolkit_examples.html
new file mode 100644
index 0000000..5fa5793
--- /dev/null
+++ b/doc/html/_toolkit_examples.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Here are several examples of how the Toolkit can be used for different types of network analyses.
+ +
+ 1.8.16
+
+
+
diff --git a/doc/html/_toolkit_versions.html b/doc/html/_toolkit_versions.html
new file mode 100644
index 0000000..d387b99
--- /dev/null
+++ b/doc/html/_toolkit_versions.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Toolkit comes with two sets of identical functions that programmers can utilize:
Both Toolkit versions utilize identical function names and argument lists with the following exceptions:
#include "epanet2.h" directive must appear in all C/C++ code modules that use the single-threaded library while #include "epanet2_2.h" must be used for the multi-threaded library.To avoid unnecessary duplication this document only discusses the multi-threaded version of the Toolkit.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/_units.html b/doc/html/_units.html
new file mode 100644
index 0000000..3bf6c08
--- /dev/null
+++ b/doc/html/_units.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The toolkit can use data expressed in either US Customary of SI Metric units. A project's unit system depends on the unit system used for its choice of flow units. If the EN_open function is used to supply data to a project from an Input File then its flow units are set in the [OPTIONS] section of the file. If the EN_init function is used to initialize a project then the choice of flow units is the fourth argument to the function. The following table lists the units used to express the various parameters in an EPANET model.
+| Parameter | US Customary | SI Metric |
|---|---|---|
| Concentration | mg/L or ug/L | mg/L or ug/L |
| Demand | (see Flow units) | (see Flow units) |
| Diameter (Pipes) | inches | millimeters |
| Diameter (Tanks) | feet | meters |
| Efficiency | percent | percent |
| Elevation | feet | meters |
| Emitter Coeff. | flow units @ 1 psi drop | flow units @ 1 meter drop |
| Energy | kwatt - hours | kwatt - hours |
| Flow | CFS (cubic feet / sec) | LPS (liters / sec) |
| GPM (gallons / min) | LPM (liters / min) | |
| MGD (million gal / day) | MLD (megaliters / day) | |
| IMGD (Imperial MGD) | CMH (cubic meters / hr) | |
| AFD (acre-feet / day) | CMD (cubic meters / day) | |
| Friction Factor | unitless | unitless |
| Head | feet | meters |
| Length | feet | meters |
| Minor Loss Coeff. | unitless | unitless |
| Power | horsepower | kwatts |
| Pressure | psi | meters |
| Reaction Coeff. (Bulk) | 1/day (1st-order) | 1/day (1st-order) |
| Reaction Coeff. (Wall) | mass/sq-ft/day (0-order) | mass/sq-m/day (0-order) |
| ft/day (1st-order) | meters/day (1st-order) | |
| Roughness Coeff. | millifeet (Darcy-Weisbach) unitless otherwise | mm (Darcy-Weisbach) unitless otherwise |
| Source Mass Injection | mass/minute | mass/minute |
| Velocity | ft/sec | meters/sec |
| Volume | cubic feet | cubic meters |
| Water Age | hours | hours |
+ 1.8.16
+
+
+
diff --git a/doc/html/_valves_page.html b/doc/html/_valves_page.html
new file mode 100644
index 0000000..e2a7195
--- /dev/null
+++ b/doc/html/_valves_page.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Defines all control valve links contained in the network.
+Format:
+One line for each valve containing:
Remarks:
| Valve Type | Setting |
|---|---|
| PRV (pressure reducing valve) | Pressure, psi (m) |
| PSV (pressure sustaining valve) | Pressure, psi (m) |
| PBV (pressure breaker valve) | Pressure, psi (m) |
| FCV (flow control valve) | Flow (flow units) |
| TCV (throttle control valve) | Loss Coefficient |
| GPV (general purpose valve) | ID of head loss curve |
+ 1.8.16
+
+
+
diff --git a/doc/html/_vertex_page.html b/doc/html/_vertex_page.html
new file mode 100644
index 0000000..a92654a
--- /dev/null
+++ b/doc/html/_vertex_page.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
Purpose:
+Assigns interior vertex points that describe the shape of network links.
+Format:
+One line for each vertex point in each link containing such points that includes:
Remarks:
+
+ 1.8.16
+
+
+
diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/doc/html/bc_s.png differ
diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/doc/html/bdwn.png differ
diff --git a/doc/html/closed.png b/doc/html/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/doc/html/closed.png differ
diff --git a/doc/html/doc.png b/doc/html/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/doc/html/doc.png differ
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
new file mode 100644
index 0000000..5bc13aa
--- /dev/null
+++ b/doc/html/doxygen.css
@@ -0,0 +1,1766 @@
+/* The standard CSS for doxygen 1.8.16 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+ul.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+ column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #FFFFFF;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #FFFFFF;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+ul {
+ overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
+}
+
+#side-nav ul {
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+ text-align: left;
+ direction: ltr;
+ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+ overflow-y: hidden;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #FFFFFF;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl, img.inline {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+ border-left: 0;
+ border-right: 2px solid #9CAFD4;
+ margin: 0 4px 0 24px;
+ padding: 0 16px 0 12px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+ text-align: right;
+ direction: rtl;
+}
+
+dl {
+ padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+ margin-right: 0px;
+ padding-right: 0px;
+}
+
+dl.note {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #505050;
+}
+
+dl.todo {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+ float: left !important;
+ text-align: right;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+ background-position-x: right !important;
+ padding-left: 0 !important;
+ padding-right: 10px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.PageDocRTL-title div.toc li.level1 {
+ margin-left: 0 !important;
+ margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+ margin-left: 0 !important;
+ margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+ margin-left: 0 !important;
+ margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+ margin-left: 0 !important;
+ margin-right: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+/*
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTableHead tr {
+}
+
+table.markdownTableBodyLeft td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter {
+ text-align: center
+}
+*/
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+.DocNodeRTL {
+ text-align: right;
+ direction: rtl;
+}
+
+.DocNodeLTR {
+ text-align: left;
+ direction: ltr;
+}
+
+table.DocNodeRTL {
+ width: auto;
+ margin-right: 0;
+ margin-left: auto;
+}
+
+table.DocNodeLTR {
+ width: auto;
+ margin-right: auto;
+ margin-left: 0;
+}
+
+tt, code, kbd, samp
+{
+ display: inline-block;
+ direction:ltr;
+}
+/* @end */
+
+u {
+ text-decoration: underline;
+}
+
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
new file mode 100644
index 0000000..3ff17d8
Binary files /dev/null and b/doc/html/doxygen.png differ
diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js
new file mode 100644
index 0000000..ea0a7b3
--- /dev/null
+++ b/doc/html/dynsections.js
@@ -0,0 +1,120 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for working with simple conditional controls. +More...
+These functions are used for working with simple conditional controls.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___curves.html b/doc/html/group___curves.html
new file mode 100644
index 0000000..910e979
--- /dev/null
+++ b/doc/html/group___curves.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for working with data curves. +More...
+These functions are used for working with data curves.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___demands.html b/doc/html/group___demands.html
new file mode 100644
index 0000000..48ed995
--- /dev/null
+++ b/doc/html/group___demands.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for managing nodal demands. +More...
+These functions are used for managing nodal demands.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___enumerations.html b/doc/html/group___enumerations.html
new file mode 100644
index 0000000..13fc59c
--- /dev/null
+++ b/doc/html/group___enumerations.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These are the toolkit's enumerated types whose members are used as function arguments. +More...
+These are the toolkit's enumerated types whose members are used as function arguments.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___error_codes.html b/doc/html/group___error_codes.html
new file mode 100644
index 0000000..7bb923d
--- /dev/null
+++ b/doc/html/group___error_codes.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
| Code | Meaning |
|---|---|
| 0 | No error |
| 101 | Insufficient memory available |
| 102 | No network data available |
| 103 | Hydraulic solver not opened |
| 104 | No hydraulics for water quality analysis |
| 105 | Water quality solver not opened |
| 106 | No results saved to report on |
| 107 | Hydraulics supplied from external file |
| 108 | Cannot use external file while hydraulics solver is open |
| 110 | Cannot solve network hydraulic equations |
| 120 | Cannot solve water quality transport equations |
| 200 | One or more errors in an input file |
| 201 | Syntax error |
| 202 | Function call contains an illegal numeric value |
| 203 | Function call refers to an undefined node |
| 204 | Function call refers to an undefined link |
| 205 | Function call refers to an undefined time pattern |
| 206 | Function call refers to an undefined curve |
| 207 | Function call attempts to control a check valve pipe or a GPV valve |
| 208 | Function call contains illegal PDA pressure limits |
| 209 | Function call contains an illegal node property value |
| 211 | Function call contains an illegal link property value |
| 212 | Function call refers to an undefined Trace Node |
| 213 | Function call contains an invalid option value |
| 214 | Too many characters in a line of an input file |
| 215 | Function call contains a duplicate ID label |
| 216 | Function call refers to an undefined pump |
| 217 | Invalid pump energy data |
| 219 | Illegal valve connection to tank node |
| 220 | Illegal valve connection to another valve |
| 221 | Mis-placed clause in rule-based control |
| 222 | Link assigned same start and end nodes |
| 223 | Not enough nodes in network |
| 224 | No tanks or reservoirs in network |
| 225 | Invalid lower/upper levels for tank |
| 226 | No head curve or power rating for pump |
| 227 | Invalid head curve for pump |
| 230 | Nonincreasing x-values for curve |
| 233 | Network has unconnected node |
| 240 | Function call refers to nonexistent water quality source |
| 241 | Function call refers to nonexistent control |
| 250 | Function call contains invalid format (e.g. too long an ID name) |
| 251 | Function call contains invalid parameter code |
| 253 | Function call refers to nonexistent demand category |
| 254 | Function call refers to node with no coordinates |
| 257 | Function call refers to nonexistent rule |
| 258 | Function call refers to nonexistent rule clause |
| 259 | Function call attempts to delete a node that still has links connected to it |
| 260 | Function call attempts to delete node assigned as a Trace Node |
| 261 | Function call attempts to delete a node or link contained in a control |
| 262 | Function call attempts to modify network structure while a solver is open |
| 301 | Identical file names used for different types of files |
| 302 | Cannot open input file |
| 303 | Cannot open report file |
| 304 | Cannot open output file |
| 305 | Cannot open hydraulics file |
| 306 | Hydraulics file does not match network data |
| 307 | Cannot read hydraulics file |
| 308 | Cannot save results to binary file |
| 309 | Cannot save results to report file |
+ 1.8.16
+
+
+
diff --git a/doc/html/group___hydraulics.html b/doc/html/group___hydraulics.html
new file mode 100644
index 0000000..377c052
--- /dev/null
+++ b/doc/html/group___hydraulics.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used to perform a hydraulic analysis. +More...
+These functions are used to perform a hydraulic analysis.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___links.html b/doc/html/group___links.html
new file mode 100644
index 0000000..9d92d48
--- /dev/null
+++ b/doc/html/group___links.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for working with network links. +More...
+These functions are used for working with network links.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___nodes.html b/doc/html/group___nodes.html
new file mode 100644
index 0000000..a887c94
--- /dev/null
+++ b/doc/html/group___nodes.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for working with network nodes. +More...
+These functions are used for working with network nodes.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___options.html b/doc/html/group___options.html
new file mode 100644
index 0000000..eb62ffe
--- /dev/null
+++ b/doc/html/group___options.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used to get and set analysis options. +More...
+These functions are used to get and set analysis options.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___out_file_format.html b/doc/html/group___out_file_format.html
new file mode 100644
index 0000000..c9da13c
--- /dev/null
+++ b/doc/html/group___out_file_format.html
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
The Toolkit uses an unformatted binary output file to store both hydraulic and water quality results at uniform reporting intervals. Data written to the file is either 4-byte integers, 4-byte floats, or fixed-size strings whose size is a multiple of 4 bytes. This allows the file to be divided conveniently into 4-byte records. The file consists of four sections of the following sizes in bytes:
+| Section | Size in Bytes |
|---|---|
| Prolog | 884 + 36*Nnodes + 52*Nlinks + 8*Ntanks |
| Energy Usage | 28*Npumps + 4 |
| Dynamic Results | (16*Nnodes + 32*Nlinks)*Nperiods |
| Epilog | 28 |
where:
All of these counts are themselves written to the file's Prolog or Epilog sections.
+ + +| Item | Type | # Bytes |
|---|---|---|
| Magic Number = 516114521 | Integer | 4 |
| Version (= 200) | Integer | 4 |
| Number of Nodes | Integer | 4 |
| Number of Reservoirs & Tanks | Integer | 4 |
| Number of Links | Integer | 4 |
| Number of Pumps | Integer | 4 |
| Number of Valves | Integer | 4 |
| Water Quality Option - see EN_QualityType | Integer | 4 |
| Traced Node Index | Integer | 4 |
| Flow Units Option | Integer | 4 |
| Pressure Units Option | Integer | 4 |
| 0 = psi | ||
| 1 = meters | ||
| 2 = kPa | ||
| Report Statistic Type - see EN_StatisticType | Integer | 4 |
| Reporting Start Time (sec) | Integer | 4 |
| Reporting Time Step (sec) | Integer | 4 |
| Simulation Duration (sec) | Integer | 4 |
| Project Title (1st line) | Char | 80 |
| Project Title (2nd line) | Char | 80 |
| Project Title (3rd line) | Char | 80 |
| Name of Input File | Char | 260 |
| Name of Report File | Char | 260 |
| Name of Quality Chemical | Char | 32 |
| Chemical Concentration Units | Char | 32 |
| ID String of Each Node | Char | 32*Nnodes |
| ID String of Each Link | Char | 32*Nlinks |
| Index of Head Node of Each Link | Integer | 4*Nlinks |
| Index of Tail Node of Each Link | Integer | 4*Nlinks |
| Type Code of Each Link (see EN_LinkType) | Integer | 4*Nlinks |
| Node Index of Each Tank | Integer | 4*Ntanks |
| Surface Area of Each Tank | Float | 4*Ntanks |
| Elevation of Each Node | Float | 4*Nnodes |
| Length of Each Link | Float | 4*Nlinks |
| Diameter of Each Link | Float | 4*Nlinks |
| Item (Repeated for Each Pump) | Type | # Bytes |
|---|---|---|
| Pump Index in list of links | Integer | 4 |
| Pump Utilization (%) | Float | 4 |
| Average Efficiency (%) | Float | 4 |
| Average kwatts/MGal (or kwatts/cu m) | Float | 4 |
| Average kwatts | Float | 4 |
| Peak kwatts | Float | 4 |
| Average Cost per Day | Float | 4 |
| Peak Energy Usage (kw-hrs) | Float | 4 |
| Item | Type | # Bytes |
|---|---|---|
| Demand at Each Node | Float | 4*Nnodes |
| Head (Grade) at Each Node | Float | 4*Nnodes |
| Pressure at Each Node | Float | 4*Nnodes |
| Water Quality at Each Node | Float | 4*Nnodes |
| Flow in Each Link | Float | 4*Nlinks |
| (negative for reverse flow) | ||
| Velocity in Each Link | Float | 4*Nlinks |
| Headloss per 1000 Units of Length for Each Link | Float | 4*Nlinks |
| (total head for pumps and head loss for valves) | ||
| Average Water Quality in Each Link | Float | 4*Nlinks |
| Status Code for Each Link | Float | 4*Nlinks |
| 0 = closed (pump shutoff head exceeded) | ||
| 1 = temporarily closed | ||
| 2 = closed | ||
| 3 = open | ||
| 4 = active (partially open | ||
| 5 = open (pump max. flow exceeded) | ||
| 6 = open (FCV can't supply flow | ||
| 7 = open (PRV/PSV can't supply pressure) | ||
| Setting for Each Link | Float | 4*Nlinks |
| Reaction Rate for Each Link (mass/L/day) | Float | 4*Nlinks |
| Friction Factor for Each Link | Float | 4*Nlinks |
| Item | Type | # Bytes |
|---|---|---|
| Average bulk reaction rate (mass/hr) | Float | 4 |
| Average wall reaction rate (mass/hr) | Float | 4 |
| Average tank reaction rate (mass/hr) | Float | 4 |
| Average source inflow rate (mass/hr) | Float | 4 |
| Number of Reporting Periods | Integer | 4 |
| Warning Flag: | Integer | 4 |
| 0 = no warnings | ||
| 1 = warnings were generated | ||
| Magic Number = 516114521 | Integer | 4 |
+ 1.8.16
+
+
+
diff --git a/doc/html/group___patterns.html b/doc/html/group___patterns.html
new file mode 100644
index 0000000..982e89a
--- /dev/null
+++ b/doc/html/group___patterns.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for working with time patterns. +More...
+These functions are used for working with time patterns.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___project.html b/doc/html/group___project.html
new file mode 100644
index 0000000..cd17e53
--- /dev/null
+++ b/doc/html/group___project.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used to manage a project. +More...
+These functions are used to manage a project.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___quality.html b/doc/html/group___quality.html
new file mode 100644
index 0000000..5a5166a
--- /dev/null
+++ b/doc/html/group___quality.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used to perform a water quality analysis. +More...
+These functions are used to perform a water quality analysis.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___reporting.html b/doc/html/group___reporting.html
new file mode 100644
index 0000000..68b8b7c
--- /dev/null
+++ b/doc/html/group___reporting.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used to report simulation results. +More...
+These functions are used to report simulation results.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___rules.html b/doc/html/group___rules.html
new file mode 100644
index 0000000..cba2ceb
--- /dev/null
+++ b/doc/html/group___rules.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
These functions are used for working with rule-based controls. +More...
+These functions are used for working with rule-based controls.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/group___warning_codes.html b/doc/html/group___warning_codes.html
new file mode 100644
index 0000000..d3a7a5a
--- /dev/null
+++ b/doc/html/group___warning_codes.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
| Code | Description |
|---|---|
| 1 | System hydraulically unbalanced - convergence to a hydraulic solution was not achieved in the allowed number of trials |
| 2 | System may be hydraulically unstable - hydraulic convergence was only achieved after the status of all links was held fixed |
| 3 | System disconnected - one or more nodes with positive demands were disconnected from all supply sources |
| 4 | Pumps cannot deliver enough flow or head - one or more pumps were forced to either shut down (due to insufficient head) or operate beyond the maximum rated flow |
| 5 | Valves cannot deliver enough flow - one or more flow control valves could not deliver the required flow even when fully open |
| 6 | System has negative pressures - negative pressures occurred at one or more junctions with positive demand |
+ 1.8.16
+
+
+
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644
index 0000000..bd7c6e8
--- /dev/null
+++ b/doc/html/index.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+|
+ EPANET
+ 2.2.0
+
+ |
+
EPANET is a program that performs extended period simulation of hydraulic and water quality behavior within water distribution system pipe networks. A network can consist of pipes, nodes (pipe junctions), pumps, valves and storage tanks or reservoirs. EPANET tracks the flow of water in each pipe, the pressure at each node, the height of water in each tank, and the concentration of a chemical species throughout the network during a multi-time period simulation. In addition to chemical species, water age and source tracing can also be simulated.
+
+
+
+ |
The EPANET Programmer's Toolkit is a library of functions (or API) written in C that allow programmers to customize the use of EPANET's hydraulic and water quality solution engine to their own applications. Both EPANET and its toolkit were originally developed by the U.S. Environmental Protection Agency (USEPA).
+The OWA-EPANET Toolkit is an open-source version of the original EPANET Toolkit that extends its capabilities by:
Before using the OWA-EPANET Toolkit one should be familiar with the way that EPANET represents a pipe network, the design and operating information it requires, and the steps it uses to simulate a network's behavior. The following topics provide some introductory material on these subjects:
+More detailed information can be obtained from reading the EPANET 2 Users Manual.
+Note: OWA (Open Water Analytics) exists on GitHub as an open community for the exchange of information and ideas related to computing in the water & wastewater industries. It's activities and code projects are neither affiliated with nor endorsed by the USEPA.
+
+ 1.8.16
+
+
+
diff --git a/doc/html/jquery.js b/doc/html/jquery.js
new file mode 100644
index 0000000..103c32d
--- /dev/null
+++ b/doc/html/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0|
+ EPANET
+ 2.2.0
+
+ |
+
You must have Doxygen installed on your machine to generate documentation for the OWA-EPANET Toolkit. Assuming this is the case, open a terminal window, navigate to the project's doc directory and issue the command doxygen. This will generate HTML documentation placed in a sub-directory named html. From that directory you can launch the index.html file to view the full documentation in a web browser.
To generate a Windows compiled HTML Help file you must have Microsoft's HTML Help Workshop installed. You then need to edit the Doxygen configuration file doxyfile as follows:
GENERATE_HTMLHELP setting to YES.HHC_LOCATION setting.After running Doxygen again the resulting Help file named owa-epanet.chm will appear in the html sub-directory.
Doxygen uses the special comments placed in the project's epanet2_2.h and epanet2_enums.h header files to document EPANET's API. It also uses supplementary material contained in the following files of the project's doc directory to generate additional pages of documentation:
main.dox: generates the Overview section.usage.dox: generates the Usage section.toolkit-examples.dox : generates the Examples section.toolkit-files.dox: generates the Toolkit Files section.input-file.dox: generates the Input File sub-section.toolkit-units.dox: generates the Measurement Units section.modules.dox: defines the contents of the API Reference section.Finally, a group of special Doxygen files are used to customize the format of the generated documentation. These include the following:
doxyfile: the main Doxygen configuration fileDoxygenLayout.xml: sets the title of the automatically generated Modules section to API Reference and hides the Files section in the tree view pane of the document.extrastylesheet.css: reduces the size of the the h1 heading style.newfooter.html: replaces the default Doxygen footer in HTML output with a custom one.
+ 1.8.16
+
+
+