Dubinin-Radushkevich and Dubinin-Astakov plots#

Dubinin-Radushkevich equation and related plots.

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

Calculate pore volume and effective adsorption potential through a Dubinin-Radushkevich (DR) plot.

The optional p_limits parameter allows to specify the upper and lower pressure limits for the calculation, otherwise the entire range will be used.

Parameters:
  • isotherm (PointIsotherm, ModelIsotherm) -- The isotherm to use for the DR plot.

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

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

  • verbose (bool, optional) -- Prints extra information and plots the resulting fit graph.

Returns:

dict -- Dictionary of results with the following parameters:

  • pore_volume (float) : calculated total micropore volume, cm3/material unit

  • adsorption_potential (float) : calculated adsorption potential, in kJ/mol

Raises:

Notes

The Dubinin-Radushkevich equation [1] is an extension of the potential theory of Polanyi, which asserts that molecules near a surface are subjected to a potential field. The adsorbate at the surface is in a liquid state and its local pressure is conversely equal to the vapour pressure at the adsorption temperature.

Pore filling progresses as a function of total adsorbed volume \(V_{t}\).

\[V_{ads} = V_{t} \exp\Big[\Big(\frac{\Delta G}{\varepsilon}\Big)^{2}\Big]\]

Here \(\Delta G\) is the change in Gibbs free energy \(\Delta G = - RT \ln(p_0/p)\) and \(\varepsilon\) is a characteristic energy of adsorption. Substituting:

\[V_{ads} = V_{t} - e^{-\Big(\frac{RT}{\varepsilon}\Big)^2 \ln^2{\frac{p_0}{p}}} = V_{t} - e^{-D \ln^2{\frac{p_0}{p}}}\]

If an experimental isotherm is consistent with the DR model, the equation can be used to obtain the total pore volume and energy of adsorption. The DR equation is linearised:

\[\ln{V_{ads}} = \ln{V_{t}} - \Big(\frac{RT}{\varepsilon}\Big)^2 \ln^2{\Big[\frac{p_0}{p}}\Big]\]

Isotherm loading is converted to volume adsorbed by assuming that the density of the adsorbed phase is equal to bulk liquid density at the isotherm temperature. Afterwards \(\ln{V_{ads}}\) is plotted against \(\ln^2{p_0/p}\), and fitted with a best-fit line. The intercept of this line can be used to calculate the total pore volume, while the slope is proportional to the characteristic energy of adsorption \(\varepsilon\).

References

pygaps.characterisation.dr_da_plots.da_plot(isotherm, exp: float = None, branch: str = 'ads', p_limits: tuple[float, float] = None, verbose: bool = False)[source]#

Calculate pore volume and effective adsorption potential through a Dubinin-Astakov (DA) plot. Optionally find a best exponent fit to the DA line.

The function accepts a pyGAPS isotherm, with an ability to select the pressure limits for point selection.

Parameters:
  • isotherm (PointIsotherm) -- The isotherm to use for the DA plot.

  • exp (float, optional) -- The exponent to use in the DA equation. If not specified a best fit exponent will be calculated between 1 and 3.

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

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

  • verbose (bool, optional) -- Prints extra information and plots the resulting fit graph.

Returns:

dict -- Dictionary of results with the following parameters:

  • pore_volume (float) : calculated total micropore volume, cm3/material unit

  • adsorption_potential (float) : calculated adsorption potential, in kJ/mol

  • exponent (float) : the exponent, only if not specified, unitless

Notes

The Dubinin-Astakov equation [2] is an expanded form of the Dubinin-Radushkevich model. It is an extension of the potential theory of Polanyi, which asserts that molecules near a surface are subjected to a potential field. The adsorbate at the surface is in a liquid state and its local pressure is conversely equal to the vapour pressure at the adsorption temperature.

Pore filling progresses as a function of total adsorbed volume \(V_{t}\).

\[V_{ads} = V_{t} \exp\Big[\Big(\frac{\Delta G}{\varepsilon}\Big)^{n}\Big]\]

Here \(\Delta G\) is the change in Gibbs free energy \(\Delta G = - RT \ln(p_0/p)\) and \(\varepsilon\) is a characteristic energy of adsorption. The exponent \(n\) is a fitting coefficient, often taken between 1 (described as surface adsorption) and 3 (micropore adsorption). The exponent can also be related to surface heterogeneity. Substituting:

\[V_{ads} = V_{t} - e^{-\Big(\frac{RT}{\varepsilon}\Big)^n \ln^n{\frac{p_0}{p}}} = V_{t} - e^{-D \ln^n{\frac{p_0}{p}}}\]

If an experimental isotherm is consistent with the DA model, the equation can be used to obtain the total pore volume and energy of adsorption. The DA equation is first linearised:

\[\ln{V_{ads}} = \ln{V_{t}} - \Big(\frac{RT}{\varepsilon}\Big)^n \ln^n{\Big[\frac{p_0}{p}}\Big]\]

Isotherm loading is converted to volume adsorbed by assuming that the density of the adsorbed phase is equal to bulk liquid density at the isotherm temperature. Afterwards \(\ln{V_{ads}}\) is plotted against \(\ln^n{p_0/p}\), and fitted with a best-fit line. The intercept of this line can be used to calculate the total pore volume, while the slope is proportional to the characteristic energy of adsorption \(\varepsilon\).

References

pygaps.characterisation.dr_da_plots.da_plot_raw(pressure: list, loading: list, iso_temp: float, molar_mass: float, liquid_density: float, exp: float = None, p_limits: tuple[float, float] = None)[source]#

Calculate a DA fit, a 'bare-bones' function.

Designed as a low-level alternative to the main function. For advanced use.

Parameters:
  • pressure (array) -- Pressure, relative.

  • loading (array) -- Loading, in mol/basis.

  • iso_temp (float) -- Isotherm temperature, in K

  • molar_mass (float) -- Molar mass of adsorbate, in g/mol.

  • liquid_density (float) -- Mass liquid density of the adsorbed phase, in g/cm3.

  • exp (float, None) -- Exponent used in the DA equation. Pass None to automatically calculate.

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

Returns:

  • microp_volume (float) -- Calculated DA pore volume.

  • potential (float) -- Effective DA adsorption potential.

  • exp (float) -- The exponent (useful if fitting was desired).

  • slope (float) -- Slope of the fitted DA line.

  • intercept (float) -- Intercept of the DA line.

  • minimum (float) -- Minimum point taken.

  • maximum (float) -- Maximum point taken.

  • corr_coef (float) -- Correlation coefficient of the fit line.

pygaps.characterisation.dr_da_plots.log_v_adj(loading, molar_mass, liquid_density)[source]#

Log of volumetric uptake.

pygaps.characterisation.dr_da_plots.log_p_exp(pressure, exp)[source]#

Log of p_0/p raised to the DA exponent.