This page was generated from docs/examples/initial_enthalpy.ipynb. To start an interactive version: Binder badge

Initial enthalpy calculations and enthalpy modelling#

Experimentally, the enthalpy of adsorption can be obtained either indirectly, through the isosteric enthalpy method, or directly, using adsorption microcalorimetry. Once an enthalpy curve is calculated, a useful performance indicator is the enthalpy of adsorption at zero loading, corresponding to the initial interactions of the probe with the surface. pyGAPS contains two methods to determine the initial enthalpy of adsorption starting from an enthalpy curve.

First, make sure the data is imported by running the import notebook.

[1]:
# import isotherms
%run import.ipynb

# import the characterisation module
import pygaps.characterisation as pgc
Selected 5 isotherms with nitrogen at 77K
Selected 2 room temperature calorimetry isotherms
Selected 2 isotherms for IAST calculation
Selected 3 isotherms for isosteric enthalpy calculation

Initial point method#

The point method of determining enthalpy of adsorption is the simplest method. It just returns the first measured point in the enthalpy curve.

Depending on the data, the first point method may or may not be representative of the actual value.

[2]:
import matplotlib.pyplot as plt

# Initial point method
isotherm = next(i for i in isotherms_calorimetry if i.material=='HKUST-1(Cu)')
res = pgc.initial_enthalpy_point(isotherm, 'enthalpy', verbose=True)
plt.show()

isotherm = next(i for i in isotherms_calorimetry if i.material=='Takeda 5A')
res = pgc.initial_enthalpy_point(isotherm, 'enthalpy', verbose=True)
plt.show()

The initial enthalpy of adsorption is:
        E = 28.8
../_images/examples_initial_enthalpy_3_1.png
The initial enthalpy of adsorption is:
        E = 34.7
../_images/examples_initial_enthalpy_3_3.png

Compound model method#

This method attempts to model the enthalpy curve by the superposition of several contributions. It is slower, as it runs a constrained minimisation algorithm with several initial starting guesses, then selects the optimal one.

[3]:
# Modelling method
isotherm = next(i for i in isotherms_calorimetry if i.material=='HKUST-1(Cu)')
res = pgc.initial_enthalpy_comp(isotherm, 'enthalpy', verbose=True)
plt.show()

isotherm = next(i for i in isotherms_calorimetry if i.material=='Takeda 5A')
res = pgc.initial_enthalpy_comp(isotherm, 'enthalpy', verbose=True)
plt.show()
Bounds:
        const = (19.849417219261177, 37.63022921697883)
        preexp = (0, 150), exp = (0, inf), exploc = (0, 0.5)
        prepowa = (0, 50), powa = (1, 20)
        prepowr = (-50, 0), powr = (1, 20)


Minimizing routine number 1
Initial guess:
        const = 28.739823218120005
        preexp = 0.0, exp = 0.0, exploc = 0.0
        prepowa = 0.0, powa = 1.0
        prepowr = 0.0, powr = 1.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.14458327076416183
            Iterations: 81
            Function evaluations: 738
            Gradient evaluations: 81


Minimizing routine number 2
Initial guess:
        const = 14.369911609060003
        preexp = 0.048145386979996374, exp = 0.0, exploc = 0.0
        prepowa = 0.0, powa = 1.0
        prepowr = -8.554071327020004, powr = 1.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.14458327307850274
            Iterations: 92
            Function evaluations: 833
            Gradient evaluations: 92


Minimizing routine number 3
Initial guess:
        const = 28.739823218120005
        preexp = 0.07221808046999456, exp = 10.0, exploc = 0.1
        prepowa = 0.01, powa = 3.0
        prepowr = 0.0, powr = 1.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.14458327055352374
            Iterations: 87
            Function evaluations: 792
            Gradient evaluations: 87


Minimizing routine number 4
Initial guess:
        const = 28.739823218120005
        preexp = 0.0, exp = 0.0, exploc = 0.1
        prepowa = 0.0, powa = 3.0
        prepowr = -0.01, powr = 3.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.14458327064989074
            Iterations: 112
            Function evaluations: 1019
            Gradient evaluations: 112


Final best fit 0.14458327064989074.


The initial enthalpy of adsorption is:
        E = 28.5
The constant contribution is
        19.8
The exponential contribution is
        8.71 * exp(15.1 * n)with the limit at 0.407
The guest-guest attractive contribution is
        47.7 * n^2.6
The guest-guest repulsive contribution is
        -50 * n^5.48
../_images/examples_initial_enthalpy_6_1.png
Bounds:
        const = (23.797607891739087, 32.54769036367995)
        preexp = (0, 150), exp = (0, inf), exploc = (0, 0.5)
        prepowa = (0, 50), powa = (1, 20)
        prepowr = (-50, 0), powr = (1, 20)


Minimizing routine number 1
Initial guess:
        const = 28.17264912770952
        preexp = 0.0, exp = 0.0, exploc = 0.0
        prepowa = 0.0, powa = 1.0
        prepowr = 0.0, powr = 1.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.09541800223250922
            Iterations: 9
            Function evaluations: 81
            Gradient evaluations: 9


Minimizing routine number 2
Initial guess:
        const = 14.08632456385476
        preexp = 6.557036324590477, exp = 0.0, exploc = 0.0
        prepowa = 2.9277314033904815, powa = 1.0
        prepowr = 0.0, powr = 1.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.007235460364955422
            Iterations: 75
            Function evaluations: 678
            Gradient evaluations: 75


Minimizing routine number 3
Initial guess:
        const = 28.17264912770952
        preexp = 9.835554486885716, exp = 10.0, exploc = 0.1
        prepowa = 0.01, powa = 3.0
        prepowr = 0.0, powr = 1.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.007235460317026574
            Iterations: 62
            Function evaluations: 558
            Gradient evaluations: 62


Minimizing routine number 4
Initial guess:
        const = 28.17264912770952
        preexp = 0.0, exp = 0.0, exploc = 0.1
        prepowa = 0.0, powa = 3.0
        prepowr = -0.01, powr = 3.0
Optimization terminated successfully    (Exit mode 0)
            Current function value: 0.007334815292145825
            Iterations: 62
            Function evaluations: 561
            Gradient evaluations: 62


Final best fit 0.007334815292145825.


The initial enthalpy of adsorption is:
        E = 37.1
The constant contribution is
        26.5
The exponential contribution is
        21.2 * exp(12.3 * n)with the limit at 5.53e-18
The guest-guest attractive contribution is
        50 * n^18.1
The guest-guest repulsive contribution is
        -45.6 * n^18.1
../_images/examples_initial_enthalpy_6_3.png