From 0fa3ca5fadfa291a97982c1a431e2d21e9d0899d Mon Sep 17 00:00:00 2001
From: Theophile Terraz <theophile.terraz@inrae.fr>
Date: Thu, 30 Jan 2025 12:31:02 +0100
Subject: [PATCH] debug compare results

---
 src/Model/Geometry/ProfileXYZ.py |   2 +-
 src/View/MainWindow.py           |  35 ++++++++++++++++++++++++++++---
 src/View/Results/PlotAC.py       |   2 +-
 src/View/Results/PlotH.py        |   6 +++---
 src/View/Results/PlotRKC.py      |   2 +-
 src/View/Results/PlotXY.py       |   6 +++---
 src/View/Results/Table.py        |  17 ++++++++++-----
 src/View/Results/Window.py       |   9 ++------
 tests_cases/Saar/Saar.pamhyr     | Bin 278528 -> 278528 bytes
 9 files changed, 55 insertions(+), 24 deletions(-)

diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py
index 4ade5b68..39a15c50 100644
--- a/src/Model/Geometry/ProfileXYZ.py
+++ b/src/Model/Geometry/ProfileXYZ.py
@@ -168,7 +168,7 @@ class ProfileXYZ(Profile, SQLSubModel):
                         lambda s: s.id == sl,
                         data["sediment_layers_list"].sediment_layers
                     )
-                )
+                , None)
 
             data["profile"] = new
             new._points = PointXYZ._db_load(execute, data.copy())
diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index b08ac943..cc651de4 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -1627,6 +1627,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
             return None
 
         solver3 = GenericSolver(solver1.name+" - "+solver2.name)
