Spline Interpolation¶
The spline interpolation model is a non-parametric, data-driven binding model. It represents the equilibrium relation between pore-phase and solid-phase concentration by interpolation of tabulated data.
Two interpolation modes are supported:
INDEPENDENT: each component’s equilibrium loading is a 1D cubic spline of its own pore-phase concentration.
COMPETITIVE_REGULAR_GRID: all equilibrium loadings depend simultaneously on the full pore-phase concentration vector via multilinear interpolation on a regular Cartesian-product grid.
INDEPENDENT mode¶
For each component \(i\) and bound state \(m\), an equilibrium loading
is constructed from user-provided data pairs \((\vec{c}^p_{i}, \vec{c}^s_{i,m})\). Here, \(c^p_{i}\) and \(c^s_{i,m}\) denote the pore- and solid-phase concentration of component \(i\) and bound state \(m\).
The spline function \(f_{i,m}\) is a piecewise cubic polynomial. On an interval \([c_{p,i}^{(k)}, c_{p,i}^{(k+1)}]\), it is evaluated as
The spline coefficients are generated from the tabulated data using a cubic spline construction. A monotonicity correction is applied to avoid non-physical oscillations between supporting points.
Extrapolation behavior¶
If \(c^p_{i}\) lies outside the tabulated concentration range, the model extrapolates using mixed boundary conditions:
at \(c^p_i < \operatorname{min}\left(\vec{c}^p_{i}\right)\), the second derivative is set to zero, resulting in a linear continuation beyond the boundary,
at \(c^p_i > \operatorname{max}\left(\vec{c}^p_{i}\right)\), the first derivative is set to zero, resulting in a flat continuation beyond the boundary.
COMPETITIVE_REGULAR_GRID mode¶
In competitive mode, every bound state’s equilibrium loading depends on the complete pore-phase concentration vector \(\boldsymbol{c}_p = (c_{p,1}, \ldots, c_{p,N_c})\):
The user supplies a sorted support axis \(G_j = \{c_{p,j}^{(0)}, \ldots, c_{p,j}^{(K_j)}\}\) for each component \(j\). The evaluation grid is the Cartesian product \(G_1 \times \cdots \times G_{N_c}\), and equilibrium values \(c^{s,\ast}_{i,m}\) must be provided at every one of the \(\prod_j (K_j + 1)\) grid points.
For a query point \(\boldsymbol{c}_p\) located in the hypercell \(\prod_j [c_{p,j}^{(k_j)}, c_{p,j}^{(k_j+1)}]\), the interpolated value is the multilinear (tensor-product linear) combination over the \(2^{N_c}\) cell corners:
where the interpolation weights are \(w_j^{(0)} = 1 - \xi_j\), \(w_j^{(1)} = \xi_j\), and
This is equivalent to scipy.interpolate.RegularGridInterpolator with
method='linear'.
Extrapolation behavior¶
If any pore-phase concentration lies outside the tabulated range, the multilinear polynomial of the clamped boundary cell is extended linearly in each out-of-bounds dimension. No constant fill value is applied.
Kinetic form¶
The model is used in a kinetic linear-driving-force form for both modes. For each component \(i\) and bound state \(m\), the exchange term is based on the deviation of the current solid-phase loading \(c^s_{i,m}\) from the interpolated equilibrium loading \(c^{s,\ast}_{i,m}\):
Thus, the spline interpolation model provides the equilibrium target, while the kinetic constant \(k^{\mathrm{kin}}_{i,m}\) controls how fast the equilibrium state is approached.
Parameter sensitivities¶
Sensitivities for the spline interpolation data \(\vec{c}^p_{i}, \vec{c}^s_{i,m}\) are currently not available. Sensitivities for the kinetic constant \(k^{\mathrm{kin}}_{i,m}\) are enabled.
CADET-Core interface¶
For more information on model parameters required to define in CADET file format, see Spline Interpolation.