Hi Mao,
it looks like the simulations get stuck. This can be caused by a high capacity in the SMA system without reference concentrations or a high characteristic charge, (charge wasnāt a problem for you). If I activate reference concentrations with
binding_model.capacity = capacity
binding_model.reference_solid_phase_conc = capacity
binding_model.reference_liquid_phase_conc = capacity
the simulations run quickly and we get some fitting results.
They are however all bad, mostly because we observe a break-through during the loading phase. That is due to the parameters you used to set up the model. Most notably the total porosity of 0.97, which means your column only contains 3 % stationary phase and only has 1e-6 mĀ³ * 0.03 * 680 mol / mĀ³ = 2e-5 mol
of total ionic binding sites. You load 643 mM * 1e-6 / 60 mĀ³ / s * 30 s = 3.2e-4 mol
of cyto onto the column, with a characteristic charge of 10 and a steric factor of 10, so it needs 6.4e-3
binding sites in total. So youāll need to look over your parameters. The porosity as well as the concentration of your proteins look a bit off.
Also, this system has two proteins, a and cyto, so I expect 10 x0 (are x0 the initial guess of optimimzation?) as I need to define equilibrium constant, kinetic constant, characteristic charge, desorption rate, adsorption rate for each protein. However, I am allowed to define 5 x0 values. What am I missing?
You define the parameters (e.g. the adsorption rate) like this:
optimization_problem.add_variable(
name='adsorption_rate',
parameter_path='flow_sheet.column.binding_model.adsorption_rate',
lb=1e-10, ub=1e10,
transform='auto',
indices=[1]
)
with indices=[1]
. This means, that this āadsorption_rateā parameter is only going to affect the component at index 1, so āaā. To also modify ācytoā you need to add another variable with e.g.
optimization_problem.add_variable(
name='adsorption_rate_cyto',
parameter_path='flow_sheet.column.binding_model.adsorption_rate',
lb=1e-10, ub=1e10,
transform='auto',
indices=[2]
)
Youāll need to do this for all parameters as well as the parameter dependencies. I recommend setting up a function that adds the variables for a given index and then calling that function twice with index=1 and index=2.
Also, I am afraid that my cadet process is not the latest version. Is there an āupdate cadet processā command?
That command is pip install CADET-Process --upgrade
executed in your cadet_workshop conda environment. When you do that, also update CADET-Core and CADET-Python with
pip install CADET-Python --upgrade
and conda update CADET