Skip to content

Isotherm Models

Mk-learning-python07 edited this page Sep 25, 2026 · 5 revisions

Isotherm models and mixture equilibrium

Thirteen pure-component models are available, assignable independently to each component. The equations below are exactly as implemented.

Two quantities matter for every model: the loading $q(P,T)$, and the reduced spreading pressure $\psi(P,T)=\int_0^P \frac{q}{P'}\,\mathrm{d}P'$, which is what IAST solves with. Both are listed because a model with no closed-form $\psi$ costs more to run.

Model Loading $q$ [mol/kg] Reduced spreading pressure $\psi$
Linear (Henry) $HP$ $HP$
Langmuir, single-site (SSL) $\dfrac{q_s bP}{1+bP}$ $q_s\ln(1+bP)$
Dual-Site Langmuir (DSL) $\dfrac{q_{s,b} bP}{1+bP}+\dfrac{q_{s,d} dP}{1+dP}$ $q_{s,b}\ln(1+bP)+q_{s,d}\ln(1+dP)$
Dual-Site Langmuir-Freundlich (DSLF) $\dfrac{q_{s,b} bP^{n_b}}{1+bP^{n_b}}+\dfrac{q_{s,d} dP^{n_d}}{1+dP^{n_d}}$ $\dfrac{q_{s,b}}{n_b}\ln\left(1+bP^{n_b}\right)+\dfrac{q_{s,d}}{n_d}\ln\left(1+dP^{n_d}\right)$
Dual-Site BET (DSBET) $\dfrac{q_b^{sat} b_S P}{(1-b_LP)(1-b_LP+b_SP)}+\dfrac{q_d^{sat} d_S P}{(1-d_LP)(1-d_LP+d_SP)}$ $q_b^{sat}\ln\dfrac{1-b_LP+b_SP}{1-b_LP}+q_d^{sat}\ln\dfrac{1-d_LP+d_SP}{1-d_LP}$
Toth $\dfrac{q_s bP}{\left[1+(bP)^t\right]^{1/t}}$ no closed form — integrated numerically
Sips / Hill (SSLF) $\dfrac{q_s bP^n}{1+bP^n}$ $\dfrac{q_s}{n}\ln(1+bP^n)$
Freundlich $kP^n$ $\dfrac{k}{n}P^n$
Anti-Langmuir $\dfrac{q_s bP}{1-bP}$ $-q_s\ln(1-bP)$
Quadratic $q_s\dfrac{b_1P+2b_2P^2}{1+b_1P+b_2P^2}$ $q_s\ln\left(1+b_1P+b_2P^2\right)$
BET (multilayer) $\dfrac{q_s Cx}{(1-x)(1-x+Cx)}$ $q_s\ln\dfrac{1-x+Cx}{1-x}$
Type V (Langmuir + Hill step) $\dfrac{q_s b_L P}{1+b_L P}+\dfrac{q_{s,H} k_H P^{n_H}}{1+k_H P^{n_H}}$ $q_s\ln(1+b_LP)+\dfrac{q_{s,H}}{n_H}\ln\left(1+k_HP^{n_H}\right)$
Sips + Henry (SIPSH) $HP+\dfrac{q_s bP^n}{1+bP^n}$ $HP+\dfrac{q_s}{n}\ln(1+bP^n)$

$x=P/P_{sat}$ for BET, with $P_{sat}$ entered per component.

Notes on individual models

Linear (Henry) has no saturation capacity. It is the correct choice for a weakly held species far from saturation, and it is what makes IAST degenerate gracefully rather than fail.

Toth is the one model with no analytic spreading pressure, so $\psi$ is quadratured. The integrand $q/P'$ is finite at $P'=0$ (it tends to $q_sb$) but falls by more than an order of magnitude across the first few percent of the interval once $bP$ is large, so a uniform grid spends nearly every panel where the integrand is flat and nearly none where it moves. Substituting $P'=P\mathrm{e}^{-x}$ makes the grid geometric in $P'$ and puts the panels where the variation is:

$$\psi=\int_0^X q\!\left(P\mathrm{e}^{-x}\right)\mathrm{d}x\;+\;q\!\left(P\mathrm{e}^{-X}\right)$$

evaluated by Simpson's rule over 80 panels, with $X$ set to clear the saturation knee $\ln(bP)$ by about 14 e-folds. The trailing term is the analytic Henry-law tail: beyond $x=X$ the loading is linear in pressure, so what is left of the integral is $q$ at that point. Checked against adaptive quadrature, the worst relative error is about $10^{-6}$ over $t\in[0.35,0.9]$, $b\in[10^{-6},5]$ and $P$ up to 5 bar.

Versions before 2026.09v3 used a uniform grid, which was in error by 1 % at 1 bar and 2.5 % at 2 bar; because IAST equates spreading pressures, that error propagated into every mixture loading involving Toth — the Activated Carbon preset among them. A Toth/Toth pair remains the slowest combination the solver handles.

Anti-Langmuir rises with loading rather than saturating, so it diverges as $bP\to1$. Both $q$ and $\psi$ are forced to zero for $bP\ge1$ rather than returning infinity — if a run reports zero loading where you expected a large one, that is the guard, and the affinity or the pressure range is wrong.

BET is only defined below saturation. For $x\ge1$ or $x<0$, and where the denominator collapses, $q$ and $\psi$ are set to zero by the same kind of guard.

Quadratic reaches $2q_s$, not $q_s$ — the two-molecule term saturates at twice the site capacity. This matters because saturation capacity is what decides whether IAST is bypassed.

Dual-Site Langmuir-Freundlich (DSLF) puts an independent heterogeneity exponent on each site. It reduces exactly to DSL at $n_b=n_d=1$, which is the quickest way to check a parameter set has been entered correctly.

Dual-Site BET (DSBET) gives each site a monolayer constant $b_S$ and a multilayer constant $b_L$, so one model spans type-1, type-2 and type-3 shapes. It reduces exactly to DSL when $b_L,d_L\to0$. It is intended for systems where a rectangular type-1 component coadsorbs with a type-2 or type-3 one — CO₂ with H₂O on an amine-functionalised sorbent is the case it was derived for. Both $\psi$ terms are closed-form, so DSBET costs IAST no more than the Langmuir forms. Each site requires $b_LP<1$; above that $q$ and $\psi$ are guarded to zero as for Anti-Langmuir. Source: Wilkins et al. (2025), listed in References.

Temperature dependence

Every affinity constant is corrected by van 't Hoff:

$$b(T) = b_0\exp\left(-\frac{\Delta H}{RT}\right)$$

$\Delta H$ is negative for physisorption, so affinity falls as temperature rises. On a concentration basis (concM3, concL) the app divides by $(RT)^n$, which adds $nRT$ to the temperature dependence, so the constant entered there is the internal energy: the field is labelled $\Delta U$, and $\Delta H=\Delta U-nRT$.

Heat of adsorption per component is one of:

Mode Available for What it uses
Constant every model one value you enter
Linear in $q^{\ast}$ every model $\Delta H = m\,q^{\ast} + c$
From isotherm DSL, DSLF, DSBET DSL and DSLF: occupancy-weighted blend of the two site energies. DSBET: the exact isosteric enthalpy from its own $q(P,T)$ by Clausius–Clapeyron, $\Delta H = RT^2\,(\partial q/\partial T)_P\,/\,[P\,(\partial q/\partial P)_T]$, which carries the multilayer constants as well

The blend is correct only if the site energies are calorimetric; parameters fitted to loading alone carry no heat information, so prefer a measured value. A case saved with From isotherm and reloaded onto a single-site model is switched to a mode that model supports.

Units of $b_0$ follow the basis you select, and the conversion depends on the exponent $n$ of the model:

Basis Conversion applied
bar none — used as entered
kPa $\times 100^n$
concM3 (m³/mol) $\div\left(\bar{R}_{m^3}T\right)^n$
concL (L/mol) $\div\left(\bar{R}_{L}T\right)^n$

Getting this wrong is the single most common way to produce a plausible-looking but badly wrong breakthrough curve, because an affinity off by orders of magnitude still integrates to a smooth curve. The preset citations record which basis each published parameter set uses.

Saturation capacity

Used to decide whether IAST can be bypassed:

Model $q_{sat}$
DSL, DSLF, DSBET $q_{s,b}+q_{s,d}$
Type V $q_s+q_{s,H}$
Quadratic $2q_s$
SSL, Toth, Anti-Langmuir, SSLF, BET, SIPSH $q_s$
Linear none — unbounded

When either component's saturation capacity is effectively zero, IAST is bypassed and the run reduces to single-component behaviour.

Mixture equilibrium

  • IAST (Myers & Prausnitz). Works with any of the thirteen models and is solved by a vectorised reduced-spreading-pressure iteration. The default for every preset except Zeolite 13X.
  • Extended-Langmuir competitive mixing, available for SSL and DSL only. Non-iterative, and it can differ noticeably from IAST for the weaker-adsorbing component, particularly when the two isotherm shapes differ. The Zeolite 13X preset uses it: its DSL constants share one pair of site capacities across both gases. At zero partial pressure a component's loading is exactly zero, as in IAST.

IAST is bypassed automatically when either component's saturation capacity is effectively zero.

Consistency check

Every model's $\psi$ must differentiate back to its own $q$ — the Gibbs adsorption isotherm, $\mathrm{d}\psi/\mathrm{d}P=q/P$. Because IAST equates spreading pressures, a $\psi$ inconsistent with its $q$ silently biases every mixture loading without any obvious symptom. The engine's built-in self-test asserts this for all thirteen models at three pressures: the twelve closed-form models agree to about $10^{-11}$, and Toth to $10^{-6}$, limited by its quadrature.

Clone this wiki locally