BET surface area#

This module contains BET area calculations.

pygaps.characterisation.area_bet.area_BET(isotherm: PointIsotherm | ModelIsotherm, branch: str = 'ads', p_limits: tuple[float, float] = None, verbose: bool = False)[source]#

Calculate BET area from an isotherm.

The optional p_limits parameter allows to specify the upper and lower pressure limits to calculate the BET area, otherwise the limits will be automatically selected based on the Rouquerol rules.

Parameters:
  • isotherm (PointIsotherm, ModelIsotherm) -- The isotherm of which to calculate the BET surface area.

  • branch ({'ads', 'des'}, optional) -- Branch of the isotherm to use. It defaults to adsorption.

  • p_limits (tuple[float, float], optional) -- Pressure range in which to perform the calculation.

  • verbose (bool, optional) -- Prints extra information and plots graphs of the calculation.

Returns:

dict -- A dictionary of results with the following components. The basis of these results will be derived from the basis of the isotherm (per mass, per volume, or per mole of adsorbent):

  • area (float) : calculated BET surface area, in m2/unit of adsorbent

  • c_const (float) : the C constant in the BET equation, unitless

  • n_monolayer (float) : the amount adsorbed at statistical monolayer, in mmol

  • p_monolayer (float) : the pressure at which statistical monolayer is chosen, relative

  • bet_slope (float) : slope of the BET plot

  • bet_intercept (float) : intercept of the BET plot

  • corr_coef (float) : correlation coefficient of the linear region in the BET plot

Raises:

Notes

Description

The BET method [1] is one of the first standardised methods to calculate the surface area of a porous material. It is generally applied on isotherms obtained through N2 adsorption at 77K, although other adsorbates (Ar, Kr) have been used.

It assumes that the adsorption happens on the surface of the material in incremental layers according to the BET theory. Even if the adsorbent is mesoporous, the initial amount adsorbed (usually between 0.05 - 0.4 \(p/p_0\)) can be modelled through the BET equation:

\[\frac{p/p_0}{n_{ads} (1-p/p_0)} = \frac{1}{n_{m} C} + \frac{C - 1}{n_{m} C}(p/p_0)\]

If we plot the isotherm points as \(\frac{p/p_0}{n_{ads}(1-p/p_0)}\) versus \(p/p_0\), a linear region can usually be found. The slope and intercept of this line can then be used to calculate \(n_{m}\), the amount adsorbed at the statistical monolayer, as well as \(C\), the BET constant.

\[ \begin{align}\begin{aligned}n_{m} = \frac{1}{s+i}\\C = \frac{s}{i} + 1\end{aligned}\end{align} \]

The surface area can then be calculated by using the moles adsorbed at the statistical monolayer. If the specific area taken by one of the adsorbate molecules on the surface is known, it is inserted in the following equation together with Avogadro's number:

\[a_{BET} = n_m A_N \sigma\]

Limitations

While a standard for surface area determinations, the BET area should be used with care, as there are many assumptions made in the calculation. To augment the validity of the BET method, Rouquerol [2] proposed several checks to ensure that the BET region selected is valid:

  • The BET constant (\(C\)) obtained should be positive.

  • In the corresponding Rouquerol plot where \(n_{ads}(1-p/p_0)\) is plotted with respect to \(p/p_0\), the points chosen for BET analysis should be strictly increasing.

  • The loading at the statistical monolayer should be situated within the limits of the BET region.

This module implements all these checks.

Regardless, the BET surface area should still be interpreted carefully. The following assumptions are implicitly made in this approach:

  • Adsorption takes place on the pore surface. Microporous materials which have pores in similar size as the molecule adsorbed cannot posses a realistic surface area.

  • The cross-sectional area of the molecule on the surface cannot be guaranteed For example, nitrogen has been known to adopt different orientations on the surface of some materials due to inter-molecular forces, which effectively lowers its cross-sectional area.

  • No account is made for heterogeneous adsorbate-adsorbent interaction in the BET theory.

References

pygaps.characterisation.area_bet.area_BET_raw(pressure: list[float], loading: list[float], cross_section: float, p_limits: tuple[float, float] = None)[source]#

Calculate BET-determined surface area.

This is a 'bare-bones' function to calculate BET surface area which is designed as a low-level alternative to the main function. Designed for advanced use, its parameters have to be manually specified.

Parameters:
  • pressure (list[float]) -- Pressures, relative.

  • loading (list[float]) -- Loadings, in mol/basis.

  • cross_section (float) -- Adsorbed cross-section of the molecule of the adsorbate, in nm.

  • p_limits (tuple[float, float], optional) -- Pressure range in which to perform the calculation.

Returns:

  • area (float) -- Calculated BET surface area.

  • c_const (float) -- C constant from the BET equation.

  • n_monolayer (float) -- Adsorbed quantity in the statistical monolayer.

  • p_monolayer (float) -- Pressure at the statistical monolayer.

  • slope (float) -- Calculated slope of the BET plot.

  • intercept (float) -- Calculated intercept of the BET plot.

  • minimum (float) -- Minimum point taken for the linear region.

  • maximum (float) -- Maximum point taken for the linear region.

  • corr_coef (float) -- Correlation coefficient of the straight line in the BET plot.