JalTantra

A System for Design and Optimization of Water Distribution Networks
JalTantra System: https://www.cse.iitb.ac.in/jaltantra

JalTantra Video Tutorial: LINK
JalTantra Tutorial Script: LINK

Usage instructions

Sample Files

Sample Input: Sample.BRA or Sample.xml or Sample_input.xls
Sample Output: Sample_output.xls

Sample Input(With ESR option): Sample_ESR.xml or Sample_input_ESR.xls
Sample Output(With ESR option): Sample_output_ESR.xls

Sample Input(With ESR and Pump option): Sample_ESR_Pump.xml or Sample_input_ESR_Pump.xls
Sample Output(With ESR and Pump option): Sample_output_ESR_Pump.xls

Input

NOTE: Variables marked {} are optional
Source node: head
Node: elevation, {demand}, {min pressure requirement}
Pipe: start/end node, length, {roughness}, {diameter}, {parallel allowed}
Commercial pipe diameter: cost
ESR: cost of construction for different capacities, ESR size with respect to daily demand, {maximum ESR height}
Pump: pump efficiency, capital cost per kW, energy cost per kWh, design lifetime, {discount and inflation rate}
Pipe network must be branched, i.e. no loops
Single sourced

Output

Pipe diameters
[ESR: location, height, capacity, which nodes served]
[Pump: location, power, head provided]

Objective

Minimize total pipe cost [+ ESR cost] [+ Pump Capital cost] [+ Pump Energy cost]

Constraints

Minimum pressure specified must me maintained at each node
Demand must be met at each node
Pipe diameters can only take values from provided commercial pipes data

Map Tab

Transfer Data: Transfer the node and pipe information to the nodes and pipes tab
Close Chart: Deselect the currently selected pipe and close its associated elevation chart
Search Location: Search for a location on the map (type in the location and select from the downdrop menu or press enter. Can also enter lat, long information)

Add Node: Add a node to the map (Click on the button then click on a point on the map. Once added you can modify the node name and id and also change location by either entering the lat/long info or manually moving the node. You can also set if this node is the source node or an ESR node)
Add Pipe: Add a pipe between two nodes on the map (Click on the button then click on two existing nodes on the map one by one)

Right click the map: Provides options to add/edit/delete nodes, add/delete/split pipes or close the elevation chart
Right click a node: Provides options to delete or edit the node. (Deleting the node removes all pipes connected to it)
Right click a pipe: Provides options to delete/split a pipe or close the elevation chart. (Spliting a pipe adds a node at the split point and creates two pipes instead of the original one)

General Tab

Name of Project: Text (Your Project Name)
Minimum Node Pressure: Double (metre) (The default minimum pressure that must be maintained at all nodes)
Default Pipe Roughness: Double (The default pipe roughness that is used to calculate headloss in the pipes)
Minimum Headloss per KM: Double (metre) (The minimum headloss per km that is allowed in each pipe)
Maximum Headloss per KM: Double (metre) (The maximum headloss per km that is allowed in each pipe)
Maximum Speed of Water: Double (metre per second) (not mandatory, default:no constraint) (Maximum speed of water in metres per second that is allowed in a pipe)
Maximum Pressure in Pipe: Double (metre) (not mandatory, default:no constraint) (Maximum pressure of water in metres that should exist in a pipe. Note that this constraint is not strictly enforced, but a warning is provided in the results if pressure is exceeded)
Number of Supply Hours: Double (Number of hours in a day that water is supplied for. For example if supply hours is 12 it corresponds to a peak factor of 2)
Source Node ID: Integer (The unique node id of the source)
Source Node Name: String (The name of the source node)
Source Head: Double (metre) (The constant water head provided by the source)
Source Elevation: Double (metre) (The elevation of the source)
NOTE: The source details should NOT be duplicated in the node tab

Nodes Tab

