Thank you so much for your reply! As new user, I couldn’t upload the script directly. I hope this way will work by pasting my scrips here:
import numpy as np
import matplotlib.pyplot as plt
from cadet import Cadet
Cadet.cadet_path = ‘/Users/YIRANQ1/Downloads/cadet4.3.0-win10-x64/cadet/bin/cadet-cli.exe’
model = Cadet()
model.root.input.model.nuints = 5
n_comp = 2
#Feed
model.root.input.model.unit_000.unit_type = ‘INLET’
model.root.input.model.unit_000.ncomp = 1
model.root.input.model.unit_000.inlet_type = ‘PIECEWISE_CUBIC_POLY’
#Inlet
model.root.input.model.unit_001.unit_type = ‘INLET’
model.root.input.model.unit_001.ncomp = 1
model.root.input.model.unit_001.inlet_type = ‘PIECEWISE_CUBIC_POLY’
#Mixer
model.root.input.model.unit_002.unit_type = ‘CSTR’
model.root.input.model.unit_002.ncomp = n_comp
model.root.input.model.unit_002.init_volume = 5e-7
model.root.input.model.unit_002.init_c = n_comp*[0.0]
model.root.input.model.unit_003.unit_type = ‘LUMPED_RATE_MODEL_WITHOUT_PORES’
model.root.input.model.unit_003.ncomp = n_comp
model.root.input.model.unit_003.col_length = 0.025
model.root.input.model.unit_003.cross_section_area = 0.000038465
model.root.input.model.unit_003.total_porosity = 0.268
model.root.input.model.unit_003.par_porosity = 0.827
model.root.input.model.unit_003.par_radius = 4.5e-5
model.root.input.model.unit_003.col_dispersion = 3.73e-7
model.root.input.model.unit_003.adsorption_model = ‘STERIC_MASS_ACTION’
model.root.input.model.unit_003.adsorption.is_kinetic = 1
model.root.input.model.unit_003.adsorption.sma_ka = [0.0, 0.335]
model.root.input.model.unit_003.adsorption.sma_kd = [0.0, 0.000765]
model.root.input.model.unit_003.adsorption.sma_nu = [0.0, 3.27]
model.root.input.model.unit_003.adsorption.sma_sigma = [0.0, 0.0]
model.root.input.model.unit_003.adsorption.sma_lambda = [0.0,1.0]
model.root.input.model.unit_003.init_c = [20, 0]
model.root.input.model.unit_003.init_q = [0, 0]
model.root.input.model.unit_003.discretization.ncol = 15
model.root.input.model.unit_003.discretization.npar = 5
model.root.input.model.unit_003.discretization.nbound = [1,1]
Bound states
Other options
model.root.input.model.unit_003.discretization.par_disc_type = ‘EQUIDISTANT_PAR’
model.root.input.model.unit_003.discretization.use_analytic_jacobian = 1
model.root.input.model.unit_003.discretization.reconstruction = ‘WENO’
model.root.input.model.unit_003.discretization.gs_type = 1
model.root.input.model.unit_003.discretization.max_krylov = 0
model.root.input.model.unit_003.discretization.max_restarts = 10
model.root.input.model.unit_003.discretization.schur_safety = 1.0e-8
model.root.input.model.unit_003.discretization.weno.boundary_model = 0
model.root.input.model.unit_003.discretization.weno.weno_eps = 1e-10
model.root.input.model.unit_003.discretization.weno.weno_order = 3
model.root.input.model.unit_004.unit_type = ‘OUTLET’
model.root.input.model.unit_004.ncomp = n_comp
wash_start = 32
grad_start = 396
push_start = 1350
t_cycle = 2600
model.root.input.solver.sections.nsec = 4
model.root.input.solver.sections.section_times = [0.0, wash_start, grad_start, push_start, t_cycle] # s\n
model.root.input.model.unit_000.sec_000.const = [20,0] #nM\n
model.root.input.model.unit_000.sec_001.const = [20,0] #nM\n
model.root.input.model.unit_000.sec_002.const = [20,0] #nM\n
model.root.input.model.unit_000.sec_002.lin_coeff = [1.132354,0]
model.root.input.model.unit_000.sec_003.const = [1020,0] #nM\n
model.root.input.model.solver.gs_type = 1
model.root.input.model.solver.max_krylov = 0
model.root.input.model.solver.max_restarts = 10
model.root.input.model.solver.schur_safety = 1.0e-8
model.root.input.solver.user_solution_times = np.linspace(0, t_cycle, int(t_cycle) + 1)
Number of cores for parallel simulation
model.root.input.solver.nthreads = 1
Tolerances for the time integrator
model.root.input.solver.time_integrator.abstol = 1e-6
model.root.input.solver.time_integrator.algtol = 1e-10
model.root.input.solver.time_integrator.reltol = 1e-6
model.root.input.solver.time_integrator.init_step_size = 1e-6
model.root.input.solver.time_integrator.max_steps = 1000000
model.root.input.model.connections.nswitches = 2
model.root.input.model.connections.switch_000.section = 0
model.root.input.model.connections.switch_000.connections = [
0, 2, 0, 0, 0.00005772,
2, 3, -1, -1, 0.00005772,
3, 4, -1, -1, 0.00005772,]
model.root.input.model.connections.switch_001.section = 1
model.root.input.model.connections.switch_001.connections = [
1, 2, 0, 1, 0.00005772,
2, 3, -1, -1, 0.00005772,
3, 4, -1, -1, 0.00005772,
]
Return data
model.root.input[‘return’].split_components_data = 0
model.root.input[‘return’].split_ports_data = 0
model.root.input[‘return’].unit_000.write_solution_bulk = 1
model.root.input[‘return’].unit_000.write_solution_inlet = 1
model.root.input[‘return’].unit_000.write_solution_outlet = 1
Copy settings to the other unit operations
model.root.input[‘return’].unit_001 = model.root.input[‘return’].unit_000
model.root.input[‘return’].unit_002 = model.root.input[‘return’].unit_000
model.root.input[‘return’].unit_003 = model.root.input[‘return’].unit_000
model.root.input[‘return’].unit_004 = model.root.input[‘return’].unit_000
model.filename = ‘model.h5’
model.save()
data = model.run()
if data.returncode == 0:
print(“Simulation completed successfully”)
model.load()
else:
print(data)
raise Exception(“Simulation failed”)