Food Isotherms via Statistical Thermodynamics

Quick Start

Food/water sotherms are often described and interpreted by models such as BET or GAB that themselves contain assumptions that are often invalid. Here we implement the stat-therm, universal, ABC isotherm that can analyse raw data directly or convert from many of the common isotherms that others choose to use. There is a more general version for those interested a wide range of Isotherms via Stat Therm. This is a beta version for private testing.


The app accompanies a forthcoming (2025) book chapter from Abbott, Harton, Matubayasi and Shimizu1 which is based on core papers by Shimizu and Matubayasi2-4.

Food Isotherms

A × 100
B × 100
C × 100
Fit Quality
Standard values

Warning: include(apps/js/food-isotherms.v2.js): Failed to open stream: No such file or directory in /var/www/vhosts/ on line 33

Warning: include(): Failed opening 'apps/js/food-isotherms.v2.js' for inclusion (include_path='.:/opt/plesk/php/8.0/share/pear') in /var/www/vhosts/ on line 33

A lot to talk about

For those who want to load their own data and/or convert from previous fits such a GAB, please jump to the instructions below.

This could have been at least 3 separate apps, but in the end it's a single app because everything is inter-related. So take some time to go through the text here - there's a lot of good stuff to take in.

The adsorption (onto) and absorption (into) of molecules such as water onto/into surfaces [the sorbate molecules interact with the sorbent] can be experimentally measured, and the curve of activity (very often just concentration) versus amount ad/ab-sorbed is called the isotherm. These isotherms have distinctive shapes, often with plateaux but sometimes with inflexion points. There has been a long history of describing these isotherms with models such a Langmuir, BET, GAB etc. based on some plausible science of what is happening in, for example, monolayers and multilayers.

As happens so often in science, helpful abstractions based on simple, limiting cases gain the aura of providing fundamental insights into complex processes. So the various isotherm models have been used in cases where their fundamental assumptions simply cannot apply. At the same time, the complexities of real isotherms invite alternative models, with the official body IUPAC listing 80+ such models. The whole area is a mess because, as has often been shown1, it is possible to fit the same real-world isotherm data with very different isotherm models based on different assumptions.

Fortunately, by going back to the fundamentals, it's rather straightforward to produce an assumption free theory that allows us to understand all basic sorption processes.

We first look how the theory gives us insightful, assumption-free curves for any isotherm, with very little effort. We then see how some modest assumptions behind two classes of isotherms can give us fits where the parameters have deep meanings, more insightful than those which are tied to the numerous models based on inappropriate assumptions.

The Gs2 and G22/v curves

An isotherm is just a plot of 〈n2〉 (the brackets mean "ensemble average"), the amount sorbed per unit mass of sorbent, versus a2, the activity of the sorbate. The "2" means that this is the sorbate as opposed to "s" the surface. If, instead, we plot 〈n2〉/a2 versus a2, we end up with a plot that, when multiplied by a constant, gives us Gs2. This is a Kirkwood-Buff integral which tells us how much extra "2" we have on the surface compared to an average without sorption. Typically it starts off high, meaning that there's a strong attraction, then it reduces because there are fewer available sites then it increases for interesting reasons discussed next.

If you take the derivative of the inverse curve, a2/〈n2〉 you directly obtain G22/v. This is a measure of how many sorbates you have together compared to the average, divided by the "interfacial volume" v which is discussed later. This typically starts off negative, you have fewer sorbates together than the average for the simple reason that if you have one sorbate somewhere you cannot have a second one in the same place; this is the "excluded volume" effect. Eventually you reach a point where you G22/v becomes positive - this means that you have net sorbate-sorbate interactions. The point at which this happens is at exactly the point where Gs2 starts to increase. Now you have more surface-sorbate interactions because sorbate-sorbate interactions (which are themselves enabled by the surface) mean that any sorbate at the surface brings another (fraction of a) sorbate with it.

This molecular picture applies to all possible sorption curves and makes no mention of "monolayer coverage" or "sorbtion sites" or "micropores" and is derived straight from the isotherm itself. What's not to like?

Fitting to meaningful parameters

The problem with the 80+ isotherm models is that they are each based on (conflicting) assumptions, so their parameters (a) apply only to those assumptions and (b) cannot be compared and contrasted with others. See the review by Peleg5 for an independent view on this. What would be preferable would be a small set of models based on the assumption-free stat-therm, that applied to a broad range of cases, so within each type of case there would just be one set of meaningful parameters that everyone can use. For the purpose of this app only the ABC is used. The theory can be contracted to AB or expanded to ABCD but we achieve most of what we need with ABC. Those with obviously cooperative isotherms can explore them using the Cooperative Isotherms app.

