Be sure to download the SWMM5 model
before running the examples.
Printing Subcatchment Runoff#
The following example prints subcatchment runoff values throughout a simulation.
# -*- coding: utf-8 -*-
from pyswmm import Simulation, Subcatchments
with Simulation('swmm_example.inp') as sim:
S1 = Subcatchments(sim)["S1"]
for step in sim:
print(sim.current_time)
print(S1.runoff)
Download this example file here
.
Saving to a CSV File#
The following example saves subcatchment pollutant buildup to a CSV file within a subdirectory at specified saving times.
# -*- coding: utf-8 -*-
import csv
import os
from pyswmm import Simulation, Subcatchments
ts = 60 # routing step (sec)
sph = 3600 # seconds per hour
times = [(1/ts)*sph, (2/ts)*sph, (3/ts)*sph, (4/ts)*sph,
(5/ts)*sph, (6/ts)*sph, (7/ts)*sph, (8/ts)*sph,
(9/ts)*sph, (10/ts)*sph, (11/ts)*sph, (12/ts)*sph,] # times to record buildup
i = 1
rec_step = 1
if not os.path.exists("buildup"):
os.mkdir("buildup")
with Simulation('swmm_example.inp') as sim:
for step in sim:
if rec_step in times:
with open('buildup/pollut_buildup'+str("%i" % i)+'.csv', 'w', newline='') as csvfile:
load = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
load.writerow(['time:', sim.current_time])
load.writerow(['Subcatchment', 'Loading'])
for subcatchment in Subcatchments(sim):
load.writerow([subcatchment.subcatchmentid, subcatchment.buildup['test-pollutant']])
i += 1
rec_step += 1
Download this example file here
.