Wednesday, January 18, 2023

Surge Tanks

Disturbances in water distribution systems can be caused by various situations, including changes in pump operations, valve movements, boundary pressures, demand conditions, and transmission conditions. These disturbances can result in variations in flow, pressure, and water quality, which can impact the overall performance and reliability of the system. The following table summarizes the different types of disturbances and their potential effects on the system:

Disturbance TypeDescriptionPotential Effects
Pump Startup/ShutdownChanges in the operation of pumps in the systemVariations in flow and pressure
Valve Opening/ClosingChanges in the flow area caused by the movement of valvesVariations in flow and pressure
Boundary Pressure ChangesChanges in the level or pressure of reservoirs, tanks, etc.Variations in pressure and water quality
Rapid Demand ChangesSudden changes in water usage, such as hydrant flushingVariations in flow and pressure
Transmission ConditionsChanges in the condition of pipes, such as breaks or leaksVariations in flow and pressure, water quality

It's important to note that water distribution systems are complex systems and disturbances in one area can have knock-on effects in other parts of the system, so it is important to monitor and control the system to ensure stability and reliability.


 Open surge tanks

Closed surge vessels Bladder tanks Hybrid tanks (vented to admit air) Bypass lines Check valves Feed tanks (provide inflow to prevent cavitation) Air release/vacuum valves (2 and 3 stage valves) Pressure relief valves Surge anticipation valves
Type of TankDescriptionAdvantagesDisadvantages
Open Surge TanksThese tanks are open to the atmosphere and allow the excess pressure to be released.- They are relatively simple and inexpensive to construct. <br> - They can be used to prevent the water hammer effect.- They are subject to evaporation and contamination. <br> - They are not suitable for use with hazardous materials.
Closed Surge VesselsThese tanks are sealed and use a compressible gas (such as air) to absorb the excess pressure.- They can be used with hazardous materials. <br> - They are less susceptible to evaporation and contamination.- They are more expensive to construct than open surge tanks. <br> - They require regular maintenance to ensure the compressible gas is at the correct pressure.
Bladder TanksThese tanks use a flexible bladder to separate the water from the compressible gas.- They are less expensive to construct than closed surge vessels. <br> - They require less maintenance than closed surge vessels.- They are not suitable for use with hazardous materials. <br> - They have a limited life-span and need to be replaced periodically.
Hybrid Tanks (vented to admit air)These tanks are similar to closed surge vessels but have a vent to admit air.- They are less expensive to construct than closed surge vessels. <br> - They require less maintenance than closed surge vessels. <br> - They can be used to prevent the water hammer effect.- They are not suitable for use with hazardous materials. <br> - They are subject to evaporation and contamination.
Bypass LinesThese lines allow water to bypass the tank and the pump, reducing the pressure surge.- They reduce the pressure surge. <br> - They are relatively simple and inexpensive to construct.- They can increase the system head loss. <br> - They can increase the pump energy consumption.
Check ValvesThese valves prevent the water from flowing back through the system, reducing the pressure surge.- They reduce the pressure surge. <br> - They are relatively simple and inexpensive to construct.- They can increase the system head loss. <br> - They can increase the pump energy consumption.
Feed TanksThese tanks provide inflow to prevent cavitation.- They prevent cavitation. <br> - They are relatively simple and inexpensive to construct.- They can increase the system head loss. <br> - They can increase the pump energy consumption.
Air Release/Vacuum ValvesThese valves release or admit air to the system to prevent or correct negative pressures. They can have 2 or 3 stages.- They prevent or correct negative pressures. <br> - They are relatively simple and inexpensive to construct.- They can increase the system head loss. <br> - They can increase the pump energy consumption.
Pressure Relief ValvesThese valves release the excess pressure to prevent damage to the system.- They prevent damage to the system. <br> - They are relatively simple and inexpensive to construct.- They can increase the system head loss. <br> - They can increase the pump energy consumption.
Surge Anticipation ValvesThese valves are designed to anticipate and absorb pressure surges in a pipeline.- They anticipate and absorb pressure surges. <br> - They are relatively simple and inexpensive to construct.- They can increase the system head loss. <br> - They can increase the pump energy consumption.

ICM SWMM SQL Code for Links

ICM SWMM SQL Code for Links

This creates a table called "links" with the specified columns to store the link variables. The data types of each column are defined as well. Keep in mind that this is just an example, you may have to tweak it to fit your specific use case. Also, you may want to add more columns and constraints depending on your specific needs.