The app works in two modes.

  1. You can play around with different isotherm models in reverse - adjusing ABC to get the parameters appropriate to your chosen model, and see how well (normal) or badly (sometimes) ABC maps onto the other model.
  2. You can load your own isotherm as a .csv file (described below) and obtain an ABC fit which you can then translate into values for other isotherms.

The ABC fit

Here we focus on a 3-parameter A, B, C fit. Although, like any fit, it contains approximations, it is sufficiently close to the assumption-free theory that the parameters have deep meanings that throw light on the true meaning of the parameters from assumption-filled isotherms such as BET and GAB.

The fit is based on the well-known fact that thermodynamic interactions can involve a "virial expansion". From this modest assumption, the following formula naturally evolves:


As mentioned above, a fourth term could be added to the bottom `(-D(a_2)^3)/3` for more complex isotherms but we will focus on ABC.

What is striking about the ABC fit is that it can be readily mapped onto classic models such as BET or GAB, allowing the parameters from these popular fits to be re-interpreted without the flawed assumptions behind them.

The stat-therm meaning of A, B, C

The meanings of the parameters are unambiguous and assumption-free.

  • A: This is the attraction of individual molecules to the sorbent. We know this because A has a big impact on the isotherm without affecting G22, the interactions between sorbate molecules. More specifically `1/A=c_2^(sat)G_(s2)^0` where C is a constant discussed below along with the units and where the 0 means that this is the surface-sorbate Kirkwood-Buff interval at infinite dilution. It can be likened to what an AFM tip with a single sorbate molecule might find, on average, as it moved over the surface.
  • B: This describes the sorbent-induced one-to-one sorbate interactions because `B=G_(22)^0/(v^0)`, and is typically negative because of excluded volume effects.
  • C: This is a measure of 3-body interactions - a larger value means stronger sorbate-sorbate interactions on the surface.

BET surface area

Amazingly, the "BET monolayer coverage" is given by `n_m=-1/B=(v^0)/(G_(22)^0)` so is nothing to do with monolayers and instead is a measure of surface-induced sorbate-sorbate interactions. The BET constant is give by `C_B=-B/A`, in other words it says that the BET constant is a mix of G22/v and Gs2 both at infinite dilution.