NodeID: Integer (unique nodeID of your node)
Node Name: String (Name of your node)
Elevation: Double (metre) (elevation of your node)
Demand: Double (litres per second) (not mandatory, default:0) (demand of your node)
Min. Pressure: Double (metre) (not mandatory, default: from general tab) (minimum pressure that needs to maintained at the node)

Add New: (Add extra row corresponding to one node)
Delete: (Rmove selected rows)

Pipes Tab

PipeID: Integer (unique pipeID of your pipe)
Start Node: Integer (nodeID of the node at the start of your pipe)
End Node: Integer (nodeID of the node at the end of your pipe)
Length: Double (metre) (length of your pipe)
Diameter: Integer (milimeter) (not mandatory, default:to be calculated) (diameter of your pipe)
Roughness: Double (not mandatory, default:from general tab) (roughness of pipe that is used to calculate the headloss in the pipe)
Parallel Allowed: Boolean (not mandatory, default: false) (If a new pipe is allowed to be placed in parallel to an existing pipe.)

Add New: (Add extra row corresponding to one pipe)
Delete: (Remove selected rows)

Commercial Pipes Tab

Diameter: Integer (milimeter) (unique diameter of the commercial pipe)
Roughness: Double (not mandatory, default:from general tab) (Roughness of the commercial pipe)
Cost: Double (Rs per metre) (cost per metre of the commercial pipe)

Add New: (Add extra row corresponding to one commercial pipe)
Delete: (Remove selected rows)

ESR Tab

Secondary Network Supply Hours : Double (Number of hours in day that an ESR provides water to its secondary network)
ESR Capacity Factor: Double (Size of ESR in relation to the daily demand it serves. For eg a value of 0.5 means that the ESR capacity is half the daily demand)
Maximum ESR Height: Double (metre) (not mandatory, default:no constraint) (Maximum height of ESR in metres)
Allow ESRs at zero demand nodes: Boolean (deafult:false) (Allow ESRs to placed at nodes with zero demand. Note that if zero demand nodes are not allowed optimization will be significantly faster)
Nodes with ESRs: (default:no constraint) (List of Nodes that must have ESRs)
Nodes without ESRs: (default:no constraint) (List of Nodes that must not have ESRs)

ESR Cost Tab

Minimum Capacity: Double (litre) (default: max capacity of previous row) (Minimum capacity of the row in the ESR cost table)
Maximum Capacity: Double (litre) (Maximum capacity of the row in the ESR cost table)
Base Cost: Double (Rs) (default: calculated from previous row) (base cost of ESR having capacity between the minimum and maximum capacity)
Unit Cost: Double (Rs per litre) (unit cost of ESR having capacity between the minimum and maximum capacity)

Add New: (Add extra row for the ESR cost table)
Delete: (Remove selected rows)

Pump Tab

Minimum Pump Size : Double (kW) (Size of Minimum Pump in kW that can be installed)
Pump Efficiency: Double (Efficiency of pump expressed as a %)
Capital Cost per kW: Double (Rs) (Capital cost of the pump per kW installed capacity)
Energy Cost per kWh: Double (Rs) (Energy cost per kWh energy consumed)
Design Lifetime: Integer (Number of years for which pumps will be operational)
Discount Rate: Double (default: 0) (Discount rate is the interest rate expressed as a %. More the discount rate lesser is the enrgy cost of the pump)
Inflation Rate: Double (default: 0) (Inflation rate is the rate by which prices rise expressed as a %. More the inflation rate greater is the energy cost of the pump)
Pipes without Pumps: (default:no constraint) (List of pipes that cannot have Pumps)

Results Tab

Node Tab: Nodewise results including head and pressure values for each node
Pipe Tab: Pipewise results including flow, diamter, headloss, headlossperkm and cost for each pipe
Cost Tab: Cost results for each diameter of commercial pipe
ESR Tab: Cost results for each ESR to be constructed
Pump Tab: Cost results for each Pump to be installed

Hints

If you get a timeout message try one or more of the following things: If you get a message saying unable to solve network try one or more of the following things: