File size: 821 Bytes
2d176ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import tsnet
from tsnet.network import TransientModel
from tsnet.simulation import Initializer, MOCSimulator
import matplotlib.pyplot as plt
import io

def simulate_valve_closure(inp_path, node_id, start_time, duration, end_open=0, closure_constant=2):
    tm = TransientModel(inp_path)
    tm.set_wavespeed(1200.0)
    tm.set_time(20)
    tm.valve_closure(node_id, [duration, start_time, end_open, closure_constant])
    tm = Initializer(tm, 0)
    tm = MOCSimulator(tm)

    fig, ax = plt.subplots()
    for node in ['N2', 'N3']:
        head = tm.get_node_head(node)
        ax.plot(tm.Time, head, label=f"Node {node}")
    ax.set_title("Head vs Time")
    ax.set_xlabel("Time (s)")
    ax.set_ylabel("Head (m)")
    ax.legend()
    buf = io.BytesIO()
    plt.savefig(buf, format="png")
    buf.seek(0)
    return buf