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.