From 9f87a381079a7c7a94dc9fd4036c6b8e65188e88 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Fri, 5 Apr 2024 16:03:55 +0200 Subject: [PATCH] Solver: RubarBE: Add MAIL file. --- src/Model/Geometry/Reach.py | 20 ++++++++++++++++++++ src/Solver/RubarBE.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 7458f3b1..78255653 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -364,6 +364,26 @@ class Reach(SQLSubModel): else: return 0.0 + def inter_profiles_kp(self): + res_kp = [self.profile(0).kp] + + profiles = iter(self.profiles) + previous = next(profile) + + for profile in profiles: + prev = previous.kp + curr = profile.kp + + diff = abs(previous.kp - profile.kp) + + new = previous.kp + (diff / 2.0) + res_kp.append(new) + + previous = profile + + res_kp.append(self.profile(len(self) - 1).kp) + return res_kp + # Sediment Layers def get_sl(self): diff --git a/src/Solver/RubarBE.py b/src/Solver/RubarBE.py index a6df9d33..66386c11 100644 --- a/src/Solver/RubarBE.py +++ b/src/Solver/RubarBE.py @@ -195,3 +195,40 @@ class RubarBE(CommandLineSolver): ) ind += 1 + + def _export_mail(self, study, repertory, files, qlog, name="0"): + if qlog is not None: + qlog.put("Export MAIL file") + + with open( + os.path.join( + repertory, f"mail.{name}" + ), "w+" + ) as f: + for edge in study.river.enable_edges(): + lm = len(edge) + 1 + + f.write(f"{lm:>13}") + + # TMAIL + ind = 0 + for inter in edge.reach.inter_profiles_kp(): + f.write(f"{inter:15.3f}") + + ind += 1 + if ind % 3 == 0: + f.write("\n") + + # New line (if last iteration do not finish with new + # line) + if ind % 3 != 0: + f.write("\n") + + # XTMAIL + ind = 0 + for profile in edge.reach.profiles: + f.write(f" {profile.kp:15.3f} ") + + ind += 1 + if ind % 3 == 0: + f.write("\n") -- GitLab