Simulation failed with no given source of errors

Hi,
I’m new to CADET. Could anyone please help to see the reason the simulation failed. There is no given specific error regarding the script.

CompletedProcess(args=['/Users/YIRANQ1/Downloads/cadet4.3.0-win10-x64/cadet/bin/cadet-cli.exe', 'model.h5'], returncode=3221225620, stdout=b'', stderr=b'')

Exception                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_6596\2242269908.py in <module>
      9 else:
     10     print(data)
---> 11     raise Exception("Simulation failed")

Exception: Simulation failed

Hi,
could you please provide the script so we can reproduce the error?

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”)

Hi AnnieQu,

I found the following mistakes in your script:

  1. There are typos in your script: model.root.input.model.unit_000.sec_000.const should read model.root.input.model.unit_000.sec_000.const_coeff.

  2. You did not specify inlet concentrations for unit_001. You also pass two components to the inlet profile coefficients of unit_000, the latter will be ignored.

  3. The SMA parameters look weird; the salt (which is always the first component) must not be a non-binding component. The model equations are given here.

Fixing the above using some made up values, i got the simulation to run.
If you are a new user, I recommend having a look at our CADET-tutorials.

4 Likes

Thank you very much for your help!