Hi,
I was working on modelling elution for the protein A chromatography using Cadet Python. But, what I realised is that it will generate a general outlet concentration because I have not specified the pH and salt conditions with the Langmuir isotherm. Could I get assistance on how to incorporate pH and salt concentration?
langmuir_model = get_cadet_template(n_units=3)
n_comp = 1
# INLET
langmuir_model.root.input.model.unit_000.unit_type = 'INLET'
langmuir_model.root.input.model.unit_000.ncomp = n_comp
langmuir_model.root.input.model.unit_000.inlet_type = 'PIECEWISE_CUBIC_POLY'
# Adsorption_Model
langmuir_model.root.input.model.unit_001.unit_type ='LUMPED_RATE_MODEL_WITH_PORES'
langmuir_model.root.input.model.unit_001.ncomp = n_comp
langmuir_model.root.input.model.unit_001.col_length = 25e-3#59e-3
langmuir_model.root.input.model.unit_001.cross_section_area = 4e-5
langmuir_model.root.input.model.unit_001.col_porosity = 0.34
langmuir_model.root.input.model.unit_001.par_porosity = 0.94
langmuir_model.root.input.model.unit_001.par_radius = 50e-6
langmuir_model.root.input.model.unit_001.col_dispersion = 0.55e-7
langmuir_model.root.input.model.unit_001.film_diffusion = 1.96e-23
langmuir_model.root.input.model.unit_001.par_diffusion = 5.96e-12
langmuir_model.root.input.model.unit_001.par_surfdiffusion = [0]
langmuir_model.root.input.model.unit_001.adsorption_model = 'MULTI_COMPONENT_LANGMUIR'
langmuir_model.root.input.model.unit_001.adsorption.is_kinetic = False
langmuir_model.root.input.model.unit_001.adsorption.mcl_ka = 0.675
langmuir_model.root.input.model.unit_001.adsorption.mcl_kd = 1
langmuir_model.root.input.model.unit_001.adsorption.mcl_qmax = 0.0275
langmuir_model.root.input.model.unit_001.init_c = [0.0]
langmuir_model.root.input.model.unit_001.init_q = 0.0275
# OUTLET
langmuir_model.root.input.model.unit_002.unit_type = 'OUTLET'
langmuir_model.root.input.model.unit_002.ncomp = n_comp
# Mixer
langmuir_model.root.input.model.unit_003.unit_type = 'CSTR'
langmuir_model.root.input.model.unit_003.ncomp = n_comp
langmuir_model.root.input.model.unit_003.init_volume =0.49e-6
langmuir_model.root.input.model.unit_003.init_c = n_comp*[0.0]
set_discretization(langmuir_model, n_col=40, n_bound=[1,1])
# Sections and connections
langmuir_model.root.input.solver.sections.nsec = 2
langmuir_model.root.input.solver.sections.section_times = [0.0, 300, 540]
langmuir_model.root.input.solver.sections.section_continuity = [0,0]
## Inlet Profile
langmuir_model.root.input.model.unit_000.sec_000.const_coeff = n_comp*[3.49e-2,]
langmuir_model.root.input.model.unit_000.sec_001.const_coeff = n_comp*[0.0,]
## Switches
langmuir_model.root.input.model.connections.nswitches = 1
langmuir_model.root.input.model.connections.switch_000.section = 0
langmuir_model.root.input.model.connections.switch_000.connections = [
0, 1, -1, -1, 3.33e-9,
1, 2, -1, -1, 3.33e-9
]
#Load experiment
df = pd.read_csv("elution.csv")
time_exp = df["sec"].values
conc_exp = df["mM"].values
#Plot experiment
plt.plot(time_exp, conc_exp, marker="", linestyle="-", color="r", label="experiment_lin")
# set the times that the simulator writes out data for
langmuir_model.root.input.solver.user_solution_times = np.linspace(0, 540, 541) #(0, 4000, 601)
run_simulation(langmuir_model)
time = langmuir_model.root.output.solution.solution_times
c = langmuir_model.root.output.solution.unit_002['solution_outlet_comp_000']
plt.plot(time, c)
plt.title('Column (Outlet)')
plt.xlabel('$time~/~sec$')
plt.ylabel('$concentration~/~mM$')
plt.show()