Source code for pathsim_chem.tritium.splitter
#########################################################################################
##
## Flow Splitter Block
##
#########################################################################################
# IMPORTS ===============================================================================
import numpy as np
from pathsim.blocks.function import Function
from pathsim.utils.register import Register
# 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
"""
input_port_labels = {"in": 0}
output_port_labels = None
[docs]
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)