Skip to content

Commit

Permalink
Bugfix: Multiple source pattern for the same species and node but at …
Browse files Browse the repository at this point in the history
…different time points
  • Loading branch information
andreArtelt committed Dec 11, 2024
1 parent a7eedc4 commit f925106
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions epyt_flow/simulation/events/quality_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def __str__(self) -> str:
f"node_id: {self.__node_id} profile: {self.__profile} source_type: {self.__source_type}"

def _get_pattern_id(self) -> str:
return f"{self.__species_id}_{self.__node_id}_{self.start_time}"
return f"{self.__species_id}_{self.__node_id}"

def init(self, epanet_api: epyt.epanet) -> None:
super().init(epanet_api)
Expand Down Expand Up @@ -180,9 +180,20 @@ def init(self, epanet_api: epyt.epanet) -> None:

pattern_id = self._get_pattern_id()
if pattern_id in self._epanet_api.getMSXPatternsNameID():
raise ValueError("Duplicated injection event")

self._epanet_api.addMSXPattern(pattern_id, pattern)
node_idx = self._epanet_api.getNodeIndex(self.__node_id)
species_idx, = self._epanet_api.getMSXSpeciesIndex([self.__species_id])
cur_source_type = self._epanet_api.msx.MSXgetsource(node_idx, species_idx)
if cur_source_type[0] != source_type_:
raise ValueError("Source type does not match existing source type")

# Add new injection amount to existing injection --
# i.e. two injection events at the same node
pattern_idx, = self._epanet_api.getMSXPatternsIndex([pattern_id])
cur_pattern = self._epanet_api.getMSXPattern()[pattern_idx - 1]
cur_pattern += pattern
self._epanet_api.setMSXPattern(pattern_idx, cur_pattern)
else:
self._epanet_api.addMSXPattern(pattern_id, pattern)
self._epanet_api.setMSXSources(self.__node_id, self.__species_id, source_type_, 1,
pattern_id)

Expand Down

0 comments on commit f925106

Please sign in to comment.