diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index 4ade5b68ad2216e9e128e38b9e564345e19e19c4..39a15c50f0d3f1247fa367fafb2636ccd2f1453c 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 b08ac9436548843a597afead4f450ba87f99f304..cc651de4fa3ced41c6107edb3fb76c0f05a927c0 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 4c85cabf36be75e26853e9f2f802d615f02aeece..a8204708bb3e19f04e7caf5ec56d857154f0d3c1 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 92b8155ad8871c808c365ee3883d14269673a1d7..d5fd0e738fd71774d4efde2c5e5cec5b08fb162a 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 3951e6acd7819f89b65a9f2ad26051c8ef4cea1e..ea21f43507ef117efd4aa6256d07e8936dae021e 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 71dcb4b4558ba93d95665b533090225c741527db..013e746e2821e38ae21db29ecf547d00b2a3cc66 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 ac9224d1e3565a3be31ba6fab955dc616211dd46..13d7c29dfe53a2b1d38e741363591f6f355a044b 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 d06ba627287392edc233317ab48bc35402b6bde5..f01313a9affc2662bc988997283762253dc0e29d 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 Binary files a/tests_cases/Saar/Saar.pamhyr and b/tests_cases/Saar/Saar.pamhyr differ