| Title: | Adsorption Isotherm Models |
|---|---|
| Description: | Model adsorption behavior using classical isotherms, including Langmuir, Freundlich, Brunauer–Emmett–Teller (BET), and Temkin models. The package supports parameter estimation through both linearized and non-linear fitting techniques and generates high-quality plots for model diagnostics. It is intended for environmental scientists, chemists, and researchers working on adsorption phenomena in soils, water treatment, and material sciences. Functions are compatible with base 'R' and 'ggplot2' for visualization. |
| Authors: | Jajati Mandal [cre], Sandipan Samanta [aut] |
| Maintainer: | Jajati Mandal <[email protected]> |
| License: | GPL |
| Version: | 0.1.1 |
| Built: | 2026-10-10 17:34:04 UTC |
| Source: | https://github.com/cran/AdsorpR |
The BET isotherm extends the Langmuir theory to multilayer adsorption (Brunauer et al., 1938). It is used to estimate surface area and porosity of adsorbents. The model is applicable under specific physical or chemical conditions and is given by: Q = (Qm * Cb * P) / ((P0 - P)(1 + (Cb - 1) * P / P0)) https://doi.org/10.1021/ja01269a023
bet_model(Ce, Qe, Cs = max(Ce) * 1.1)bet_model(Ce, Qe, Cs = max(Ce) * 1.1)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Cs |
Saturation concentration. |
A named list of BET parameters and model details.
Other linear:
freundlich_model(),
langmuir_model(),
temkin_model()
Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- bet_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- bet_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)
Freundlich isotherm describes adsorption on heterogeneous surfaces and assumes that the stronger binding sites are occupied first (Freundlich, 1907). It is represented by: Q = Kf * Ce^(1/n) where Kf is the Freundlich constant related to adsorption capacity and n indicates adsorption intensity. https://doi.org/10.1002/ange.19070201805
freundlich_model(Ce, Qe)freundlich_model(Ce, Qe)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
A named list of Freundlich parameters and model details.
Other linear:
bet_model(),
langmuir_model(),
temkin_model()
Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- freundlich_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- freundlich_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)
Langmuir isotherm assumes monolayer adsorption onto a surface with a finite number of identical sites (Langmuir, 1918). It is characterized by uniform energies of adsorption onto the surface and no transmigration of adsorbate in the plane of the surface. The model is described by the equation: Q = (Qmax * KL * Ce) / (1 + KL * Ce) where Q is the amount adsorbed, Ce is the equilibrium concentration, Qmax is the maximum adsorption capacity, and KL is the Langmuir constant. https://doi.org/10.1021/ja02242a004
langmuir_model(Ce, Qe)langmuir_model(Ce, Qe)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
A named list of Langmuir parameters and model details.
Other linear:
bet_model(),
freundlich_model(),
temkin_model()
Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- langmuir_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- langmuir_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)
Non-linear BET Model
nonlinear_bet(Ce, Qe, Cs = max(Ce) * 1.1)nonlinear_bet(Ce, Qe, Cs = max(Ce) * 1.1)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Cs |
Saturation concentration. |
A named list of BET parameters and model details.
Other nonlinear:
nonlinear_freundlich(),
nonlinear_langmuir(),
nonlinear_temkin()
Ce <- c(1, 2.5, 4, 5.5, 7) Qe <- c(0.4, 1.0, 1.7, 2.3, 2.7) result <- nonlinear_bet(Ce, Qe) print(result$`BET Qm (mg/g)`) print(result$`BET Cb`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)Ce <- c(1, 2.5, 4, 5.5, 7) Qe <- c(0.4, 1.0, 1.7, 2.3, 2.7) result <- nonlinear_bet(Ce, Qe) print(result$`BET Qm (mg/g)`) print(result$`BET Cb`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)
Non-linear Freundlich Model
nonlinear_freundlich(Ce, Qe)nonlinear_freundlich(Ce, Qe)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
A named list of Freundlich parameters and model details.
Other nonlinear:
nonlinear_bet(),
nonlinear_langmuir(),
nonlinear_temkin()
Ce <- c(0.5, 1, 2, 4, 6, 8) Qe <- c(0.3, 0.8, 1.6, 2.4, 2.9, 3.2) result <- nonlinear_freundlich(Ce, Qe) print(result$`Freundlich Kf`) print(result$`Freundlich n`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)Ce <- c(0.5, 1, 2, 4, 6, 8) Qe <- c(0.3, 0.8, 1.6, 2.4, 2.9, 3.2) result <- nonlinear_freundlich(Ce, Qe) print(result$`Freundlich Kf`) print(result$`Freundlich n`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)
Fits the Langmuir isotherm model using non-linear least squares (nls).
nonlinear_langmuir(Ce, Qe)nonlinear_langmuir(Ce, Qe)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
A named list of Langmuir parameters and model details.
Other nonlinear:
nonlinear_bet(),
nonlinear_freundlich(),
nonlinear_temkin()
Ce <- c(1, 2, 4, 6, 8, 10) Qe <- c(0.9, 1.6, 2.3, 2.7, 2.9, 3.0) result <- nonlinear_langmuir(Ce, Qe) print(result$`Langmuir Qmax (mg/g)`) print(result$`Langmuir KL (L/mg)`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)Ce <- c(1, 2, 4, 6, 8, 10) Qe <- c(0.9, 1.6, 2.3, 2.7, 2.9, 3.0) result <- nonlinear_langmuir(Ce, Qe) print(result$`Langmuir Qmax (mg/g)`) print(result$`Langmuir KL (L/mg)`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)
Non-linear Temkin Model
nonlinear_temkin(Ce, Qe, R = 8.314, T = 298)nonlinear_temkin(Ce, Qe, R = 8.314, T = 298)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
R |
Universal gas constant. |
T |
Temperature in Kelvin. |
A named list of Temkin parameters and model details.
Other nonlinear:
nonlinear_bet(),
nonlinear_freundlich(),
nonlinear_langmuir()
Ce <- c(0.5, 1.5, 3, 4.5, 6) Qe <- c(0.7, 1.3, 2.0, 2.4, 2.7) result <- nonlinear_temkin(Ce, Qe) print(result$`Temkin A`) print(result$`Temkin B`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)Ce <- c(0.5, 1.5, 3, 4.5, 6) Qe <- c(0.7, 1.3, 2.0, 2.4, 2.7) result <- nonlinear_temkin(Ce, Qe) print(result$`Temkin A`) print(result$`Temkin B`) print(result$AIC) print(result$`Pseudo R2`) print(result$Plot)
The Temkin isotherm considers the effects of indirect adsorbate/adsorbate interactions. It assumes that the heat of adsorption of all molecules in the layer decreases linearly with coverage (Temkin and Pyzhev 1940). The model is given by: Q = (RT / bT) * ln(AT * Ce)
temkin_model(Ce, Qe, R = 8.314, T = 298)temkin_model(Ce, Qe, R = 8.314, T = 298)
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
R |
Universal gas constant. |
T |
Temperature in Kelvin. |
A named list of Temkin parameters and model details.
Other linear:
bet_model(),
freundlich_model(),
langmuir_model()
Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- temkin_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)Ce <- c(1, 2, 3, 4, 5) Qe <- c(0.8, 1.5, 2.1, 2.6, 2.9) result <- temkin_model(Ce, Qe) print(result[1:2]) print(result$`Model Summary`) print(result$Plot)