diff --git a/src/Model/Results/Results.py b/src/Model/Results/Results.py index 4e5f9bf7..21f12a4b 100644 --- a/src/Model/Results/Results.py +++ b/src/Model/Results/Results.py @@ -69,3 +69,8 @@ class Results(object): self._repertory, qlog=None, ) + + def bufferize(self, key): + if self.is_valid: + for reach in self._river._reachs: + reach.bufferize(self._meta_data["timestamps"], key) diff --git a/src/Model/Results/River/River.py b/src/Model/Results/River/River.py index 0497a167..66691c42 100644 --- a/src/Model/Results/River/River.py +++ b/src/Model/Results/River/River.py @@ -15,6 +15,7 @@ # along with this program. If not, see . import logging +import numpy as np from datetime import datetime @@ -82,6 +83,7 @@ class Reach(object): lambda p: p.name[0:8] != 'interpol', self._profiles ) ) + self._buffers = {} def __len__(self): return len(self._profiles) @@ -102,6 +104,10 @@ class Reach(object): def profile_mask(self): return self._profile_mask + @property + def buffers(self): + return self._buffers + def profile(self, id): return self._profiles[id] @@ -111,6 +117,11 @@ class Reach(object): def has_sediment(self): return any(map(lambda profile: profile.has_sediment(), self._profiles)) + def bufferize(self, timestamps, key): + self._buffers[key] = np.zeros((len(timestamps), len(self))) + for i, p in enumerate(self._profiles): + self._buffers[key][:, i] = p.get_key(key) + class River(object): def __init__(self, study): diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 6dfa5e1b..9d21b7d4 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -1106,6 +1106,10 @@ class Mage8(Mage): r.set(i, t, "V", v) logger.info(f"read_bin: ... end with {len(ts)} timestamp read") + results.bufferize("Z") + results.bufferize("Q") + results.bufferize("V") + @timer def read_gra(self, study, repertory, results, qlog=None, name="0"): if not study.river.has_sediment():