CREATE TABLE links (
  id INT PRIMARY KEY,
  horiz_ellipse_size_code INT,
  vert_ellipse_size_code INT,
  arch_material VARCHAR(255),
  arch_concrete_size_code INT,
  arch_steel_half_size_code INT,
  arch_steel_inch_size_code INT,
  arch_plate_18_size_code INT,
  arch_plate_31_size_code INT,
  conduit_height FLOAT,
  conduit_width FLOAT,
  number_of_barrels INT,
  roughness_HW FLOAT,
  roughness_DW FLOAT,
  top_radius FLOAT,
  left_slope FLOAT,
  right_slope FLOAT,
  triangle_height FLOAT,
  bottom_radius FLOAT,
  shape_exponent FLOAT,
  us_invert FLOAT,
  ds_invert FLOAT,
  us_headloss_coeff FLOAT,
  ds_headloss_coeff FLOAT,
  Mannings_N FLOAT,
  bottom_mannings_N FLOAT,
  roughness_depth_threshold FLOAT,
  initial_flow FLOAT,
  max_flow FLOAT,
  sediment_depth FLOAT,
  av_headloss_coeff FLOAT,
  seepage_rate FLOAT,
  flap_gate INT,
  culvert_code INT
);

);

The file "opwrowobjectlayoutswmm.xml" is a data file used by the Integrated Urban Water Management Model (ICM) software. The ICM software is used to simulate and analyze the performance of stormwater management systems, including the design and operation of stormwater collection and conveyance systems.

The file "opwrowobjectlayoutswmm.xml" contains variable names specific to the SWMM (Storm Water Management Model) conduit feature in the ICM software. These variable names are used in SQL and Ruby scripts, which are programming languages used to manipulate and analyze the data generated by the ICM software.

The variable names in this file include the definition of the conduit, such as the id, us_node_id, ds_node_id and branch_id; as well as the conduit properties, such as the length, shape, shape_curve, transect, horiz_ellipse_size_code, vert_ellipse_size_code, arch_material, arch_concrete_size_code, arch_steel_half_size_code, arch_steel_inch_size_code, arch_plate_18_size_code, arch_plate_31_size_code, conduit_height, conduit_width, number_of_barrels, roughness_HW, roughness_DW, top_radius, left_slope, right_slope, triangle_height, bottom_radius, shape_exponent, us_invert, ds_invert, us_headloss_coeff, ds_headloss_coeff, Mannings_N, bottom_mannings_N, roughness_depth_threshold, initial_flow, max_flow, sediment_depth, av_headloss_coeff, seepage_rate, flap_gate, culvert_code.

These variable names are used to represent the different attributes of a conduit within the ICM software, and the SQL and Ruby scripts allow users to access and manipulate that data in a variety of ways.

Tuesday, January 17, 2023

SWMM 5.2.2 Code for LID Process in LID.h

 This code defines a struct named "TLidProc" which represents the LID (Low Impact Development) process, which is a generic LID design per unit of area.

The struct contains the following fields:

FieldTypeDescription
IDchar*identifying name of the LID process
lidTypeinttype of LID (corresponds to an enumerator from the "LidTypes" enumeration)
surfaceTSurfaceLayersurface layer parameters
pavementTPavementLayerpavement layer parameters
soilTSoilLayersoil layer parameters
storageTStorageLayerstorage layer parameters
drainTDrainLayerunderdrain system parameters
drainMatTDrainMatLayerdrainage mat layer
drainRmvldouble*underdrain pollutant removals

The "ID" field is a string that can be used to identify the specific LID process. The "lidType" field is an integer that corresponds to one of the enumerators from the "LidTypes" enumeration. This allows the code to determine the specific type of LID process represented by this struct.

The "surface", "pavement", "soil", "storage", "drain" and "drainMat" fields are structs themselves and they contain specific parameters for the surface layer, pavement layer, soil layer, storage layer, underdrain system and drainage mat layer respectively. The "drainRmvl" field is a pointer to an array of doubles, which represent the underdrain pollutant removals.

This struct is used to store all the information about a specific LID process and can be used to design and simulate the performance of the LID unit. The struct also contains information about different layers of LID unit, like surface layer, soil layer and storage layer which helps to simulate the performance of LID unit.


// LID Process - generic LID design per unit of area typedef struct { char* ID; // identifying name int lidType; // type of LID TSurfaceLayer surface; // surface layer parameters TPavementLayer pavement; // pavement layer parameters TSoilLayer soil; // soil layer parameters TStorageLayer storage; // storage layer parameters TDrainLayer drain; // underdrain system parameters TDrainMatLayer drainMat; // drainage mat layer double* drainRmvl; // underdrain pollutant removals } TLidProc;

SWMM 5.2.2 Code for Defining LID data in LID.h

 This code defines several structs that are used to store information about different layers of a LID (Low Impact Development) unit. The structs define the properties of each layer, such as thickness, porosity, permeability, and other parameters that are specific to each layer.

The structs defined in this code are:

