CADET Match specification

Hi all,

I’ve been trying to use CADET Match for parameter estimation in chemical reactions. I’m not sure if anyone has used CADET Match for this purpose.

I have a few questions:

  1. Can we use data from multi-components for objective function?
    I believe this is where we specify the experimental data and the output of simulation
experiment1 = Dict()
experiment1.name = 'first_order_irreversible'
experiment1.csv = 'concentration_profile.csv'
experiment1.HDF5 = 'first_order_irreversible.h5'
experiment1.output_path = '/output/solution/unit_002/SOLUTION_OUTLET_COMP_000'

match_config.experiments = [experiment1,]

The document reads that output_path could be a path or a list of paths to simulation data. Say if the solution_outlet contains data for more than one components, can I declare it as
experiment1.output_path = '/output/solution/unit_002/SOLUTION_OUTLET'
If not, what is the correct way to specify the output_path for multi-components?

  1. If we simulate chemical reactions, is it possible to estimate reaction rate constants, for instance, kfwd, which has more than one parameter?

  2. If it is possible for question #2, how we declare it in Cadet? I believe below is where we specify which parameters are to be estimated, but the way I declare doesn’t provide any results.

parameter1 = Dict()
parameter1.transform = 'auto'
parameter1.location = '/input/model/unit_001/reaction_bulk/MAL_KFWD_BULK'
parameter1.min = 0
parameter1.max = 1
parameter1.component = -1
parameter1.bound = -1
parameter1.transform = 'null'

parameter2 = Dict()
parameter2.transform = 'auto'
parameter2.location = '/input/model/unit_001/reaction_bulk/MAL_KBWD_BULK'
parameter2.min = 0
parameter2.max = 0.001
parameter2.component = -1
parameter2.bound = -1
parameter2.transform = 'null'

match_config.parameters = [parameter1, parameter2]

Thank you so much for reading this.

Hey Hoang

Yes, but in CADET-Match, you need to add all components in separate files. Also, you need to set the SPLIT_COMPONENTS flag to True.

Yes, you need to setup a separate parameter for each component. The -1 flag only works for parameters that are independent of component (e.g. porosity).

Hope that helps.

Maybe @w.heymann can also add his mustard. :slight_smile:

Hey Jo, many thanks. I spent some time to play around with your suggestion. I have some follow-up questions.

I split the output and add the experimental data as follows. Is it done properly?

experiment1 = Dict()
experiment1.name = 'first_order_irreversible'
experiment1.csv = 'comp_1.csv'
experiment1.HDF5 = 'first_order_irreversible.h5'
experiment1.output_path = '/output/solution/unit_002/SOLUTION_OUTLET_COMP_000'

experiment2 = Dict()
experiment2.name = 'first_order_irreversible'
experiment2.csv = 'comp_2.csv'
experiment2.HDF5 = 'first_order_irreversible.h5'
experiment2.output_path = '/output/solution/unit_002/SOLUTION_OUTLET_COMP_001'

If it is the way we must do, I’m not sure what would be the best way to do if we have multiple data set (duplicate experiment, let’s say).

I’m sorry if my question was not clear in the first place. What I meant is that if we have a system of reactions like below
A → B (k1)
B → C (k2)
Can we estimate k1 and k2, which will be in kfwd

Thanks so much, Jo!

You only need a single experiment. Each score can have its own csv entry and output_path. The csv in the experiment will be used to set the time grid of the simulation output.

Here is an example

"experiments": [
		{
      "csv": "sma1_1.csv",
      "output_path": "/output/solution/unit_002/SOLUTION_OUTLET_COMP_001",
      "HDF5": "sma1.h5",
      "name": "main_1",
      "timeout": 120.0,
      "scores": [
        {
          "name": "Pulse_C1_1",
          "type": "Shape",
          "CSV": "sma1_1.csv",
          "output_path": "/output/solution/unit_002/SOLUTION_OUTLET_COMP_001",
          "start": 0,
          "stop": 7300
        },
        {
          "name": "Pulse_C1_2",
          "type": "Shape",
          "CSV": "sma1_1.csv",
          "output_path": "/output/solution/unit_002/SOLUTION_OUTLET_COMP_001",
          "start": 9000,
          "stop": 14000
        },
        {
          "name": "Pulse_C2_1",
          "type": "Shape",
          "CSV": "sma2_1.csv",
          "output_path": "/output/solution/unit_002/SOLUTION_OUTLET_COMP_002",
          "start": 0,
          "stop": 7300
        },
        {
          "name": "Pulse_C2_2",
          "type": "Shape",
          "CSV": "sma2_1.csv",
          "output_path": "/output/solution/unit_002/SOLUTION_OUTLET_COMP_002",
          "start": 9000,
          "stop": 13000
        }
      ]
    },