"""Builds a small demonstration network through the controller.""" from __future__ import annotations def build_sample(controller): """Create a source -> pump -> junction -> consumers water network.""" add = controller.add_node connect = controller.connect source = add("source", 0, 200) pump = add("pump", 220, 200) tank = add("tank", 420, 60) junction = add("junction", 460, 220) valve = add("valve", 640, 220) c1 = add("consumer", 820, 120) c2 = add("consumer", 820, 320) connect(source.node_id, "out", pump.node_id, "in") connect(pump.node_id, "out", junction.node_id, "w") connect(junction.node_id, "n", tank.node_id, "in") connect(junction.node_id, "e", valve.node_id, "in") connect(valve.node_id, "out", c1.node_id, "in") connect(junction.node_id, "s", c2.node_id, "in") # give consumers some demand for the flow solver for cons, demand in ((c1, 50), (c2, 45)): cons.properties.set_value("demand", demand) return [source, pump, tank, junction, valve, c1, c2]