# Initial enthalpy calculations and enthalpy modelling

The enthalpy of adsorption represents the energy released as heat during the adsorption process as a function of loading. It can be obtained either indirectly, through the isosteric enthalpy method, or directly, using adsoption microcalorimetry. Once an enthalpy curve is calculated, a useful performance indicator is the enthalpy of adsorption at zero loading, corresponding to the inital 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.

``````

In [1]:

%run import.ipynb

``````
``````

Selected 1 samples
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.

``````

In [2]:

import matplotlib.pyplot as plt

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

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

``````
``````

The initial enthalpy of adsorption is:
E = 28.79

The initial enthalpy of adsorption is:
E = 34.73

``````

### 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.

``````

In [3]:

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

isotherm = next(i for i in isotherms_calorimetry if i.material=='Takeda 5A')
res = pygaps.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.14458327410306143
Iterations: 81
Function evaluations: 818

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.1445832720275171
Iterations: 94
Function evaluations: 947

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.14458327603193163
Iterations: 84
Function evaluations: 845

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.1445832731851912
Iterations: 120
Function evaluations: 1212

Final best fit 0.1445832731851912

The initial enthalpy of adsorption is:
E = 28.54
The constant contribution is
19.85
The exponential contribution is
8.71 * exp(1.51E+01 * n) with the limit at 0.41
The guest-guest attractive contribution is
48 * n^2.6
The guest-guest repulsive contribution is
-50 * n^5.5

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.09541800223390323
Iterations: 9
Function evaluations: 90

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.007235461270055401
Iterations: 74
Function evaluations: 743

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.00723546030619833
Iterations: 62
Function evaluations: 620

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.007334793821042706
Iterations: 62
Function evaluations: 621

Final best fit 0.007334793821042706

The initial enthalpy of adsorption is:
E = 37.12
The constant contribution is
26.53
The exponential contribution is
21.18 * exp(1.23E+01 * n) with the limit at 0.00
The guest-guest attractive contribution is
50 * n^1.8e+01
The guest-guest repulsive contribution is
-46 * n^1.8e+01

``````