Hi Cadet-Devs,
I’m trying to setup the GIEX isotherm in CADET-Process to evaluate the influence of interaction-modyfing components.
Unfortunately the setup fails immediately due to the size of the characteristic_charge
parameter which is for some reason expected to be 0 for check_size
.
Furthermore, I don’t understand what the characteristic_charge_breaks
parameter as this parameter is not found in the CADET core documentation. Could you please explain. Btw. there is also a mistake in the CADET-Process documentation regarding this parameter.
MinExample on current dev branch:
import CADETProcess
from CADETProcess.processModel import ComponentSystem
component_system = ComponentSystem(['Salt', 'Mod', 'P1', 'P2'])
from CADETProcess.processModel import GeneralizedIonExchange
binding_model = GeneralizedIonExchange(component_system, name = 'GIEX')
binding_model.is_kinetic = 1
binding_model.adsorption_rate = [0, 0, 1, 1]
binding_model.desorption_rate = [0, 0, 1, 1]
binding_model.adsorption_rate_linear = [0,0,0,0]
binding_model.characteristic_charge_breaks = [0,0,0,0] # ?
binding_model.characteristic_charge = [0, 0, 1, 1]
binding_model.steric_factor = [0,0,0,0]
binding_model.capacity = 1
Error:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[12], line 15
13 binding_model.adsorption_rate_linear = [0,0,0,0]
14 binding_model.characteristic_charge_breaks = [0,0,0,0] # ?
---> 15 binding_model.characteristic_charge = [0, 0, 1, 1]
17 binding_model.steric_factor = [0,0,0,0] # steric factor
18 binding_model.capacity = 1 #mol/m^3 solid phase
File c:\ProgramData\Anaconda3\envs\cadet_dev\lib\site-packages\CADETProcess\dataStructure\dataStructure.py:477, in frozen_attributes.<locals>.frozensetattr(self, key, value)
473 raise AttributeError(
474 f"{cls.__name__} object has no attribute {key}"
475 )
476 else:
--> 477 object.__setattr__(self, key, value)
File c:\ProgramData\Anaconda3\envs\cadet_dev\lib\site-packages\CADETProcess\dataStructure\parameter.py:171, in ParameterBase.__set__(self, instance, value)
169 if value is not None:
170 value = self._prepare(instance, value, recursive=True)
--> 171 self._check(instance, value, recursive=True)
173 try:
174 if self.name in instance._parameters:
File c:\ProgramData\Anaconda3\envs\cadet_dev\lib\site-packages\CADETProcess\dataStructure\parameter.py:483, in Typed._check(self, instance, value, recursive)
480 raise TypeError(f"Expected type {self.ty}, got {type(value)}")
482 if recursive:
--> 483 super()._check(instance, value, recursive)
File c:\ProgramData\Anaconda3\envs\cadet_dev\lib\site-packages\CADETProcess\dataStructure\parameter.py:1105, in Sized._check(self, instance, value, recursive)
1092 def _check(self, instance, value, recursive=False):
1093 """
1094 Validate the provided value's size.
1095
(...)
1103 If True, perform the check recursively. Defaults to False.
1104 """
-> 1105 self.check_size(instance, value)
1107 if recursive:
1108 super()._check(instance, value, recursive)
File c:\ProgramData\Anaconda3\envs\cadet_dev\lib\site-packages\CADETProcess\dataStructure\parameter.py:1042, in Sized.check_size(self, instance, value)
1039 exptected_size = self.get_expected_size(instance)
1041 if size != exptected_size:
-> 1042 raise ValueError(f"Expected size {exptected_size}")
ValueError: Expected size 0