Parameterisation Tool

Parameterisation fits deck parameters to experimental data. Examples include a mass-transfer coefficient, a heat-transfer coefficient, an isotherm parameter, a void fraction or a user variable. The tool runs the full cycle simulation for each trial set of parameter values and minimises the root-mean-square error between a simulated quantity and a measured dataset.

Open it from Parameterisation in the Simulation Tree. It has three tabs: Data Assignment, Parameters and Run.

Experimental data

The datasets live in the deck, so they are saved with it. Add them on the Solver window's Experimental data tab by pasting or uploading two columns, xx and yy. The yy values must be in the SI base unit of the quantity they are compared with: K, Pa, mole fraction, mol/kg, and so on. The xx values are time, in the unit you choose on the Data Assignment tab, or a cycle number for KPI data.

Data Assignment

  • Dataset. Choose the dataset to fit. The first rows are shown as a preview.
  • Y axis. Choose what the data measure:
    • Bulk variable, for example temperature, pressure or velocity.
    • Component variable plus the component, for example mole fraction or adsorbed loading.
    • KPI: purity, recovery, productivity, energy or production rate for a tracked KPI component. This needs feed and product endpoints configured under Cycle Design → KPI Configuration.
  • X axis.
    • For bulk and component variables, xx is the time from the start of the final simulated cycle, in the selected data time unit: s, ms, µs, min or h.
    • For KPIs, xx is the cycle number. Cycle index offset is added to your cycle numbers to match the solver's 0-based cycle index. Use −1 if your data number cycles from 1.
  • Spatial location (bulk and component variables only). The simulated profile is read at the top of the bed, the bottom, or a specific position zz in metres. The value is linearly interpolated between cells.

Parameters

Add the parameters to fit and give each a min and max bound, in SI base units. The picker is the same one used by the Parametric Study and Optimisation tools: the engine's parameter registry, holding the numbers the model uses as configured (a field written in terms of a global variable is left out; fit the variable instead). The default bounds are ±50 % of the current value.

Run

  • Iterations and Initial samples set the evaluation budget. Their sum is the number of simulations run.
  • Start fitting runs the search. For every trial, the deck is copied with the trial parameter values and simulated to the end of its cycles. The simulated series is then compared with the data:
RMSE=1N∑k=1N(ysim(xk)−yk)2\mathrm{RMSE} = \sqrt{\frac{1}{N}\sum_{k=1}^{N}\left(y_{sim}(x_k) - y_k\right)^2}

For time series, ysimy_{sim} is linearly interpolated at each data time xkx_k. For KPIs, each data point is matched to the simulated cycle with the same index, and points with no matching cycle are skipped. A trial that fails to solve is scored as the worst case so that the optimiser avoids it.

  • The search is dlib's global optimiser, MaxLIPO with a trust region. It runs one trial at a time on a separate background worker so that the rest of the workspace stays responsive. Stop ends the search early.
  • The table shows the original value, the last trial and the best trial for each parameter, with their RMSE. The Convergence plot shows the best RMSE so far, and Best fit vs data overlays the best simulated series on the data.
  • Apply fitted values to simulation writes the best values into the deck. It is a normal edit, so Ctrl+Z undoes it. The deck is not changed until you press this button.

The extraction and RMSE are computed in the C++ engine (ExtractBulkTimeSeries, ExtractComponentTimeSeries, ComputeRMSE and ComputeKPIRMSE in adsim/solver/parameterisation.h).