From b58ef537c17314694c0f0d20ef84f04a5b094a15 Mon Sep 17 00:00:00 2001 From: dbhart Date: Wed, 15 Nov 2023 12:03:07 -0700 Subject: [PATCH] Formatting the bib file lowercased the citations - oops --- documentation/controls.rst | 2 +- documentation/criticality.rst | 2 +- documentation/disaster_models.rst | 8 ++++---- documentation/fragility.rst | 2 +- documentation/framework.rst | 2 +- documentation/gis.rst | 2 +- documentation/graphics.rst | 8 ++++---- documentation/hydraulics.rst | 14 +++++++------- documentation/installation.rst | 20 +++++++++---------- documentation/layers.rst | 2 +- documentation/morph.rst | 4 ++-- documentation/overview.rst | 10 +++++----- documentation/resilience.rst | 32 +++++++++++++++---------------- documentation/resultsobject.rst | 2 +- documentation/units.rst | 4 ++-- wntr/metrics/economic.py | 14 +++++++------- wntr/metrics/hydraulic.py | 6 +++--- wntr/metrics/misc.py | 2 +- wntr/metrics/water_security.py | 6 +++--- 19 files changed, 71 insertions(+), 71 deletions(-) diff --git a/documentation/controls.rst b/documentation/controls.rst index 9af1871c4..239c3e98b 100644 --- a/documentation/controls.rst +++ b/documentation/controls.rst @@ -6,7 +6,7 @@ Water network controls ====================================== One of the key features of water network models is the ability to control pipes, pumps, and valves using simple and complex conditions. -EPANET uses "controls" and "rules" to define conditions :cite:p:`Ross00`. WNTR replicates EPANET functionality, and includes additional options, as described below. The EPANET user manual provides more information on simple controls and rule-based controls (controls and rules, respectively in WNTR) :cite:p:`Ross00`. +EPANET uses "controls" and "rules" to define conditions :cite:p:`ross00`. WNTR replicates EPANET functionality, and includes additional options, as described below. The EPANET user manual provides more information on simple controls and rule-based controls (controls and rules, respectively in WNTR) :cite:p:`ross00`. **Controls** are defined using an "IF condition; THEN action" format. Controls use a single action (i.e., closing/opening a link or changing the setting) based on a single condition (i.e., time based or tank level based). diff --git a/documentation/criticality.rst b/documentation/criticality.rst index 8910c744b..e37fad9b9 100644 --- a/documentation/criticality.rst +++ b/documentation/criticality.rst @@ -13,7 +13,7 @@ In threat agnostic analysis, the cause of the disruption is not modeled directly Rather, a series of simulations can be used to perform N-k contingency analysis, where N is the number of elements and k elements fail. -In water distribution systems analysis, N-1 contingency analysis is commonly called criticality analysis :cite:p:`WaWC06`. +In water distribution systems analysis, N-1 contingency analysis is commonly called criticality analysis :cite:p:`wawc06`. WNTR is commonly used to run criticality analysis, where a series of simulations are run to determine the impact of individual failures on the system. This framework can be expanded to include analysis where two or more elements fail at one time or in succession. diff --git a/documentation/disaster_models.rst b/documentation/disaster_models.rst index 8797c0a99..4d57e3128 100644 --- a/documentation/disaster_models.rst +++ b/documentation/disaster_models.rst @@ -30,14 +30,14 @@ and change demands for fire conditions, as described in the sections below. The :class:`~wntr.scenario.earthquake.Earthquake` class includes methods to compute peak ground acceleration, peak ground velocity, and repair rate based on the earthquake location and magnitude. -Alternatively, external earthquake models or databases (e.g., ShakeMap :cite:p:`WWQP06`) can be used to compute earthquake properties and +Alternatively, external earthquake models or databases (e.g., ShakeMap :cite:p:`wwqp06`) can be used to compute earthquake properties and those properties can be loaded into Python for analysis in WNTR. When simulating the effects of an earthquake, fragility curves are commonly used to define the probability that a component is damaged with respect to peak ground acceleration, peak ground velocity, or repair rate. -The American Lifelines Alliance report :cite:p:`ALA01` includes seismic fragility curves +The American Lifelines Alliance report :cite:p:`ala01` includes seismic fragility curves for water system components. See :ref:`fragility_curves` for more information. @@ -131,7 +131,7 @@ Power outage ------------- Power outages can be small and brief, or they can also span over several days and affect whole regions as seen in the 2003 Northeast Blackout. -While the Northeast Blackout was an extreme case, a 2012 Lawrence Berkeley National Laboratory study :cite:p:`ELLT12` +While the Northeast Blackout was an extreme case, a 2012 Lawrence Berkeley National Laboratory study :cite:p:`ellt12` showed the frequency and duration of power outages are increasing domestically by a rate of two percent annually. In water distribution systems, a power outage can cause pump stations to shut down and result in @@ -163,7 +163,7 @@ Fires WNTR can be used to simulate damage caused to system components due to fire and/or to simulate water usage due to fighting fires. To fight fires, additional water is drawn from the system. Fire codes vary by state. Minimum required fire flow and duration are generally based on the building's area and purpose. While small residential fires might require 1500 gallons/minute for 2 hours, large commercial -spaces might require 8000 gallons/minute for 4 hours :cite:p:`ICC12`. This additional demand can +spaces might require 8000 gallons/minute for 4 hours :cite:p:`icc12`. This additional demand can have a large impact on water pressure in the system. WNTR can be used to simulate firefighting conditions in the system. diff --git a/documentation/fragility.rst b/documentation/fragility.rst index 8c04dd1ef..81255ec2c 100644 --- a/documentation/fragility.rst +++ b/documentation/fragility.rst @@ -11,7 +11,7 @@ of exceeding a given damage state as a function of environmental change. Fragility curves are closely related to survival curves, which are used to define the probability of component failure due to age. For example, to estimate earthquake damage, fragility curves are defined as a function of peak ground acceleration, peak ground velocity, or repair rate. -The American Lifelines Alliance report :cite:p:`ALA01` +The American Lifelines Alliance report :cite:p:`ala01` includes seismic fragility curves for water network components. Fragility curves can also be defined as a function of flood stage, wind speed, and temperature for other diff --git a/documentation/framework.rst b/documentation/framework.rst index b8f7e656c..ddd12e2b8 100644 --- a/documentation/framework.rst +++ b/documentation/framework.rst @@ -82,7 +82,7 @@ These classes are listed in :numref:`table-sim-subpackage`. ================================================= ============================================================================================================================================================================================================================================================================= Class Description ================================================= ============================================================================================================================================================================================================================================================================= - :class:`~wntr.sim.epanet.EpanetSimulator` The EpanetSimulator can run both the EPANET 2.00.12 Programmer's Toolkit :cite:p:`Ross00` and EPANET 2.2.0 Programmer's Toolkit :cite:p:`RWTS20` to run hydraulic and water quality simulations. + :class:`~wntr.sim.epanet.EpanetSimulator` The EpanetSimulator can run both the EPANET 2.00.12 Programmer's Toolkit :cite:p:`ross00` and EPANET 2.2.0 Programmer's Toolkit :cite:p:`rwrs20` to run hydraulic and water quality simulations. EPANET 2.2.0 (which is used by default) includes both demand-driven and pressure dependent analysis, while EPANET 2.00.12 includes only demand-driven analysis. When using the EpanetSimulator, the water network model is written to an EPANET INP file which is used to run an EPANET simulation. This allows the user to run EPANET simulations, while taking advantage of additional analysis options in WNTR. diff --git a/documentation/gis.rst b/documentation/gis.rst index e04e6f7d1..7592c5615 100644 --- a/documentation/gis.rst +++ b/documentation/gis.rst @@ -46,7 +46,7 @@ Open source GIS platforms include QGIS and GRASS GIS. The following section describes capabilities in WTNR that use GeoPandas GeoDataFrames. .. note:: - Functions that use GeoDataFrames require the Python package **geopandas** :cite:p:`JVFM21` + Functions that use GeoDataFrames require the Python package **geopandas** :cite:p:`jvfm21` and **rtree** :cite:p:`rtree`. Both are optional dependencies of WNTR. Note that **shapely** is installed with geopandas. diff --git a/documentation/graphics.rst b/documentation/graphics.rst index 9e7c6af01..256d59861 100644 --- a/documentation/graphics.rst +++ b/documentation/graphics.rst @@ -137,7 +137,7 @@ As with basic network graphics, a wide range of plotting options can be supplied However, link attributes currently cannot be displayed on the graphic. .. note:: - This function requires the Python package **plotly** :cite:p:`SPHC16`, which is an optional dependency of WNTR. + This function requires the Python package **plotly** :cite:p:`sphc16`, which is an optional dependency of WNTR. The following example plots the network along with node population (:numref:`fig-plotly`). @@ -164,10 +164,10 @@ See :ref:`modify_node_coords` for more information on converting node coordinate As with basic network graphics, a wide range of plotting options can be supplied. .. note:: - This function requires the Python package **folium** :cite:p:`Folium`, which is an optional dependency of WNTR. + This function requires the Python package **folium** :cite:p:`folium`, which is an optional dependency of WNTR. The following example using EPANET Example Network 3 (Net3) converts node coordinates to longitude/latitude and plots the network along -with pipe length over the city of Albuquerque (for demonstration purposes only) (:numref:`fig-leaflet`). The longitude and latitude for two locations are needed to plot the network. For the EPANET Example Network 3, these locations are the reservoir 'Lake' and node '219'. This example requires the Python package **utm** :cite:p:`Bieni19` to convert the node coordinates. +with pipe length over the city of Albuquerque (for demonstration purposes only) (:numref:`fig-leaflet`). The longitude and latitude for two locations are needed to plot the network. For the EPANET Example Network 3, these locations are the reservoir 'Lake' and node '219'. This example requires the Python package **utm** :cite:p:`bieni19` to convert the node coordinates. .. doctest:: @@ -246,7 +246,7 @@ Interactive time series graphics are useful when visualizing large datasets. Basic time series graphics can be converted to interactive time series graphics using the ``plotly.express`` module. .. note:: - This functionality requires the Python package **plotly** :cite:p:`SPHC16`, which is an optional dependency of WNTR. + This functionality requires the Python package **plotly** :cite:p:`sphc16`, which is an optional dependency of WNTR. The following example uses simulation results from above, and converts the graphic to an interactive graphic (:numref:`fig-interactive-timeseries`). diff --git a/documentation/hydraulics.rst b/documentation/hydraulics.rst index e2d6e5e21..56243a2ad 100644 --- a/documentation/hydraulics.rst +++ b/documentation/hydraulics.rst @@ -12,7 +12,7 @@ See :ref:`software_framework` for more information on features and limitations o EpanetSimulator ----------------- -The EpanetSimulator can be used to run EPANET 2.00.12 Programmer's Toolkit :cite:p:`Ross00` or EPANET 2.2.0 Programmer's Toolkit :cite:p:`RWTS20`. +The EpanetSimulator can be used to run EPANET 2.00.12 Programmer's Toolkit :cite:p:`ross00` or EPANET 2.2.0 Programmer's Toolkit :cite:p:`rwts20`. EPANET 2.2.0 is used by default and runs demand-driven and pressure dependent hydraulic analysis. EPANET 2.00.12 runs demand-driven hydraulic analysis only. Both versions can also run water quality simulations, as described in :ref:`water_quality_simulation`. @@ -111,7 +111,7 @@ More information on water network options can be found in :ref:`options`. Mass balance at nodes ------------------------- -Both simulators use the mass balance equations from EPANET :cite:p:`Ross00`: +Both simulators use the mass balance equations from EPANET :cite:p:`ross00`: .. math:: @@ -127,7 +127,7 @@ If water is flowing out of node :math:`n` and into pipe :math:`p`, then Headloss in pipes ------------------------- -Both simulators use conservation of energy formulas from EPANET :cite:p:`Ross00`. +Both simulators use conservation of energy formulas from EPANET :cite:p:`ross00`. While the EpanetSimulator can use the Hazen-Williams and Chezy-Manning pipe head loss formulas, the WNTRSimulator uses only the Hazen-Williams head loss formula, shown below. @@ -225,7 +225,7 @@ The mass balance and headloss equations described above are solved by simultaneously determining demand along with the network pressures and flow rates. Both simulators can run hydraulics using a pressure dependent demand simulation -according to the following pressure-demand relationship :cite:p:`WaSM88`: +according to the following pressure-demand relationship :cite:p:`wasm88`: .. math:: @@ -308,7 +308,7 @@ Users interested in using the EpanetSimulator to model leaks can still do so by emitter coefficients. When using the WNTRSimulator, leaks are modeled with a general form of the equation proposed by Crowl and Louvar -:cite:p:`CrLo02` where the mass flow rate of fluid through the hole is expressed as: +:cite:p:`crlo02` where the mass flow rate of fluid through the hole is expressed as: .. math:: @@ -328,9 +328,9 @@ where :math:`g` is the acceleration of gravity (m/s²), and :math:`\rho` is the density of the fluid (kg/m³). -The default discharge coefficient is 0.75 (assuming turbulent flow) :cite:p:`Lamb01`, but +The default discharge coefficient is 0.75 (assuming turbulent flow) :cite:p:`lamb01`, but the user can specify other values if needed. -The value of :math:`\alpha` is set to 0.5 (assuming large leaks out of steel pipes) :cite:p:`Lamb01` and currently cannot be changed by the user. +The value of :math:`\alpha` is set to 0.5 (assuming large leaks out of steel pipes) :cite:p:`lamb01` and currently cannot be changed by the user. Leaks can be added to junctions and tanks. A pipe break is modeled using a leak area large enough to drain the pipe. diff --git a/documentation/installation.rst b/documentation/installation.rst index 1f1e22f62..50f7b502d 100644 --- a/documentation/installation.rst +++ b/documentation/installation.rst @@ -237,15 +237,15 @@ Requirements Requirements for WNTR include 64-bit Python (tested on versions 3.7, 3.8, 3.9, and 3.10) along with several Python packages. Users should have experience using Python (https://www.python.org/), including the installation of additional Python packages. The following Python packages are required: -* NumPy :cite:p:`VaCV11`: used to support large, multi-dimensional arrays and matrices, +* NumPy :cite:p:`vacv11`: used to support large, multi-dimensional arrays and matrices, http://www.numpy.org/ -* SciPy :cite:p:`VaCV11`: used to support efficient routines for numerical integration, +* SciPy :cite:p:`vacv11`: used to support efficient routines for numerical integration, http://www.scipy.org/ -* NetworkX :cite:p:`HaSS08`: used to create and analyze complex networks, +* NetworkX :cite:p:`hass08`: used to create and analyze complex networks, https://networkx.github.io/ -* pandas :cite:p:`Mcki13`: used to analyze and store time series data, +* pandas :cite:p:`mcki13`: used to analyze and store time series data, http://pandas.pydata.org/ -* Matplotlib :cite:p:`Hunt07`: used to produce graphics, +* Matplotlib :cite:p:`hunt07`: used to produce graphics, http://matplotlib.org/ These packages are included in the Anaconda Python distribution. @@ -257,17 +257,17 @@ Optional dependencies The following Python packages are optional: -* plotly :cite:p:`SPHC16`: used to produce interactive scalable graphics, +* plotly :cite:p:`sphc16`: used to produce interactive scalable graphics, https://plot.ly/ -* folium :cite:p:`Folium`: used to produce Leaflet maps, +* folium :cite:p:`folium`: used to produce Leaflet maps, http://python-visualization.github.io/folium/ -* utm :cite:p:`Bieni19`: used to translate node coordinates to utm and lat/long, +* utm :cite:p:`bieni19`: used to translate node coordinates to utm and lat/long, https://pypi.org/project/utm/ -* geopandas :cite:p:`JVFM21`: used to work with geospatial data, +* geopandas :cite:p:`jvfm21`: used to work with geospatial data, https://geopandas.org/ * rtree :cite:p:`rtree`: used for overlay operations in geopandas, https://rtree.readthedocs.io/ -* openpyxl :cite:p:`GaCl18`: used to read/write to Microsoft® Excel® spreadsheets, +* openpyxl :cite:p:`gacl18`: used to read/write to Microsoft® Excel® spreadsheets, https://openpyxl.readthedocs.io All of these packages **except geopandas** are included in the Anaconda Python distribution. diff --git a/documentation/layers.rst b/documentation/layers.rst index 56b669f3f..ac9a59292 100644 --- a/documentation/layers.rst +++ b/documentation/layers.rst @@ -89,7 +89,7 @@ The valve layer can be included in water network graphics (:numref:`fig-random-v Valve layer using random placement. The **strategic** placement specifies the number of pipes (n) from each node that do NOT contain a valve. -In this case, n is generally 0, 1, or 2 (i.e., N, N-1, or N-2 valve placement) :cite:p:`WaWC06` :cite:p:`LWFZ17`. +In this case, n is generally 0, 1, or 2 (i.e., N, N-1, or N-2 valve placement) :cite:p:`wawc06` :cite:p:`lwfz17`. For example, if three pipes connect to a node and n = 2, then two of those pipes will not contain a valve and one pipe will contain a valve. The following example generates a strategic N-2 valve placement. The valve layer can be included in water network graphics (:numref:`fig-strategic-valve-layer`). diff --git a/documentation/morph.rst b/documentation/morph.rst index 9dcce13e8..9400d3700 100644 --- a/documentation/morph.rst +++ b/documentation/morph.rst @@ -13,7 +13,7 @@ splitting or breaking pipes. Network skeletonization ---------------------------- The goal of network skeletonization is to reduce the size of a water network model with minimal impact on system behavior. -Network skeletonization in WNTR follows the procedure outlined in :cite:p:`WCSG03`. +Network skeletonization in WNTR follows the procedure outlined in :cite:p:`wcsg03`. The skeletonization process retains all tanks, reservoirs, valves, and pumps, along with all junctions and pipes that are associated with controls. Junction demands and demand patterns are retained in the skeletonized model, as described below. Merged pipes are assigned equivalent properties for diameter, length, and roughness to approximate the updated system behavior. @@ -241,7 +241,7 @@ WNTR includes several options to modify node coordinates, denoted as :math:`(x, the nodes could be in the upper right and lower left). .. note:: - Functions that convert coordinates to UTM and longitude/latitude require the Python package **utm** :cite:p:`Bieni19`, which is an optional dependency of WNTR. + Functions that convert coordinates to UTM and longitude/latitude require the Python package **utm** :cite:p:`bieni19`, which is an optional dependency of WNTR. The following example returns a copy of the water network model with node coordinates scaled by 100 m. diff --git a/documentation/overview.rst b/documentation/overview.rst index 775fbda38..ac945db58 100644 --- a/documentation/overview.rst +++ b/documentation/overview.rst @@ -24,13 +24,13 @@ is a national priority. The National Infrastructure Advisory Council defined infrastructure resilience as “the ability to reduce the magnitude and/or duration of disruptive events. The effectiveness of a resilient infrastructure or enterprise depends upon its ability to anticipate, absorb, adapt to, and/or -rapidly recover from a potentially disruptive event” :cite:p:`NIAC09`. +rapidly recover from a potentially disruptive event” :cite:p:`niac09`. Being able to predict how drinking water systems will perform during disruptive incidents and understanding how to best absorb, recover from, and more successfully adapt to such incidents can help enhance resilience. Simulation and analysis tools can help water utilities to explore the capacity of their systems to handle disruptive -incidents and guide the planning necessary to make systems more resilient over time :cite:p:`USEPA14`. +incidents and guide the planning necessary to make systems more resilient over time :cite:p:`usepa14`. The Water Network Tool for Resilience (WNTR, pronounced *winter*) is a Python package designed to simulate and analyze resilience of water distribution networks. @@ -44,7 +44,7 @@ constituents within distribution systems. Users are encouraged to be familiar wi EPANET and/or should have background knowledge in hydraulics and pressurized pipe network modeling before using WNTR. EPANET has a graphical user interface that might be a useful tool to facilitate the visualization of the network and the associated analysis results. Information on EPANET can be found at https://www.epa.gov/water-research/epanet. -**WNTR is compatible with EPANET 2.00.12** :cite:p:`Ross00` **and EPANET 2.2** :cite:p:`RWTS20`. In addition, users should have +**WNTR is compatible with EPANET 2.00.12** :cite:p:`ross00` **and EPANET 2.2** :cite:p:`rwts20`. In addition, users should have experience using Python, including the installation of additional Python packages. General information on Python can be found at https://www.python.org/. @@ -63,7 +63,7 @@ generated by WNTR. WNTR includes capabilities to: -* **Generate water network models** from scratch or from existing EPANET-formatted water network model input (EPANET INP) files :cite:p:`Ross00` :cite:p:`RWTS20`. See EPANET documentation on `INP file format `_ for more details. +* **Generate water network models** from scratch or from existing EPANET-formatted water network model input (EPANET INP) files :cite:p:`ross00` :cite:p:`rwts20`. See EPANET documentation on `INP file format `_ for more details. * **Modify network structure** by adding/removing components or changing component characteristics @@ -97,7 +97,7 @@ WNTR was developed to greatly extend these capabilities. WNTR provides a flexible platform for modeling a wide range of disruptive incidents and repair strategies, and includes an extensible hydraulic simulator. Furthermore, WNTR is compatible with widely used scientific computing packages for Python, -including NetworkX :cite:p:`HaSS08`, pandas :cite:p:`Mcki13`, NumPy :cite:p:`VaCV11`, SciPy :cite:p:`VaCV11`, and Matplotlib :cite:p:`Hunt07`. +including NetworkX :cite:p:`hass08`, pandas :cite:p:`mcki13`, NumPy :cite:p:`vacv11`, SciPy :cite:p:`vacv11`, and Matplotlib :cite:p:`hunt07`. These packages allow the user to build custom analysis directly in Python, and gain access to tools that analyze the structure of complex water distribution networks, analyze time-series data from simulation results, diff --git a/documentation/resilience.rst b/documentation/resilience.rst index b7b9ac3cd..6869019f6 100644 --- a/documentation/resilience.rst +++ b/documentation/resilience.rst @@ -9,8 +9,8 @@ Resilience of water distribution systems refers to the design, maintenance, and operations of that system. All these aspects must work together to limit the effects of disasters and enable rapid return to normal delivery of safe water to customers. -Numerous resilience metrics have been suggested :cite:p:`USEPA14`. -These metrics generally fall into five categories: topographic, hydraulic, water quality, water security, and economic :cite:p:`USEPA14`. +Numerous resilience metrics have been suggested :cite:p:`usepa14`. +These metrics generally fall into five categories: topographic, hydraulic, water quality, water security, and economic :cite:p:`usepa14`. When quantifying resilience, it is important to understand which metric best defines resilience for a particular scenario. WNTR includes many metrics to help @@ -30,7 +30,7 @@ The following sections outline metrics that can be computed using WNTR, includin While some metrics define resilience as a single system-wide quantity, other metrics define quantities that are a function of time, space, or both. -For this reason, state transition plots :cite:p:`BaRR13` and network graphics +For this reason, state transition plots :cite:p:`barr13` and network graphics are useful ways to visualize resilience and compare metrics, as shown in :numref:`fig-metrics`. In the state transition plot, the x-axis represents time (before, during, and after a disruptive incident). The y-axis represents performance. This can be any time varying resilience metric that responds to the disruptive state. @@ -279,19 +279,19 @@ Hydraulic metrics included in WNTR are listed in :numref:`table-hydraulic-metri Demand To determine the number of node-time pairs above or below a specified demand threshold, use the :class:`~wntr.metrics.misc.query` method on results.node['demand']. - This method can be used to compute the fraction of delivered demand, from :cite:p:`OsKS02`. + This method can be used to compute the fraction of delivered demand, from :cite:p:`osks02`. Water service availability Water service availability is the ratio of delivered demand to the expected demand. This metric can be computed as a function of time or space using the :class:`~wntr.metrics.hydraulic.water_service_availability` method. - This method can be used to compute the fraction of delivered volume, from :cite:p:`OsKS02`. + This method can be used to compute the fraction of delivered volume, from :cite:p:`osks02`. - Todini index The Todini index :cite:p:`Todi00` is related to the capability of a system to overcome + Todini index The Todini index :cite:p:`todi00` is related to the capability of a system to overcome failures while still meeting demands and pressures at nodes. The Todini index defines resilience at a specific time as a measure of surplus power at each node. The Todini index can be computed using the :class:`~wntr.metrics.hydraulic.todini_index` method. - Modified resilience index The modified resilience index :cite:p:`JaSr08` is similar to the Todini index, but is only computed at junctions. + Modified resilience index The modified resilience index :cite:p:`jasr08` is similar to the Todini index, but is only computed at junctions. The metric defines resilience at a specific time as a measure of surplus power at each junction or as a system average. The modified resilience index can be computed using the :class:`~wntr.metrics.hydraulic.modified_resilience_index` method. @@ -301,7 +301,7 @@ Hydraulic metrics included in WNTR are listed in :numref:`table-hydraulic-metri A value of 1 indicates that tank storage is maximized, while a value of 0 means there is no water stored in the tank. Tank capacity can be computed using the :class:`~wntr.metrics.hydraulic.tank_capacity` method. - Entropy Entropy :cite:p:`AwGB90` is a measure of uncertainty in a random variable. + Entropy Entropy :cite:p:`awgb90` is a measure of uncertainty in a random variable. In a water distribution network model, the random variable is flow in the pipes and entropy can be used to measure alternate flow paths when a network component fails. A network that carries maximum entropy @@ -310,11 +310,11 @@ Hydraulic metrics included in WNTR are listed in :numref:`table-hydraulic-metri The :class:`~wntr.network.model.WaterNetworkModel.to_graph` method can be used to generate a weighted graph. Entropy can be computed using the :class:`~wntr.metrics.hydraulic.entropy` method. - Expected demand Expected demand is computed at each node and timestep based on node demand, demand pattern, and demand multiplier :cite:p:`USEPA15`. + Expected demand Expected demand is computed at each node and timestep based on node demand, demand pattern, and demand multiplier :cite:p:`usepa15`. The metric can be computed using the :class:`~wntr.metrics.hydraulic.expected_demand` method. This method does not require running a hydraulic simulation. - Average expected demand Average expected demand per day is computed at each node based on node demand, demand pattern, and demand multiplier :cite:p:`USEPA15`. + Average expected demand Average expected demand per day is computed at each node based on node demand, demand pattern, and demand multiplier :cite:p:`usepa15`. The metric can be computed using the :class:`~wntr.metrics.hydraulic.average_expected_demand` method. This method does not require running a hydraulic simulation. @@ -385,7 +385,7 @@ Water quality metrics included in WNTR are listed in :numref:`table-water-quali Concentration To determine the number of node-time pairs above or below a specified concentration threshold, use the :class:`~wntr.metrics.misc.query` method on results.node['quality'] after a simulation using CHEM or TRACE. - This method can be used to compute the fraction of delivered quality, from :cite:p:`OsKS02`. + This method can be used to compute the fraction of delivered quality, from :cite:p:`osks02`. Population impacted As stated above, population that is impacted by a specific quantity can be computed using the :class:`~wntr.metrics.misc.population_impacted` method. This can be applied to water quality metrics. @@ -443,13 +443,13 @@ Water security metrics included in WNTR are listed in :numref:`table-water-secu ===================================== ================================================================================================================================================ Metric Description ===================================== ================================================================================================================================================ - Mass consumed Mass consumed is the mass of a contaminant that exits the network via node demand at each node-time pair :cite:p:`USEPA15`. + Mass consumed Mass consumed is the mass of a contaminant that exits the network via node demand at each node-time pair :cite:p:`usepa15`. The metric can be computed using the :class:`~wntr.metrics.water_security.mass_contaminant_consumed` method. - Volume consumed Volume consumed is the volume of a contaminant that exits the network via node demand at each node-time pair :cite:p:`USEPA15`. + Volume consumed Volume consumed is the volume of a contaminant that exits the network via node demand at each node-time pair :cite:p:`usepa15`. The metric can be computed using the :class:`~wntr.metrics.water_security.volume_contaminant_consumed` method. - Extent of contamination Extent of contamination is the length of contaminated pipe at each node-time pair :cite:p:`USEPA15`. + Extent of contamination Extent of contamination is the length of contaminated pipe at each node-time pair :cite:p:`usepa15`. The metric can be computed using the :class:`~wntr.metrics.water_security.extent_contaminant` method. Population impacted As stated above, population that is impacted by a specific quantity can be computed using the @@ -510,12 +510,12 @@ Economic metrics included in WNTR are listed in :numref:`table-economic-metrics Metric Description ===================================== ================================================================================================================================================ Network cost Network cost is the annual maintenance and operations cost of tanks, pipes, valves, and pumps based on the equations from the Battle of - Water Networks II :cite:p:`SOKZ12`. + Water Networks II :cite:p:`sokz12`. Default values can be included in the calculation. Network cost can be computed using the :class:`~wntr.metrics.economic.annual_network_cost` method. - Greenhouse gas emissions Greenhouse gas emissions is the annual emissions associated with pipes based on equations from the Battle of Water Networks II :cite:p:`SOKZ12`. + Greenhouse gas emissions Greenhouse gas emissions is the annual emissions associated with pipes based on equations from the Battle of Water Networks II :cite:p:`sokz12`. Default values can be included in the calculation. Greenhouse gas emissions can be computed using the :class:`~wntr.metrics.economic.annual_ghg_emissions` method. diff --git a/documentation/resultsobject.rst b/documentation/resultsobject.rst index 37657db02..05e3e5a54 100644 --- a/documentation/resultsobject.rst +++ b/documentation/resultsobject.rst @@ -205,4 +205,4 @@ For example, DataFrames can be saved to Excel files using: >>> pressure.to_excel('pressure.xlsx') .. note:: - The Pandas method ``to_excel`` requires the Python package **openpyxl** :cite:p:`GaCl18`, which is an optional dependency of WNTR. + The Pandas method ``to_excel`` requires the Python package **openpyxl** :cite:p:`gacl18`, which is an optional dependency of WNTR. diff --git a/documentation/units.rst b/documentation/units.rst index da75b8a73..8f648cbbd 100644 --- a/documentation/units.rst +++ b/documentation/units.rst @@ -27,7 +27,7 @@ All data in WNTR is stored in the following SI (International System) units: When setting up analysis in WNTR, all input values should be specified in SI units. All simulation results are also stored in SI units and can be converted to other units if desired, -for instance by using the SymPy Python package :cite:p:`JCMG11`. +for instance by using the SymPy Python package :cite:p:`jcmg11`. EPANET unit conventions ------------------------ @@ -40,7 +40,7 @@ These options define the mass and flow units used in the file. Some units also depend on the equation used for pipe roughness headloss and on the reaction order specified. -For reference, :numref:`table-epanet-units` includes EPANET unit conventions :cite:p:`Ross00`. +For reference, :numref:`table-epanet-units` includes EPANET unit conventions :cite:p:`ross00`. .. _table-epanet-units: .. table:: EPANET INP File Unit Conventions diff --git a/wntr/metrics/economic.py b/wntr/metrics/economic.py index 6cbd87043..db5bfac4a 100644 --- a/wntr/metrics/economic.py +++ b/wntr/metrics/economic.py @@ -12,7 +12,7 @@ def annual_network_cost(wn, tank_cost=None, pipe_cost=None, prv_cost=None, pump_cost=None): """ - Compute annual network cost :cite:p:`SOKZ12`. + Compute annual network cost :cite:p:`sokz12`. Use the closest value from the lookup tables to compute annual cost for each component in the network. @@ -25,7 +25,7 @@ def annual_network_cost(wn, tank_cost=None, pipe_cost=None, prv_cost=None, tank_cost : pandas Series, optional Annual tank cost indexed by volume - (default values below, from :cite:p:`SOKZ12`). + (default values below, from :cite:p:`sokz12`). ============= ================================ Volume (m3) Annual Cost ($/yr) @@ -40,7 +40,7 @@ def annual_network_cost(wn, tank_cost=None, pipe_cost=None, prv_cost=None, pipe_cost : pandas Series, optional Annual pipe cost per pipe length indexed by diameter - (default values below, from :cite:p:`SOKZ12`). + (default values below, from :cite:p:`sokz12`). ============= ============= ================================ Diameter (in) Diameter (m) Annual Cost ($/m/yr) @@ -61,7 +61,7 @@ def annual_network_cost(wn, tank_cost=None, pipe_cost=None, prv_cost=None, prv_cost : pandas Series, optional Annual PRV valve cost indexed by diameter - (default values below, from :cite:p:`SOKZ12`). + (default values below, from :cite:p:`sokz12`). ============= ============= ================================ Diameter (in) Diameter (m) Annual Cost ($/m/yr) @@ -82,7 +82,7 @@ def annual_network_cost(wn, tank_cost=None, pipe_cost=None, prv_cost=None, pump_cost : pd.Series, optional Annual pump cost indexed by maximum power input to pump - (default values below, from :cite:p:`SOKZ12`). + (default values below, from :cite:p:`sokz12`). Maximum Power for a HeadPump is computed from the pump curve as follows: @@ -193,7 +193,7 @@ def annual_network_cost(wn, tank_cost=None, pipe_cost=None, prv_cost=None, def annual_ghg_emissions(wn, pipe_ghg=None): """ - Compute annual greenhouse gas emissions :cite:p:`SOKZ12`. + Compute annual greenhouse gas emissions :cite:p:`sokz12`. Use the closest value in the lookup table to compute annual GHG emissions for each pipe in the network. @@ -206,7 +206,7 @@ def annual_ghg_emissions(wn, pipe_ghg=None): pipe_ghg : pandas Series, optional Annual GHG emissions indexed by pipe diameter - (default values below, from :cite:p:`SOKZ12`). + (default values below, from :cite:p:`sokz12`). ============= ================================ Diameter (mm) Annualized EE (kg-CO2-e/m/yr) diff --git a/wntr/metrics/hydraulic.py b/wntr/metrics/hydraulic.py index 4fe248c23..5b54ec8b9 100644 --- a/wntr/metrics/hydraulic.py +++ b/wntr/metrics/hydraulic.py @@ -168,7 +168,7 @@ def water_service_availability(expected_demand, demand): def todini_index(head, pressure, demand, flowrate, wn, Pstar): """ - Compute Todini index, equations from :cite:p:`Todi00`. + Compute Todini index, equations from :cite:p:`todi00`. The Todini index is related to the capability of a system to overcome failures while still meeting demands and pressures at the nodes. The @@ -228,7 +228,7 @@ def todini_index(head, pressure, demand, flowrate, wn, Pstar): def modified_resilience_index(pressure, elevation, Pstar, demand=None, per_junction=True): """ - Compute the modified resilience index, equations from :cite:p:`JaSr08`. + Compute the modified resilience index, equations from :cite:p:`jasr08`. The modified resilience index is the total surplus power available at demand junctions as a percentage of the total minimum required power at @@ -318,7 +318,7 @@ def tank_capacity(pressure, wn): def entropy(G, sources=None, sinks=None): """ - Compute entropy, equations from :cite:p:`AwGB90`. + Compute entropy, equations from :cite:p:`awgb90`. Entropy is a measure of uncertainty in a random variable. In a water distribution network model, the random variable is diff --git a/wntr/metrics/misc.py b/wntr/metrics/misc.py index b216a70bf..006b2e12c 100644 --- a/wntr/metrics/misc.py +++ b/wntr/metrics/misc.py @@ -38,7 +38,7 @@ def query(arg1, operation, arg2): def population(wn, R=0.00000876157): r""" - Compute population per node, rounded to the nearest integer :cite:p:`USEPA15`. + Compute population per node, rounded to the nearest integer :cite:p:`usepa15`. .. math:: pop=\dfrac{Average\ expected\ demand}{R} diff --git a/wntr/metrics/water_security.py b/wntr/metrics/water_security.py index ea93ee20e..e69073add 100644 --- a/wntr/metrics/water_security.py +++ b/wntr/metrics/water_security.py @@ -9,7 +9,7 @@ logger = logging.getLogger(__name__) def mass_contaminant_consumed(demand, quality, detection_limit=0): - """ Mass of contaminant consumed :cite:p:`USEPA15`. + """ Mass of contaminant consumed :cite:p:`usepa15`. Parameters ---------- @@ -37,7 +37,7 @@ def mass_contaminant_consumed(demand, quality, detection_limit=0): return MC def volume_contaminant_consumed(demand, quality, detection_limit=0): - """ Volume of contaminant consumed :cite:p:`USEPA15`. + """ Volume of contaminant consumed :cite:p:`usepa15`. Parameters ---------- @@ -66,7 +66,7 @@ def volume_contaminant_consumed(demand, quality, detection_limit=0): def extent_contaminant(quality, flowrate, wn, detection_limit=0): """ - Extent of contaminant in the pipes :cite:p:`USEPA15`. + Extent of contaminant in the pipes :cite:p:`usepa15`. Parameters ----------