From dc114f759d8a5c2c75a242e9b41b8391271d5f14 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Tue, 16 Apr 2024 12:04:19 +0200 Subject: [PATCH] Solver: Mage: Enable LC export. --- src/Solver/Mage.py | 82 ++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 42 deletions(-) diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index ef574045..f3a7eb12 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -147,14 +147,7 @@ class Mage(CommandLineSolver): os.makedirs(os.path.join(repertory, "net"), exist_ok=True) # Write header - edges = study.river.edges() - edges = list( - filter( - lambda e: e.is_enable(), - edges - ) - ) - + edges = study.river.enable_edges() for edge in edges: name = f"Reach_{edge.id + 1:>3}".replace(" ", "0") @@ -308,40 +301,50 @@ class Mage(CommandLineSolver): return files - # @timer - # def _export_LC(self, lateral, repertory, qlog, name="0"): - # files = [] - - # if qlog is not None: - # qlog.put(f"Export LAT file") + @timer + def _export_lateral_contrib(self, study, repertory, qlog, name="0"): + files = [] + lst = study.river.lateral_contribution - # with mage_file_open( - # os.path.join(repertory, f"{name}.LAT"), - # "w+" - # ) as f: - # files.append(f"{name}.LAT") + with mage_file_open( + os.path.join(repertory, f"{name}.LAT"), + "w+" + ) as f: + if qlog is not None: + qlog.put(f"Export LAT file") + files.append(f"{name}.LAT") - # name = f"{lateral.node.id:3}".replace(" ", "x") - # f.write(f"* {lateral.node.name} ({name}) {lateral.bctype}\n") - # f.write(f"${name}\n") - # header = lateral.header - # f.write(f"*{header[0]:>9}|{header[1]:>10}\n") + for tab in ["liquid", "solid", "suspenssion"]: + for lateral in lst.get_tab(tab): + self._export_LC(study, lateral, f, qlog) - # for d in lateral.data: - # f.write(f"{d[0]:1{name}.3f}{d[1]:10.3f}\n") + return files - # return files + @timer + def _export_LC(self, study, lateral, f, qlog, name="0"): + edges = study.river.enable_edges() + if lateral.edge not in edges: + return - # @timer - # def _export_lateral_contrib(self, study, repertory, qlog, name="0"): - # files = [] - # lst = study.river.lateral_contribution + eid, _ = next( + filter( + lambda e: e[1] == lateral.edge, + enumerate(edges) + ) + ) - # for tab in ["liquid", "solid", "suspenssion"]: - # for lateral in lst.get_tab(tab): - # files = files + self._export_LC(lateral, repertory, qlog) + name = f"{eid+1:>3}" + # name = f"Reach_{lateral.edge.id + 1:>3}".replace(" ", "0") + f.write(f"* {lateral.edge.name} ({name}) {lateral.lctype}\n") + f.write(f"${name} {lateral.begin_kp:>10.4f} {lateral.end_kp:>10.4f}\n") + header = lateral.header + f.write(f"*{header[0]:>9}|{header[1]:>10}\n") - # return files + for d in lateral.data: + if lateral.lctype in ["EV"]: + f.write(f"{d[0]:10.3f}{-d[1]:10.3f}\n") + else: + f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n") @timer def _export_RUG(self, study, repertory, qlog, name="0"): @@ -821,13 +824,7 @@ class Mage8(Mage): with mage_file_open(os.path.join(repertory, f"{name}.NET"), "w+") as f: files.append(f"{name}.NET") - edges = study.river.edges() - edges = list( - filter( - lambda e: e.is_enable(), - edges - ) - ) + edges = study.river.enable_edges() for e in edges: name = f"Reach_{e.id + 1:>3}".replace(" ", "0") @@ -884,6 +881,7 @@ class Mage8(Mage): self._export_RUG, self._export_INI, self._export_SIN, self._export_VAR, self._export_CAS, self._export_DEV, + self._export_lateral_contrib, ] @timer -- GitLab