From 656b337499887e26986074cfcd69bf1737c1e632 Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Wed, 14 Oct 2026 19:14:51 +0200 Subject: [PATCH] RubarBE: notify when attempting to use RubarBE with solid boundary conditions missing --- src/Solver/RubarBE.py | 30 +++++++++++++++++++++++++++++- src/View/RunSolver/Translate.py | 7 +++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Solver/RubarBE.py b/src/Solver/RubarBE.py index 0b5f609f..2a87268a 100644 --- a/src/Solver/RubarBE.py +++ b/src/Solver/RubarBE.py @@ -153,8 +153,22 @@ class Rubar3(CommandLineSolver): qlog.put(trad["warning"].format(message=message)) return False + trased = self._parameter_flag(study, "trased") == "O" + if trased: + # Notice ยง3.6: HYDROS is required at each upstream boundary + missing = self._reaches_without_solid_boundary(study) + if missing: + trad = RunSolverTranslate() + message = trad["missing_solid_boundary"].format( + reaches=", ".join(missing) + ) + logger.warning(message) + if qlog is not None: + qlog.put(trad["warning"].format(message=message)) + return False + self._export_donnee(study, repertory, qlog, name=name) - if self._parameter_flag(study, "trased") == "O": + if trased: if not self._export_ts(study, repertory, qlog, name=name): return False self._export_geomac_i(study, repertory, qlog, name=name) @@ -194,6 +208,20 @@ class Rubar3(CommandLineSolver): ("defond", "integer"), ("varcons", "integer"), ) + @staticmethod + def _reaches_without_solid_boundary(study): + river = study.river + solid = [ + bc for bc in river.boundary_condition.get_tab("solid") + if not bc.is_deleted() and bc.bctype == "SL" and len(bc) > 0 + ] + + return [ + edge.name for edge in river.enable_edges() + if river.is_upstream_node(edge.node1) + and not any(bc.node == edge.node1 for bc in solid) + ] + def _parameter_values(self, study): return {p.name: str(p.value).strip() for p in study.river.get_params(self.type).parameters} diff --git a/src/View/RunSolver/Translate.py b/src/View/RunSolver/Translate.py index 2c8efd0f..ebffb9d8 100644 --- a/src/View/RunSolver/Translate.py +++ b/src/View/RunSolver/Translate.py @@ -43,6 +43,13 @@ class RunSolverTranslate(PamhyrTranslate): "Export cancelled: REGIME=1 is incompatible with CONDAM=0. " "A reflecting upstream boundary cannot impose the water depth." ) + self._dict["missing_solid_boundary"] = _translate( + "Solver", + "Export cancelled: sediment transport (TRASED) is enabled but " + "no solid boundary condition is defined at the upstream node " + "of reach(es): {reaches}. Add a solid boundary condition, or " + "disable sediment transport in the solver parameters." + ) self._dict["export_failed"] = _translate( "Solver", "Export failed; task cancelled" )