From 617c66d0cd64a02371ac4ecee1e52301abc52bfc Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Wed, 15 Mar 2023 22:04:39 +0800 Subject: [PATCH] Support inp in link new --- api/inp_in_new.py | 9 ++++++--- api/s3_reservoirs.py | 2 +- api/s4_tanks.py | 1 + api/s5_pipes.py | 22 ++++++++++++++++++++++ api/s6_pumps.py | 27 +++++++++++++++++++++++++++ api/s7_valves.py | 20 ++++++++++++++++++++ 6 files changed, 77 insertions(+), 4 deletions(-) diff --git a/api/inp_in_new.py b/api/inp_in_new.py index d00425f..4c4ede6 100644 --- a/api/inp_in_new.py +++ b/api/inp_in_new.py @@ -5,6 +5,9 @@ from .s1_title import inp_in_title_new from .s2_junctions import inp_in_junction_new from .s3_reservoirs import inp_in_reservoir_new from .s4_tanks import inp_in_tank_new +from .s5_pipes import inp_in_pipe_new +from .s6_pumps import inp_in_pump_new +from .s7_valves import inp_in_valve_new from .s11_patterns import inp_in_pattern_new from .s12_curves import inp_in_curve_new from .s13_controls import inp_in_control_new @@ -22,9 +25,9 @@ _handler = { JUNCTIONS : (_L, inp_in_junction_new), RESERVOIRS : (_L, inp_in_reservoir_new), TANKS : (_L, inp_in_tank_new), - PIPES : (_L, None), - PUMPS : (_L, None), - VALVES : (_L, None), + PIPES : (_L, inp_in_pipe_new), + PUMPS : (_L, inp_in_pump_new), + VALVES : (_L, inp_in_valve_new), TAGS : (_L, None), DEMANDS : (_L, None), STATUS : (_L, None), diff --git a/api/s3_reservoirs.py b/api/s3_reservoirs.py index 6a24b97..2ffe9bd 100644 --- a/api/s3_reservoirs.py +++ b/api/s3_reservoirs.py @@ -159,7 +159,7 @@ def inp_in_reservoir_new(name: str, line: str) -> None: desc = str(tokens[-1]) if has_desc else None write(name, f"insert into _node (id, type) values ('{id}', 'reservoir');") - write(name, f"\ninsert into reservoirs (id, head, pattern) values ('{id}', {head}, {pattern});") + write(name, f"insert into reservoirs (id, head, pattern) values ('{id}', {head}, {pattern});") def inp_out_reservoir(name: str) -> list[str]: diff --git a/api/s4_tanks.py b/api/s4_tanks.py index 813bdd7..0e5e1cc 100644 --- a/api/s4_tanks.py +++ b/api/s4_tanks.py @@ -210,6 +210,7 @@ def inp_in_tank_new(name: str, line: str) -> None: write(name, f"insert into _node (id, type) values ('{id}', 'tank');") write(name, f"insert into tanks (id, elevation, init_level, min_level, max_level, diameter, min_vol, vol_curve, overflow) values ('{id}', {elevation}, {init_level}, {min_level}, {max_level}, {diameter}, {min_vol}, {vol_curve}, {overflow});") + def inp_out_tank(name: str) -> list[str]: lines = [] objs = read_all(name, 'select * from tanks') diff --git a/api/s5_pipes.py b/api/s5_pipes.py index f7c05b8..e31d57f 100644 --- a/api/s5_pipes.py +++ b/api/s5_pipes.py @@ -161,6 +161,28 @@ def inp_in_pipe(section: list[str]) -> ChangeSet: return cs +def inp_in_pipe_new(name: str, line: str) -> None: + tokens = line.split() + + num = len(tokens) + has_desc = tokens[-1].startswith(';') + num_without_desc = (num - 1) if has_desc else num + + id = str(tokens[0]) + node1 = str(tokens[1]) + node2 = str(tokens[2]) + length = float(tokens[3]) + diameter = float(tokens[4]) + roughness = float(tokens[5]) + minor_loss = float(tokens[6]) + # status is must-have, here fix input + status = str(tokens[7].upper()) if num_without_desc >= 8 else PIPE_STATUS_OPEN + desc = str(tokens[-1]) if has_desc else None + + write(name, f"insert into _link (id, type) values ('{id}', 'pipe');") + write(name, f"insert into pipes (id, node1, node2, length, diameter, roughness, minor_loss, status) values ('{id}', '{node1}', '{node2}', {length}, {diameter}, {roughness}, {minor_loss}, '{status}');") + + def inp_out_pipe(name: str) -> list[str]: lines = [] objs = read_all(name, 'select * from pipes') diff --git a/api/s6_pumps.py b/api/s6_pumps.py index aa2071f..2278060 100644 --- a/api/s6_pumps.py +++ b/api/s6_pumps.py @@ -151,6 +151,33 @@ def inp_in_pump(section: list[str]) -> ChangeSet: return cs +def inp_in_pump_new(name: str, line: str) -> None: + tokens = line.split() + + num = len(tokens) + has_desc = tokens[-1].startswith(';') + num_without_desc = (num - 1) if has_desc else num + + id = str(tokens[0]) + node1 = str(tokens[1]) + node2 = str(tokens[2]) + props = {} + for i in range(3, num_without_desc, 2): + props |= { tokens[i].lower(): tokens[i + 1] } + power = float(props['power']) if 'power' in props else None + power = power if power != None else 'null' + head = str(props['head']) if 'head' in props else None + head = f"'{head}'" if head != None else 'null' + speed = float(props['speed']) if 'speed' in props else None + speed = speed if speed != None else 'null' + pattern = str(props['pattern']) if 'pattern' in props else None + pattern = f"'{pattern}'" if pattern != None else 'null' + desc = str(tokens[-1]) if has_desc else None + + write(name, f"insert into _link (id, type) values ('{id}', 'pump');") + write(name, f"insert into pumps (id, node1, node2, power, head, speed, pattern) values ('{id}', '{node1}', '{node2}', {power}, {head}, {speed}, {pattern});") + + def inp_out_pump(name: str) -> list[str]: lines = [] objs = read_all(name, 'select * from pumps') diff --git a/api/s7_valves.py b/api/s7_valves.py index fcd5b72..491b961 100644 --- a/api/s7_valves.py +++ b/api/s7_valves.py @@ -157,6 +157,26 @@ def inp_in_valve(section: list[str]) -> ChangeSet: return cs +def inp_in_valve_new(name: str, line: str) -> None: + tokens = line.split() + + num = len(tokens) + has_desc = tokens[-1].startswith(';') + num_without_desc = (num - 1) if has_desc else num + + id = str(tokens[0]) + node1 = str(tokens[1]) + node2 = str(tokens[2]) + diameter = float(tokens[3]) + v_type = str(tokens[4].upper()) + setting = str(tokens[5]) + minor_loss = float(tokens[6]) + desc = str(tokens[-1]) if has_desc else None + + write(name, f"insert into _link (id, type) values ('{id}', 'valve');") + write(name, f"insert into valves (id, node1, node2, diameter, type, setting, minor_loss) values ('{id}', '{node1}', '{node2}', {diameter}, '{v_type}', '{setting}', {minor_loss});") + + def inp_out_valve(name: str) -> list[str]: lines = [] objs = read_all(name, 'select * from valves')