River: Data traversal methode.

scenarios
Pierre-Antoine 2025-09-12 11:13:57 +02:00
parent 8173eb8de9
commit 78e6f7e5a7
1 changed files with 46 additions and 0 deletions

View File

@ -627,6 +627,52 @@ class River(Graph):
except Exception as e:
logger_exception(e)
def _data_traversal(self,
predicate=lambda obj, data: True,
modifier=lambda obj, data: None,
data={}):
"""Traversal data and execute modifier fonction if predicate
true
Args:
predicate: Function predicate, take current obj and data as input
modifier: Function modifier, take current obj and data as input
Returns:
Nothing
"""
if predicate(self, data):
modifier(self, data)
for obj in self._get_objs_list():
obj._data_traversal(predicate, modifier, data)
def _get_objs_list(self):
objs = [
self._nodes, self._edges,
self._boundary_condition,
self._initial_conditions,
self._lateral_contribution,
self._sediment_layers,
self._stricklers,
self._reservoir,
self._hydraulic_structures,
self._additional_files,
self._rep_lines,
self._Output_rk_adists,
self._Pollutants,
self._InitialConditionsAdisTS,
self._BoundaryConditionsAdisTS,
self._LateralContributionsAdisTS,
self._D90AdisTS, self._DIFAdisTS,
]
for solver in self._parameters:
objs.append(self._parameters[solver])
return objs
def init_default(self):
self.init_default_network()
self.init_default_sediment()