Type: | Package |
Title: | Adsorption Isotherm Models |
Version: | 0.1.0 |
Maintainer: | Jajati Mandal <J.Mandal2@salford.ac.uk> |
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. |
License: | GPL-2 | GPL-3 [expanded from: GPL] |
Encoding: | UTF-8 |
Imports: | ggplot2, stats |
Suggests: | testthat, knitr, rmarkdown |
VignetteBuilder: | knitr |
RoxygenNote: | 7.3.2 |
NeedsCompilation: | no |
Packaged: | 2025-04-09 09:28:29 UTC; jajatimandal |
Author: | Jajati Mandal [cre], Sandipan Samanta [aut] |
Repository: | CRAN |
Date/Publication: | 2025-04-09 10:30:09 UTC |
BET Isotherm Model
Description
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 described by the equation:
Q = \frac{Q_m \cdot C_b \cdot P}{(P_0 - P) \left(1 + (C_b - 1) \cdot \frac{P}{P_0} \right)}
where Q
is the amount adsorbed, P
is the equilibrium pressure, P_0
is the saturation pressure,
Q_m
is the monolayer adsorption capacity, and C_b
is the BET constant.
For more information, see Brunauer et al. (1938): doi:10.1021/ja01269a023
Usage
bet_model(Ce, Qe, Cs = max(Ce) * 1.1)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Cs |
Saturation concentration. |
Value
A named list of BET parameters and model details.
See Also
Other linear models: freundlich_model()
, langmuir_model()
, temkin_model()
Examples
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 Model
Description
The Freundlich isotherm describes adsorption on heterogeneous surfaces and assumes that stronger binding sites are occupied first (Freundlich, 1907). The model is empirical and is expressed by the equation:
Q = K_f \cdot C_e^{1/n}
where Q
is the amount adsorbed, C_e
is the equilibrium concentration,
K_f
is the Freundlich constant related to adsorption capacity, and n
is the heterogeneity factor
(indicating adsorption intensity).
For more information, see Freundlich (1907): doi:10.1002/ange.19070201805
Usage
freundlich_model(Ce, Qe)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Value
A named list of Freundlich parameters and model details.
See Also
Other linear models: bet_model()
, langmuir_model()
, temkin_model()
Examples
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 Model
Description
The Langmuir isotherm assumes monolayer adsorption onto a surface with a finite number of identical sites. 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 = \frac{Q_{\max} \cdot K_L \cdot C_e}{1 + K_L \cdot C_e}
where Q
is the amount adsorbed, C_e
is the equilibrium concentration, Q_{\max}
is the maximum adsorption capacity,
and K_L
is the Langmuir constant.
For more information, see Langmuir (1918): doi:10.1021/ja02242a004
Usage
langmuir_model(Ce, Qe)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Value
A named list of Langmuir parameters and model details.
Examples
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)
Non-linear BET Model
Description
The non-linear BET isotherm extends the Langmuir model to multilayer adsorption and is used to evaluate surface area and porosity of adsorbents. It fits the model directly using non-linear least squares estimation.
The BET equation is expressed as:
Q = \frac{Q_m \cdot C_b \cdot C_e}{(C_s - C_e) \left(1 + (C_b - 1) \cdot \frac{C_e}{C_s} \right)}
where Q
is the amount adsorbed, C_e
is the equilibrium concentration,
C_s
is the saturation concentration, Q_m
is the monolayer adsorption capacity,
and C_b
is the BET constant.
The model uses non-linear regression to estimate parameters.
Usage
nonlinear_bet(Ce, Qe, Cs = max(Ce) * 1.1)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Cs |
Saturation concentration (default is 110% of the maximum equilibrium concentration). |
Value
A named list of BET parameters and model details, including estimated parameters, model statistics, and a diagnostic plot.
See Also
Other nonlinear models: nonlinear_freundlich()
, nonlinear_langmuir()
, nonlinear_temkin()
Examples
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
Description
The non-linear Freundlich isotherm model is an empirical equation describing adsorption on heterogeneous surfaces. It assumes that adsorption sites are not uniform and that binding energy decreases exponentially with surface coverage.
The model is given by:
Q = K_f \cdot C_e^{1/n}
where Q
is the amount adsorbed, C_e
is the equilibrium concentration,
K_f
is the Freundlich constant (adsorption capacity), and n
is the heterogeneity index
(indicating adsorption intensity).
This function fits the Freundlich model using non-linear least squares regression.
Usage
nonlinear_freundlich(Ce, Qe)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Value
A named list of Freundlich parameters and model details, including parameter estimates, model diagnostics, and a diagnostic plot.
See Also
Other nonlinear models: nonlinear_bet()
, nonlinear_langmuir()
, nonlinear_temkin()
Examples
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)
Non-linear Langmuir Model
Description
The non-linear Langmuir isotherm model describes monolayer adsorption onto a surface with a finite number of identical sites. It assumes uniform adsorption energies and no interaction between adsorbed molecules.
The model is defined as:
Q = \frac{Q_{\max} \cdot K_L \cdot C_e}{1 + K_L \cdot C_e}
where Q
is the amount adsorbed, C_e
is the equilibrium concentration,
Q_{\max}
is the maximum adsorption capacity, and K_L
is the Langmuir constant.
This function fits the model using non-linear least squares (nls) regression.
Usage
nonlinear_langmuir(Ce, Qe)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
Value
A named list of Langmuir parameters and model details, including estimated parameters, model statistics, and a diagnostic plot.
See Also
Other nonlinear models: nonlinear_bet()
, nonlinear_freundlich()
, nonlinear_temkin()
Examples
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
Description
The non-linear Temkin isotherm model accounts for indirect adsorbate–adsorbate interactions on heterogeneous surfaces. It assumes that the heat of adsorption decreases linearly with increasing coverage.
The model is given by:
Q = \frac{RT}{b_T} \cdot \ln(A_T \cdot C_e)
where Q
is the amount adsorbed, C_e
is the equilibrium concentration,
R
is the universal gas constant, T
is the temperature in Kelvin,
b_T
is the Temkin constant related to adsorption heat, and A_T
is the Temkin equilibrium binding constant.
This function fits the Temkin isotherm using non-linear least squares regression.
Usage
nonlinear_temkin(Ce, Qe, R = 8.314, T = 298)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
R |
Universal gas constant (default is 8.314 J/mol·K). |
T |
Temperature in Kelvin (default is 298 K). |
Value
A named list of Temkin parameters and model details, including estimated parameters, model diagnostics, and a diagnostic plot.
See Also
Other nonlinear models: nonlinear_bet()
, nonlinear_freundlich()
, nonlinear_langmuir()
Examples
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)
Temkin Isotherm Model
Description
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 expressed as:
Q = \frac{RT}{b_T} \cdot \ln(A_T \cdot C_e)
where Q
is the amount adsorbed, C_e
is the equilibrium concentration,
R
is the universal gas constant, T
is the absolute temperature,
b_T
is the Temkin constant related to adsorption heat, and A_T
is the Temkin isotherm constant.
For more information, see Temkin and Pyzhev (1940).
Usage
temkin_model(Ce, Qe, R = 8.314, T = 298)
Arguments
Ce |
Numeric vector of equilibrium concentrations. |
Qe |
Numeric vector of amount adsorbed. |
R |
Universal gas constant (default is 8.314 J/mol·K). |
T |
Temperature in Kelvin (default is 298 K). |
Value
A named list of Temkin parameters and model details.
See Also
Other linear models: bet_model()
, freundlich_model()
, langmuir_model()
Examples
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)