In simple cases, G22 at infinite dilution is equal to the molar volume of the molecule. So v0/G220 (with units of mol/kg) is a number showing how many moles of virtual isolated molecules could fit on the surface of 1kg of smaple if (as, of course, is not the case) they had the chance. If you multiply this by the area of the molecule (and by Avogardro's number) then you can get a surface area. Maybe a good name for it would be the Virtual Surface Area, VSA. To be consistent with the app, units should be m²/kg but instead the units are the generally-accepted m²/g. By choosing your Sorbate you get the MWt if conversion to moles is required, along with an Area in Ų.

An app for handling BET-style isotherms from the world of Inverse Gas Chromatography, including an extra term to account for "Langmuir sites" is available on the Practical Chromatography site.


Because the ABC fit is based on stat-therm and is universal for the very common Type II isotherms, we can recast previous fits, with their different parameters into a like-for-like comparison via ABC. But for that we need to agree on a common set of units. The units of 〈n2〉 are quantity-sorbate/quantity-sorbent, often g/100g. The units of ABC are the inverse. In terms of mass of sorbent we could choose, g, 100g or kg. It seems best to choose kg as this is an SI unit. And although we could choose mass of sorbate, it seems more universal to use moles. So A, B, C in the app are converted from your choice of original units to the universal `(kg)/(mol)`.

In terms of stat-therm, key values are Gs20 and G220/v0, i.e. the values at infinite dilution. As mentioned above:


This means that we need to know that `c_2^(sat)` is the saturated vapour concentration (mol/m³) which in turn is `p^(sat)/(RT)` the saturated vapour pressure over RT. You enter T and from your selected Sorbate the Antoine Coefficients ("A") are used to calculate `c_2^(sat)`, which is shown in the outputs. For water at room temperature, the value is ~1.3 mol/m³. This in turn means that the units of Gs2 are `(mol)/(kg)(m³)/(mol)=(m³)/(kg)`

Because G22/v is simply B then its units are the same `(kg)/(mol)`

Units when converting from other isotherms

If you know that your data all refer to g/100g values as used here, and if you put in, say, your GAB parameters then the conversion will be correct. However, if your GAB parameters were fitted to, say, mole/100g then the nm parameter will be out by a factor of 18 (CB and K are unaffected by units). For other isotherms it's up to you to convert your parameters into their g/100g equivalents. One of the many nice things about ABC is that we can all use the same values without having to bother about converting, say, Oswin parameter units to, say, Smith parameter units.

The Isotherms

In principle, this app could contain all 80+ isotherms that have been proposed and are, to a lesser or greater extent, favoured by different academic traditions. My view is that there is little to be gained from doing that. Instead, some typical, popular isotherms are chosen which capture different traditions such as exponential, logarithmic, polynomial, simple, complex. Here, in alphabetical order, are the isotherms used. For BET and GAB nm is used at the "monolayer coverage", though we now know this isn't the case, and CB is the BET constant. If there is a strong and consistent tradition of naming the parameters, something close to that tradition is used. Otherwise, neutral K1, K2... and, for power laws N are used:

  • BET: `"〈"n"〉"=(n_mC_Ba)/((1-a)(1-a+C_Ba))`
  • Bradley: `"〈"n"〉"=ln(ln(1/a)/B)/ln(A)`
  • GAB: `"〈"n"〉"=(n_mC_BKa)/((1-Ka)(1-Ka+C_BKa))`
  • Hailwood-Horrobin: `"〈"n"〉"=a/(A+Ba-Ca^2)`
  • Halsey: `"〈"n"〉"=(-K/ln(a))^(1/n)`
  • Henderson: `"〈"n"〉"=(ln(1-a)/(-A))^(1/B)`
  • Oswin: `"〈"n"〉"=K_1(a/(1-a))^N`
  • Peleg: `"〈"n"〉"=K_1a^(N_1)+K_2a^(N_2)`
  • Smith: `"〈"n"〉"=K_1-K_2ln(1-a)`

Fitting your own data

A set of representitive isotherms based on the different models is provided in The master file is in Excel and the individual worksheets show the parameters used. The individual isotherms are in .csv format with the first row Item, a, n and subsequent rows with Data, a_value, n_value. This slightly unfamiliar format reflects modern JavaScript file handling methods.

Prepare your own file in that format. The n values should be in g/100g which we chose as the most popular standard format.

You choose File A-B-C Fit, load your file and examine the quality of fit. The Fit Quality slider can be moved as a compromise between speed of fitting and quality of fit. Typically a value of 5 is suitable but you may need to increase it if your isotherm is highly atypical.

If you have a reasonable fit to, say, a GAB model, select that model from the combobox. The curved doesn't change (because you haven't altered A, B, C) but you get the GAB parameters calculated. You can then compare them to the values from the original spreadsheet.

Converting your old parameters

For systems such as GAB that have the same functional form as ABC, if you select them, the Model Parameters box becomes editable. If you type your own parameters in any reasonable format and click the -->ABC button then a full conversion to ABC is performed, allowing access to all the relevant parameters.

For others you have to play with ABC sliders till you get your parameters to appear in the box, at which point you have the relevant ABC parameters. Maybe in future versions this inconvenient approach will be updated.


Steven Abbott, Kaja Harton, Nobuyuki Matubayasi, Seishi Shimizu, What Are Our Food/Water Isotherms Really Telling Us? A New Way to Look at Old Data, in Soft Matter in Foods. Gillies, G. & Rousseau, D. (eds.). The Royal Society of Chemistry (2025). We thank the Editors for allowing us to release the app ahead of publication.


Seishi Shimizu and Nobuyuki Matubayasi, Sorption: A Statistical Thermodynamic Fluctuation Theory, Langmuir 2021, 37, 24, 7380–7391


Seishi Shimizu and Nobuyuki Matubayasi, Understanding Sorption Mechanisms Directly from Isotherms, Langmuir 2023, 39, 6113–6125


Seishi Shimizu and Nobuyuki Matubayasi, Surface Area Estimation: Replacing the BET Model with the Statistical Thermodynamic Fluctuation Theory, Langmuir 2022, 38, 7989–8002


M. Peleg, Models of Sigmoid Equilibrium Moisture Sorption Isotherms With and Without the Monolayer Hypothesis, Food Eng. Rev., 2020, 12, 1–13