Struct NameDescription
TSurfaceLayerInformation about the surface layer of the LID unit, such as depression storage or berm height, roughness, slope, and alpha term in Manning equation.
TPavementLayerInformation about the pavement layer of the LID unit, such as thickness, void fraction, permeability, clogging factor, and regeneration interval.
TSoilLayerInformation about the soil layer of the LID unit, such as thickness, porosity, field capacity, wilting point, suction, saturated hydraulic conductivity.
TStorageLayerInformation about the storage layer of the LID unit, such as thickness, void fraction, saturated hydraulic conductivity, clogging factor and information about whether it is covered or not.
TDrainLayerInformation about the underdrain system of the LID unit, such as flow coefficient, head exponent, offset height, delay time, head when drain opens and closes, flow rate curve.
TDrainMatLayerInformation about the drainage mat layer of the LID unit, such as thickness, void fraction, roughness, slope/roughness term in Manning equation.

The fields of all the structs are double type except for the "covered" field which is of int type.

The code also defines a MAX_LAYERS macro which is set to 4. This macro is used as a constant throughout the code to specify the maximum number of layers that are allowed in the LID unit.

This way, the code defines the different layers of LID unit and the properties of each layer with the help of structs. This makes it easy to simulate and analyze the performance of LID unit by using these structs to store the information about different layers and their properties.



#define MAX_LAYERS 4 // LID Surface Layer typedef struct { double thickness; // depression storage or berm ht. (ft) double voidFrac; // available fraction of storage volume double roughness; // surface Mannings n double surfSlope; // land surface slope (fraction) double sideSlope; // swale side slope (run/rise) double alpha; // slope/roughness term in Manning eqn. char canOverflow; // 1 if immediate outflow of excess water } TSurfaceLayer; // LID Pavement Layer typedef struct { double thickness; // layer thickness (ft) double voidFrac; // void volume / total volume double impervFrac; // impervious area fraction double kSat; // permeability (ft/sec) double clogFactor; // clogging factor double regenDays; // clogging regeneration interval (days) double regenDegree; // degree of clogging regeneration } TPavementLayer; // LID Soil Layer typedef struct { double thickness; // layer thickness (ft) double porosity; // void volume / total volume double fieldCap; // field capacity double wiltPoint; // wilting point double suction; // suction head at wetting front (ft) double kSat; // saturated hydraulic conductivity (ft/sec) double kSlope; // slope of log(K) v. moisture content curve } TSoilLayer; // LID Storage Layer typedef struct { double thickness; // layer thickness (ft) double voidFrac; // void volume / total volume double kSat; // saturated hydraulic conductivity (ft/sec) double clogFactor; // clogging factor int covered; // TRUE if rain barrel is covered } TStorageLayer; // Underdrain System (part of Storage Layer) typedef struct { double coeff; // underdrain flow coeff. (in/hr or mm/hr) double expon; // underdrain head exponent (for in or mm) double offset; // offset height of underdrain (ft) double delay; // rain barrel drain delay time (sec) double hOpen; // head when drain opens (ft) double hClose; // head when drain closes (ft) int qCurve; // curve controlling flow rate (optional) } TDrainLayer; // Drainage Mat Layer (for green roofs) typedef struct { double thickness; // layer thickness (ft) double voidFrac; // void volume / total volume double roughness; // Mannings n for green roof drainage mats double alpha; // slope/roughness term in Manning equation } TDrainMatLayer;

SWMM 5.2.2 Code for LID Storage Layer

 

Variable NameTypeDescription
thicknessdoublethe layer thickness (ft)
voidFracdoublethe void volume / total volume
kSatdoublesaturated hydraulic conductivity (ft/sec)
clogFactordoubleclogging factor
coveredintBoolean flag indicating if rain barrel is covered (TRUE if it is covered)

This code defines a struct called TStorageLayer, which represents a storage layer in a Low Impact Development (LID) system. The struct contains several variables:

  • thickness: a double that represents the thickness of the layer, in feet.
  • voidFrac: a double that represents the void volume of the layer over the total volume of the layer.
  • kSat: a double that represents the saturated hydraulic conductivity, the rate at which water can flow through the soil, in feet per second.
  • clogFactor: a double that represents the clogging factor, which can be used to account for the potential reduction of the saturated hydraulic conductivity due to clogging or other factors.
  • covered: an integer that is a Boolean flag indicating if the rain barrel is covered. This is set to TRUE if the rain barrel is covered and FALSE otherwise.

The struct is used to store information about the LID storage layer, which can then be used in various calculations and simulations related to the LID system. The struct is usually used along with other parameters such as precipitation, infiltration, and evapotranspiration to evaluate the water management of the LID system.



// LID Storage Layer typedef struct { double thickness; // layer thickness (ft) double voidFrac; // void volume / total volume double kSat; // saturated hydraulic conductivity (ft/sec) double clogFactor; // clogging factor int covered; // TRUE if rain barrel is covered } TStorageLayer;

InfoSWMM: A 2030 AI-Assisted Study Guide

  InfoSWMM: A 2030 AI-Assisted Study Guide delete   InfoSWMM: A 2030 AI-Assisted Study Guide A comprehensive study guide for someone in 2030...