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