From 5287f30636a525e9c3be64eb601abf1566aeb449 Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Fri, 17 Jul 2026 15:05:21 +0200 Subject: [PATCH] AdisTT: Handling cases where parameters do not have time series --- src/Model/Scenario.py | 6 ++- src/Solver/AdisTT.py | 43 +++++++------------- src/View/WeatherParameters/Edit/translate.py | 2 +- 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/Model/Scenario.py b/src/Model/Scenario.py index 3c038795..8663dd8f 100644 --- a/src/Model/Scenario.py +++ b/src/Model/Scenario.py @@ -54,8 +54,10 @@ class Scenario(SQLSubModel): "river_reach", "river_node", "geotiff", "reservoir", "reservoir_data", # Temperature - "boundary_condition_temperature", "boundary_condition_data_temperature", - "initial_conditions_temperature", "initial_conditions_temperature_spec", + "boundary_condition_temperature", + "boundary_condition_data_temperature", + "initial_conditions_temperature", + "initial_conditions_temperature_spec", "weather_parameters", "weather_parameters_data", ] diff --git a/src/Solver/AdisTT.py b/src/Solver/AdisTT.py index a19940b9..f4fdb5ea 100644 --- a/src/Solver/AdisTT.py +++ b/src/Solver/AdisTT.py @@ -450,7 +450,7 @@ class AdisTTwc(AdisTT): if qlog is not None: qlog.put("Export TEMs files") - + name = "TEM" with adistt_file_open( os.path.join(repertory, f"{name}.POL"), "w+" @@ -476,7 +476,8 @@ class AdisTTwc(AdisTT): ) TEM_BCs = ( - study.river._BoundaryConditionsTemperature.BCs_Temperature_List + study.river._BoundaryConditionsTemperature + .BCs_Temperature_List ) if TEM_BCs: @@ -525,8 +526,7 @@ class AdisTTwc(AdisTT): f.write(f"*État initial pour le polluant {TEM_name}\n") f.write(" ".join(("DEFAULT =", f"{TEM_IC_default.temperature}", - "0.0 0.0 0.0\n"))) - # fake 0 to match adists + "0.0 0.0 0.0\n"))) # fake 0 to match adists if len(TEM_IC_default._data) != 0: self._export_ICs_AdisTT_Spec( @@ -549,8 +549,7 @@ class AdisTTwc(AdisTT): f"{ic_spec.start_rk}", f"{ic_spec.end_rk}", f"{ic_spec.temperature}" - f"0.0 0.0 0.0 0.0\n"))) - # fake 0 to match adists + f"0.0 0.0 0.0 0.0\n"))) # fake 0 to match adists return True @@ -615,7 +614,7 @@ class AdisTTwc(AdisTT): # ) as f: # files.append(f"{name}.DIF") - # f.write(f"*Définition des paramètres des fonctions de calcul du\n") +# f.write(f"*Définition des paramètres des fonctions de calcul du\n") # f.write(f"*coefficient de diffusion\n") # difAdisTT = study.river.dif_adistt.DIF_AdisTT_List @@ -944,10 +943,6 @@ class AdisTTwc(AdisTT): "CCF": ("cld0", "CLD"), } - _required_weather_extensions = ( - "TDA", "HSA", "RAY", "VEN", "TNA", "QNA", - ) - def _export_temperature_initial_conditions(self, study, repertory): initial_conditions = study.river.ic_temperature.Initial_Conditions_List filename = "TEM.INI" @@ -998,13 +993,14 @@ class AdisTTwc(AdisTT): def _export_weather_file(self, study, repertory, weather_parameter, extension): + reach = weather_parameter.reach + if reach is None or len(weather_parameter.data) == 0: + return None + filename = f"TEM.{extension}" path = os.path.join(repertory, filename) mode = "a" if os.path.exists(path) else "w+" with adistt_file_open(path, mode) as f: - reach = weather_parameter.reach - if reach is None: - return None reach_name = self.get_reach_name(reach) f.write( f"${reach_name} {weather_parameter.begin_rk} " @@ -1029,13 +1025,6 @@ class AdisTTwc(AdisTT): if os.path.exists(path): os.remove(path) - # These files are mandatory for the AdisTT master file. They are - # created even when no spatial time series is defined in the study. - for extension in self._required_weather_extensions: - adistt_file_open( - os.path.join(repertory, f"TEM.{extension}"), "w+" - ).close() - initial_file = self._export_temperature_initial_conditions( study, repertory ) @@ -1058,20 +1047,16 @@ class AdisTTwc(AdisTT): filename = f"{name}.TEM" with adistt_file_open(os.path.join(repertory, filename), "w+") as f: defaults = study.river.weather_parameters - for type_, (parameter, _) in self._weather_files.items(): + for type_, (parameter, extension) in self._weather_files.items(): default = defaults.default_for_type(type_) if default is not None: - f.write(f"{parameter} = {default.value}\n") + prefix = "*" if extension in weather_files else "" + f.write(f"{prefix}{parameter} = {default.value}\n") f.write(f"file_ini = {initial_file}\n") f.write(f"file_cl = {boundary_file}\n") - for extension in self._required_weather_extensions: - f.write( - f"file_{extension.lower()} = TEM.{extension}\n" - ) for _, extension in self._weather_files.values(): - if (extension in weather_files - and extension not in self._required_weather_extensions): + if extension in weather_files: f.write( f"file_{extension.lower()} = " f"{weather_files[extension]}\n" diff --git a/src/View/WeatherParameters/Edit/translate.py b/src/View/WeatherParameters/Edit/translate.py index 4328f55d..6ace4101 100644 --- a/src/View/WeatherParameters/Edit/translate.py +++ b/src/View/WeatherParameters/Edit/translate.py @@ -37,7 +37,7 @@ class WPETranslate(WeatherParametersTranslate): "discharge": self._dict["unit_discharge"], "temperature": _translate("WeatherParameters", "Temperature (°C)"), "humidity": _translate("WeatherParameters", - "Humidity"), + "Humidity"), "radiation": _translate("WeatherParameters", "Radiation (W/m²)"), "wind speed": _translate("WeatherParameters", "Wind Speed (m/s)"), "albedo": _translate("WeatherParameters", "Albedo"),