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
.