diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index d0dca0d..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/docs/.DS_Store b/docs/.DS_Store deleted file mode 100644 index a07109b..0000000 Binary files a/docs/.DS_Store and /dev/null differ diff --git a/docs/source/.DS_Store b/docs/source/.DS_Store deleted file mode 100644 index 276ab9c..0000000 Binary files a/docs/source/.DS_Store and /dev/null differ diff --git a/docs/source/modules/.DS_Store b/docs/source/modules/.DS_Store deleted file mode 100644 index d487bf6..0000000 Binary files a/docs/source/modules/.DS_Store and /dev/null differ diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index 7b69a27..0000000 Binary files a/src/.DS_Store and /dev/null differ diff --git a/src/pathsim_chem/.DS_Store b/src/pathsim_chem/.DS_Store deleted file mode 100644 index 5b72ad7..0000000 Binary files a/src/pathsim_chem/.DS_Store and /dev/null differ diff --git a/src/pathsim_chem/tritium/.DS_Store b/src/pathsim_chem/tritium/.DS_Store deleted file mode 100644 index 5008ddf..0000000 Binary files a/src/pathsim_chem/tritium/.DS_Store and /dev/null differ diff --git a/src/pathsim_chem/tritium/bubbler.py b/src/pathsim_chem/tritium/bubbler.py index fc39a53..955b633 100644 --- a/src/pathsim_chem/tritium/bubbler.py +++ b/src/pathsim_chem/tritium/bubbler.py @@ -10,6 +10,7 @@ from pathsim.blocks.dynsys import DynamicalSystem from pathsim.events.schedule import ScheduleList +from pathsim.utils.register import Register # BLOCK DEFIINITIONS ==================================================================== @@ -92,18 +93,6 @@ class Bubbler4(DynamicalSystem): of a full vial with an empty one. """ - _port_map_out = { - "vial1": 0, - "vial2": 1, - "vial3": 2, - "vial4": 3, - "sample_out": 4, - } - _port_map_in = { - "sample_in_soluble": 0, - "sample_in_insoluble": 1, - } - def __init__( self, conversion_efficiency=0.9, @@ -149,7 +138,30 @@ def _fn_a(x, u, t): return np.hstack([x, sample_out]) #initialization just like `DynamicalSystem` block - super().__init__(func_dyn=_fn_d, func_alg=_fn_a, initial_value=np.zeros(4)) + super().__init__( + func_dyn=_fn_d, + func_alg=_fn_a, + initial_value=np.zeros(4), + ) + + # define port maps + self.inputs = Register( + size=2, + mapping={ + "sample_in_soluble": 0, + "sample_in_insoluble": 1, + }, + ) + self.outputs = Register( + size=5, + mapping={ + "vial1": 0, + "vial2": 1, + "vial3": 2, + "vial4": 3, + "sample_out": 4, + }, + ) #create internal vial reset events self._create_reset_events() diff --git a/src/pathsim_chem/tritium/residencetime.py b/src/pathsim_chem/tritium/residencetime.py index 10707fc..c06e797 100644 --- a/src/pathsim_chem/tritium/residencetime.py +++ b/src/pathsim_chem/tritium/residencetime.py @@ -9,7 +9,7 @@ import numpy as np from pathsim.blocks.dynsys import DynamicalSystem - +from pathsim.utils.register import Register # BLOCKS ================================================================================ @@ -50,30 +50,35 @@ class ResidenceTime(DynamicalSystem): def __init__(self, tau=1, betas=None, gammas=None, initial_value=0, source_term=0): - #input validation + # input validation if np.isclose(tau, 0): raise ValueError(f"'tau' must be nonzero but is {tau}") - #time constant and input/output weights + # time constant and input/output weights self.tau = tau self.betas = 1 if betas is None else np.array(betas) self.gammas = 1 if gammas is None else np.array(gammas) self.source_term = source_term - #rhs of residence time ode + # rhs of residence time ode def _fn_d(x, u, t): return -x/self.tau + self.source_term + sum(self.betas*u) - #jacobian of rhs wrt x + # jacobian of rhs wrt x def _jc_d(x, u, t): return -1/self.tau - #output function of residence time ode + # output function of residence time ode def _fn_a(x, u, t): return self.gammas * x - #initialization just like `DynamicalSystem` block - super().__init__(func_dyn=_fn_d, jac_dyn=_jc_d, func_alg=_fn_a, initial_value=initial_value) + # initialization just like `DynamicalSystem` block + super().__init__( + func_dyn=_fn_d, + jac_dyn=_jc_d, + func_alg=_fn_a, + initial_value=initial_value, + ) class Process(ResidenceTime): @@ -112,11 +117,11 @@ class Process(ResidenceTime): constant source term / generation term of the process """ - #max number of ports - _n_out_max = 2 - - #maps for input and output port labels - _port_map_out = {"x": 0, "x/tau": 1} - def __init__(self, tau=1, initial_value=0, source_term=0): super().__init__(tau, 1, [1, 1/tau], initial_value, source_term) + + # define output port maps based on fractions + self.outputs = Register( + size=2, + mapping={"x": 0, "x/tau": 1} + ) \ No newline at end of file diff --git a/src/pathsim_chem/tritium/splitter.py b/src/pathsim_chem/tritium/splitter.py index fa55cb0..ee4ebbd 100644 --- a/src/pathsim_chem/tritium/splitter.py +++ b/src/pathsim_chem/tritium/splitter.py @@ -9,6 +9,7 @@ import numpy as np from pathsim.blocks.function import Function +from pathsim.utils.register import Register # BLOCKS ================================================================================ @@ -28,22 +29,23 @@ class Splitter(Function): 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 + # 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 + # 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)} + # define port maps based on fractions + self.inputs = Register( + size=1, + mapping={"in": 0} + ) + self.outputs = Register( + size=len(self.fractions), + mapping={f"out {fr}": i for i, fr in enumerate(self.fractions)} + ) \ No newline at end of file diff --git a/tests/.DS_Store b/tests/.DS_Store deleted file mode 100644 index f53d21c..0000000 Binary files a/tests/.DS_Store and /dev/null differ