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)