+        solver4 = GenericSolver(solver1.name)
+        solver5 = GenericSolver(solver2.name)
 
         result1 = solver1.results(
                         self._study,
@@ -1657,27 +1659,54 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         # return [result1, result2]
 
         result3 = Results(self._study, solver3)
+        result4 = Results(self._study, solver1)
+        result5 = Results(self._study, solver2)
         result3.set("nb_reach", result1.get("nb_reach"))
+        result4.set("nb_reach", result1.get("nb_reach"))
+        result5.set("nb_reach", result1.get("nb_reach"))
         result3.set("nb_profile", result1.get("nb_profile"))
+        result4.set("nb_profile", result1.get("nb_profile"))
+        result5.set("nb_profile", result1.get("nb_profile"))
         ts = list(result1.get("timestamps").intersection(result2.get("timestamps")))
         result3.set("timestamps", ts)
+        result4.set("timestamps", ts)
+        result5.set("timestamps", ts)
 
         for i in range(int(result1.get("nb_reach"))):
             # Add reach to results reach list
             r = result3.river.add(i)
+            r = result4.river.add(i)
+            r = result5.river.add(i)
 
         for timestamp in result3.get("timestamps"):
             for r in range(int(result1.get("nb_reach"))):
                 reach1 = result1.river.reach(r)
                 reach2 = result2.river.reach(r)
                 reach3 = result3.river.reach(r)
+                reach4 = result4.river.reach(r)
+                reach5 = result5.river.reach(r)
                 for p, (profile1, profile2) in enumerate(zip(reach1.profiles, reach2.profiles)):
                     for key in ["Z", "Q", "V"]:
                         d1 = profile1.get_ts_key(timestamp, key)
                         d2 = profile2.get_ts_key(timestamp, key)
-                        reach3.set(p, timestamp, key, d1-d2)
-
-        return [result1, result2, result3]
+                        d = d1-d2
+                        reach3.set(p, timestamp, key, d)
+                        reach4.set(p, timestamp, key, d1)
+                        reach5.set(p, timestamp, key, d2)
+                    limits = reach3.profile(p).geometry.get_water_limits(
+                            reach3.profile(p).get_ts_key(timestamp, "Z")
+                    )
+                    reach3.set(
+                            p, timestamp,
+                            "water_limits",
+                            limits
+                        )
+                    limits = profile1.get_ts_key(timestamp, "water_limits")
+                    reach4.set(p, timestamp, "water_limits", limits)
+                    limits = profile2.get_ts_key(timestamp, "water_limits")
+                    reach5.set(p, timestamp, "water_limits", limits)
+
+        return [result4, result5, result3]
 
     def open_results_adists(self):
         if self._study is None:
diff --git a/src/View/Results/PlotAC.py b/src/View/Results/PlotAC.py
index 4c85cabf..a8204708 100644
--- a/src/View/Results/PlotAC.py
+++ b/src/View/Results/PlotAC.py
@@ -144,7 +144,7 @@ class PlotAC(PamhyrPlot):
         self.update()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
+        self._current_res_id = res_id
         self.update()
 
     def set_timestamp(self, timestamp):
diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py
index 92b8155a..d5fd0e73 100644
--- a/src/View/Results/PlotH.py
+++ b/src/View/Results/PlotH.py
@@ -62,8 +62,8 @@ class PlotH(PamhyrPlot):
 
         self._isometric_axis = False
 
-        self._auto_relim_update = False
-        self._autoscale_update = False
+        #self._auto_relim_update = False
+        #self._autoscale_update = False
 
     @property
     def results(self):
@@ -156,7 +156,7 @@ class PlotH(PamhyrPlot):
         self.update()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
+        self._current_res_id = res_id
         self.draw()
 
     def set_timestamp(self, timestamp):
diff --git a/src/View/Results/PlotRKC.py b/src/View/Results/PlotRKC.py
index 3951e6ac..ea21f435 100644
--- a/src/View/Results/PlotRKC.py
+++ b/src/View/Results/PlotRKC.py
@@ -318,7 +318,7 @@ class PlotRKC(PamhyrPlot):
         self.update_current()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
+        self._current_res_id = res_id
         self.update()
 
     def set_timestamp(self, timestamp):
diff --git a/src/View/Results/PlotXY.py b/src/View/Results/PlotXY.py
index 71dcb4b4..013e746e 100644
--- a/src/View/Results/PlotXY.py
+++ b/src/View/Results/PlotXY.py
@@ -166,6 +166,7 @@ class PlotXY(PamhyrPlot):
         if reach.geometry.number_profiles == 0:
             self._init = False
             return
+        self.line_xy = []
         # TODO uncomment to draw all the reaches
         # self.draw_other_profiles(reaches)
         for xy in zip(reach.geometry.get_x(),
@@ -315,9 +316,8 @@ class PlotXY(PamhyrPlot):
         self.update_idle()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
-        self.update_profile()
-        self.update_idle()
+        self._current_res_id = res_id
+        self.update()
 
     def set_timestamp(self, timestamp):
         self._current_timestamp = timestamp
diff --git a/src/View/Results/Table.py b/src/View/Results/Table.py
index ac9224d1..13d7c29d 100644
--- a/src/View/Results/Table.py
+++ b/src/View/Results/Table.py
@@ -89,15 +89,22 @@ class TableModel(PamhyrTableModel):
                     return f"{p.rk:.4f}"
                 return f"{p.name}"
             elif self._headers[column] == "water_elevation":
-                v = self._lst[row].get_ts_key(self._timestamp, "Z")
+                try:
+                    v = self._lst[row].get_ts_key(self._timestamp, "Z")
+                except:
+                    v = 0.0
                 return f"{v:.4f}"
             elif self._headers[column] == "discharge":
-                v = self._lst[row].get_ts_key(self._timestamp, "Q")
+                try:
+                    v = self._lst[row].get_ts_key(self._timestamp, "Q")
+                except:
+                    v = 0.0
                 return f"{v:.4f}"
             elif self._headers[column] == "velocity":
-                q = self._lst[row].get_ts_key(self._timestamp, "Q")
-                z = self._lst[row].get_ts_key(self._timestamp, "Z")
-                v = self._lst[row].get_ts_key(self._timestamp, "V")
+                try:
+                    v = self._lst[row].get_ts_key(self._timestamp, "V")
+                except:
+                    v = 0.0
                 return f"{v:.4f}"
             elif self._headers[column] == "width":
                 z = self._lst[row].get_ts_key(self._timestamp, "Z")
diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py
index d06ba627..f01313a9 100644
--- a/src/View/Results/Window.py
+++ b/src/View/Results/Window.py
@@ -438,6 +438,7 @@ class ResultsWindow(PamhyrWindow):
             self.update_table_selection_profile(profile_id)
 
         if solver_id is not None:
+            self._current_results = solver_id
             self.plot_xy.set_result(solver_id)
             self.plot_ac.set_result(solver_id)
             self.plot_rkc.set_result(solver_id)
@@ -917,10 +918,4 @@ class ResultsWindow(PamhyrWindow):
         return my_dict
 
     def get_timestamps(self):
-        if len(self._results) == 1:
-            self._timestamps = sorted(list(self._results[0].get("timestamps")))
-        else:  # len(self._results) == 2:
-            self._timestamps = sorted(list(
-                self._results[0].get("timestamps").intersection(
-                    self._results[1].get("timestamps"))
-            ))
+        self._timestamps = sorted(list(self._results[0].get("timestamps")))
diff --git a/tests_cases/Saar/Saar.pamhyr b/tests_cases/Saar/Saar.pamhyr
index 9f1c08bfece12cf21069193a611f9ba41d04fc5b..3ed59054f0eeb9bae9d534239cbddf89b15c06ab 100644
GIT binary patch
delta 641
zcmZo@5Nv1=+>k5JXgWDhUX0Je(9FWZ$Xw6R)WFQrX!9g_`2<Fz&70~S1sIh!f9V%!
z$S~sIW#GTXznOmue*(W9zck+uzAJpo`5O5`_>B03dB5>q<K4mA%^S_D&GVb*GS6zB
zZk`Ap4elS@$GDermvDP>D{}qky1+G`E0@cYOPPy-^BU(W&PL8~PE$@UjvE~7IXXF#
zIczw1H#RP0uh%tVV_<X@l;uoJ$t*4@j?c`?EXhpFiBHbYOHR!zDM~EK%+E73fXJ37
zs~Q58n+nQuK$Vwd=B5^xq!z^ICZ?w%l&Kg1l^F}lvZE_YE-ph-rO#FmR>p>|EGZMo
zPIWz?VU~ijtmvwWlZ#SQkrW!}0u_1+%d$WfX66>;WF}{pfc+3(kXV$Mn_7}uWT0mX
zQBa<&S+4`s;>at@oR|ahb8c>8UP^pUW?pK1Vo`c&E-(a&VQLk$fl5`yWtl)qVg5EY
zFwlbsj)oQ+1E;2{EJ#6GW*#sULCOpa&8-X!AP8obx+WU~hdNND0#GR^$RR3W%7BVt
zDz~qdWb|W|Rb&TRt}iOi1`21m?eV~HGBz`qE-KHsg$-g)`+0drAZ7w$=I!U@Sqv2b
DO&7=)

delta 201
zcmZo@5Nv1=+>k5JXgE1fUX0Jg+`z=l)Kt&h%*@QveDfrE`2<Fd&70~S1sEANf9V%!
z2+`nN%fNq&e>49S{sewIerdkneAoF_@wM=U^O^FA@&4q!$-A4kk2j82kLMrHHJ)`m
zeLT@T+T6dnPjau|F6Z{)R^eviy3DnRtANXgOO1<}^Csuojg6t4+gC|4`msvMv9mES
z>hp`U<tC=5#+PK~rWTi^7Q`oI=1musXWYVOX=!O?Y1w{Wo)L(dfS7svd3hE?1pqBH
BI|l#&

-- 
GitLab