From a6e18aa7c91d881e3f3f23002b231916a61a7367 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 31 May 2023 15:24:35 +0200 Subject: [PATCH] IC: Add update values as data modification. --- src/Model/Geometry/Reach.py | 7 +++++ .../InitialConditions/InitialConditions.py | 30 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 087b0a87..7f86b224 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -49,6 +49,13 @@ class Reach: def profiles(self): return self._profiles.copy() + def get_profiles_from_kp(self, kp): + return list( + filter( + lambda p: p.kp == kp, self._profiles + ) + ) + @property def number_profiles(self): """ diff --git a/src/Model/InitialConditions/InitialConditions.py b/src/Model/InitialConditions/InitialConditions.py index 142f0996..8bb2f4ea 100644 --- a/src/Model/InitialConditions/InitialConditions.py +++ b/src/Model/InitialConditions/InitialConditions.py @@ -44,6 +44,31 @@ class Data(object): return val + def _update_get_min(self): + profile = self._reach.reach.get_profiles_from_kp(self._kp) + if len(profile) > 0: + min = profile[0].z_min() + else: + min = 0.0 + + return min + + def _update_from_kp(self): + min = self._update_get_min() + self._elevation = min - self._draft + + def _update_from_elevation(self): + min = self._update_get_min() + self._draft = self._elevation - min + + def _update_from_draft(self): + min = self._update_get_min() + self._elevation = self._draft + min + + def _update_from_flow(self): + min = self._update_get_min() + print("TODO") + def __setitem__(self, key, value): if key == "name": self._name = str(value) @@ -51,14 +76,19 @@ class Data(object): self._comment = str(value) elif key == "kp": self._kp = float(value) + self._update_from_kp() elif key == "speed": self._speed = float(value) + # Not supposed to be modified elif key == "flow": self._flow = float(value) + self._update_from_flow() elif key == "elevation": self._elevation = float(value) + self._update_from_elevation() elif key == "draft": self._draft = float(value) + self._update_from_draft() self._status.modified() -- GitLab