From 07451899c4c631d901bfbc48ecd1137f5be884cd Mon Sep 17 00:00:00 2001 From: Theophile Terraz <theophile.terraz@inrae.fr> Date: Mon, 4 Dec 2023 17:38:25 +0100 Subject: [PATCH] export mage SIN file --- src/Model/Network/Graph.py | 12 ++++++++++++ src/Solver/Mage.py | 32 +++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/Model/Network/Graph.py b/src/Model/Network/Graph.py index d617ba77..e3616d0e 100644 --- a/src/Model/Network/Graph.py +++ b/src/Model/Network/Graph.py @@ -212,3 +212,15 @@ class Graph(object): def is_enable_edge(self, edge): return edge._enable + + #def get_edge_id(self, reach): + # for i, e in enumerate(self.enable_edges): + # if e.id == reach.id: + # return i + + def get_edge_id(self, reach): + return next( + filter( + lambda e: e[1].id == reach.id, enumerate(self.enable_edges) + ) + )[0] diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 22349870..80793357 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -374,13 +374,7 @@ class Mage(CommandLineSolver): with mage_file_open(os.path.join(repertory, f"{name}.INI"), "w+") as f: has_ini = False id = 1 - reachs = study.river.edges() - reachs = list( - filter( - lambda e: e.is_enable(), - reachs - ) - ) + reachs = study.river.enable_edges() # TODO put real date... f.write(f"$ date en minutes : 0.00\n") @@ -442,6 +436,29 @@ class Mage(CommandLineSolver): return files + @timer + def _export_SIN(self, study, repertory, qlog, name="0"): + files = [] + + hydraulic_structures = study.river.hydraulic_structures.lst + if len(hydraulic_structures) == 0: + return files + + if qlog is not None: + qlog.put("Export SIN file") + + with mage_file_open(os.path.join(repertory, f"{name}.SIN"), "w+") as f: + files.append(f"{name}.SIN") + + for hs in hydraulic_structures: + if hs.reach.is_enable: + reach_id = study.river.get_edge_id(hs.reach) + params = [p.value for p in hs.basic_hydraulic_structure.param] + param_str = ' '.join([f'{p.value:>10.3f}' for p in hs.basic_hydraulic_structure.param]) + f.write(f"{reach_id} {hs.kp:>12.3f} {params} {hs.name}\n") + + return files + @timer def _export_REP(self, study, repertory, files, qlog, name="0"): if qlog is not None: @@ -683,6 +700,7 @@ class Mage8(Mage): self._export_bound_cond(study, repertory, qlog, name=name) files = files + self._export_RUG(study, repertory, qlog, name=name) files = files + self._export_INI(study, repertory, qlog, name=name) + files = files + self._export_SIN(study, repertory, qlog, name=name) files = files + self._export_CAS(study, repertory, qlog, name=name) self._export_REP(study, repertory, files, qlog, name=name) -- GitLab