Source code for pathsim.blocks.tritium.splitter

#########################################################################################
##
##                                 Flow Splitter Block 
##                             (blocks/fusion/splitter.py)
##
#########################################################################################

# IMPORTS ===============================================================================

import numpy as np

from ..function import Function


# BLOCKS ================================================================================

[docs] class Splitter(Function): """Splitter block that splits the input signal into multiple outputs weighted with the specified fractions. Note ---- The output fractions must sum to one. Parameters ---------- fractions : np.ndarray | list fractions to split the input signal into, must sum up to one """ #max number of ports _n_in_max = 1 #maps for input and output port labels _port_map_in = {"in": 0} def __init__(self, fractions=None): self.fractions = np.ones(1) if fractions is None else np.array(fractions) #input validation if not np.isclose(sum(self.fractions), 1): raise ValueError(f"'fractions' must sum to one and not {sum(self.fractions)}") #initialize like `Function` block super().__init__(func=lambda u: self.fractions*u) #dynamically define output port map based on fractions self._port_map_out = {f"out {fr}": i for i, fr in enumerate(self.fractions)}