Welcome to adsorption_isotherm_fitting’s documentation!

Installation

Docker

docker pull dejac001/isotherm-fitting-users:0.0.4
docker run -ti -v $PWD:/home/pyomo/shared/ dejac001/isotherm-fitting-users:0.0.4 # run interactively inside container (ubuntu-based)

Singularity

module load singularity
singularity pull docker://dejac001/isotherm-fitting-users:0.0.4
mv isotherm-fitting-users_0.0.4.sif /path/to/shared/directory/isotherm-fitting-users_0.0.4.sif
singularity exec -B $PWD:/home/pyomo/shared /path/to/shared/directory/isotherm-fitting-users_0.0.4.sif python3 path/to/input/file.py

Scipy Only

pip3 install Pyomo chem-util matplotlib pandas numpy realgas>=1.0.2
python3 -m pip3 install https://github.com/dejac001/adsorption_isotherm_fitting/archive/v0.0.4.tar.gz

CO2/N2 Unary Example

In this example, we fit temperature-dependent unary data from [PXSL14].

Initialization

We first load the necessary packages

>>> import pyomo.environ as pyo
>>> import matplotlib.pyplot as plt
>>> import pandas as pd
>>> from isotherm_models.unaryisotherm import LangmuirUnary

CO2

We first get the data from the data file

>>> data = pd.read_csv('data_sets/CO2_BEA.csv')

Using pandas, we can easily take a peek at the data we have input from our .csv file

>>> data.head()
    P [atm]  Q [mmol/g]  T [K] adsorbate
0  0.029814    0.096491  273.0       CO2
1  0.055856    0.175439  273.0       CO2
2  0.109177    0.328947  273.0       CO2
3  0.246821    0.719298  273.0       CO2
4  0.313781    0.903509  273.0       CO2

Before solving the model, we convert the partial pressures to si units

>>> P_i = data['P [atm]']*101325  # convert to Pa -- si units

so that we can create the model

>>> co2_model = LangmuirUnary(P_i, data['Q [mmol/g]'], data['T [K]'], name='CO2')

and solve it

>>> co2_model.solve()

We then take a look at the results

>>> co2_model.get_R2_pyomo()
0.99796
>>> co2_model.get_objective()
0.007229102
>>> co2_model.dH_i.display()
dH_i : Size=1
    Key  : Value
    None : -20780.90809523844
>>> co2_model.q_mi.display()
q_mi : Size=1
    Key  : Value
    None : 8.95582798469325
>>> co2_model.k_i_inf.display()
k_i_inf : Size=1
    Key  : Value
    None : 3.8656918601559114e-10

And save the results to a file

>>> fig = plt.figure()
>>> fig, ax = co2_model.plot_unary(fig=fig)
>>> _ = ax.legend()
>>> fig.savefig('docs/source/CO2_example.png')

which looks like

_images/CO2_example.png

N2

We repeat a similar approach for the N2 isotherms, first formatting the data for input to the model

>>> data = pd.read_csv('data_sets/N2_BEA.csv')

Using pandas, we can easily take a peek at the data we have input from our .csv file

>>> data.head()
    P [atm]  Q [mmol/g]  T [K] adsorbate
0  0.525470    0.070175  303.0        N2
1  0.592387    0.078947  303.0        N2
2  0.656824    0.083333  303.0        N2
3  0.722502    0.092105  303.0        N2
4  0.788179    0.100877  303.0        N2

Before solving the model, we convert the partial pressures to si units

>>> P_i = data['P [atm]']*101325  # convert to Pa -- si units

Instantiating (creating) the model

>>> n2_model = LangmuirUnary(P_i, data['Q [mmol/g]'], data['T [K]'], name='N2')

Solving it

>>> n2_model.solve()

We then take a look at the results

>>> n2_model.get_R2_pyomo()
0.99262
>>> n2_model.get_objective()
0.00194249
>>> n2_model.dH_i.display()
dH_i : Size=1
    Key  : Value
    None : -12557.526993112784
>>> n2_model.q_mi.display()
q_mi : Size=1
    Key  : Value
    None : 0.45280441671269905
>>> n2_model.k_i_inf.display()
k_i_inf : Size=1
    Key  : Value
    None : 2.412336128388879e-08

And save the results to a file

>>> fig = plt.figure()
>>> fig, ax = n2_model.plot_unary(fig=fig)
>>> _ = ax.legend()
>>> fig.savefig('docs/source/N2_example.png')

which looks like

_images/N2_example.png

Comparison to scipy

>>> import numpy as np
>>> popt, pcov = co2_model.solve_scipy()
>>> popt
array([  3.71939309, -10.14817759,  -7.28715595])
>>> popt - np.array(list(map(pyo.value, [co2_model.q_mi_star, co2_model.A_i, co2_model.H_i_star])))
array([3.28355311e-05, 3.67969745e-05, 3.88858220e-05])

H2S/CH4 Example

In this example, we fit temperature-dependent binary data from [STS15] and compare the results to using the extended Langmuir combining rule.

Initialization

First, we import the necessary packages

>>> import pyomo.environ as pyo
>>> import matplotlib.pyplot as plt
>>> import pandas as pd
>>> from isotherm_models.unaryisotherm import LangmuirUnary
>>> from isotherm_models.binaryisotherm import BinaryLangmuir

First, we grab the data for adsorption of H2S:

>>> df = pd.read_csv('data_sets/CH4_H2S_MFI_binary_with_fugacity.csv')
>>> hat_f_i, hat_f_j, q_i, T = df['fugacity H2S [Pa]'], df['fugacity CH4 [Pa]'], df['Q H2S [mmol/g]'], df['T [K]']

Here, we are going to fit the loading of H2S, q_i, as a function of the (mixture) fugacities of H2S, hat_f_i, and CH4, hat_f_j. Since the data file includes both binary and unary data (including CH4 unary data where H2S is not present), we need to find the data points where H2S is present. We can do this with a list comprehension as below

>>> all_points = [i for i in range(len(q_i)) if q_i[i] > 0.]

Now, we can create a model with all of these points. We choose the isotherm_models.binaryisotherm.BinaryLangmuir model.

>>> h2s_binary = BinaryLangmuir(
...     [hat_f_i[i] for i in all_points],
...     [hat_f_j[i] for i in all_points],
...     [q_i[i] for i in all_points],
...     [T[i] for i in all_points],
...     name='H2S_binary'
... )

Similarly, we can find the indices of points where only H2S is present (i.e., the unary points for H2S), using the following code

>>> unary_points = [i for i in range(len(q_i)) if hat_f_j[i] < 1e-12]
>>> f_i = [hat_f_i[i] for i in unary_points]

And we can create a unary model as

>>> h2s_unary = LangmuirUnary(
...     f_i,
...     [q_i[i] for i in unary_points],
...     [T[i] for i in unary_points],
...     name='H2S_unary'
... )

We can undertake a similar procedure for CH4, as below

>>> df = pd.read_csv('data_sets/CH4_H2S_MFI_binary_with_fugacity.csv')
>>> hat_f_i, hat_f_j, q_i, T = df['fugacity CH4 [Pa]'], df['fugacity H2S [Pa]'], df['Q CH4 [mmol/g]'], df['T [K]']
>>> all_points = [i for i in range(len(q_i)) if q_i[i] > 0.]
>>> unary_points = [i for i in range(len(q_i)) if hat_f_j[i] < 1e-12]
>>> f_i = [hat_f_i[i] for i in unary_points]
>>> ch4_unary = LangmuirUnary(f_i,
...     [q_i[i] for i in unary_points],
...     [T[i] for i in unary_points],
...     name='CH4_unary'
... )
>>> ch4_binary = BinaryLangmuir(
...     [hat_f_i[i] for i in all_points],
...     [hat_f_j[i] for i in all_points],
...     [q_i[i] for i in all_points],
...     [T[i] for i in all_points],
...     name='CH4_binary'
... )

Solution

We solve the ch4_unary model first

>>> ch4_unary.solve()

and observe that the fit is quite good.

>>> ch4_unary.get_R2_pyomo()
0.9998
>>> ch4_unary.get_objective()
0.0007123352658190

We can take a look at the final parameters that were obtained

>>> ch4_unary.dH_i.display()
dH_i : Size=1
    Key  : Value
    None : -20205.7398278234
>>> ch4_unary.q_mi.display()
q_mi : Size=1
    Key  : Value
    None : 2.7226241284913613
>>> ch4_unary.k_i_inf.display()
k_i_inf : Size=1
    Key  : Value
    None : 6.61203298602151e-10

Then we can do the same thing with the H2S unary model

>>> h2s_unary.solve()
>>> h2s_unary.get_R2_pyomo()
0.998700
>>> h2s_unary.get_objective()
0.0053414

Alternatively, we can display results at once

>>> h2s_unary.display_results()
R2 : Size=1
    Key  : Value
    None : 0.9987002690496689
objective : Size=1, Index=None, Active=True
    Key  : Active : Value
    None :   True : 0.0053414186202173485
H_i_star : Size=1, Index=None
    Key  : Lower : Value               : Upper : Fixed : Stale : Domain
    None :  None : -10.976064382768586 :  None : False : False :  Reals
A_i : Size=1, Index=None
    Key  : Lower : Value              : Upper : Fixed : Stale : Domain
    None :  None : -7.365904878303015 :  None : False : False :  Reals
q_mi_star : Size=1, Index=None
    Key  : Lower : Value              : Upper : Fixed : Stale : Domain
    None :  None : 1.0109486926682547 :  None : False : False :  Reals
q_mi : Size=1
    Key  : Value
    None : 3.1127110247255563
k_i_inf : Size=1
    Key  : Value
    None : 1.6091644633767268e-10
dH_i : Size=1
    Key  : Value
    None : -31300.464752469943

Before solving the binary models, it is useful to have a good initial guess. One option is to initialize the binary variables from the Langmuir combining rule

>>> h2s_binary.H_i_star = pyo.value(h2s_unary.H_i_star)
>>> h2s_binary.A_i = pyo.value(h2s_unary.A_i)
>>> h2s_binary.q_mi_star = pyo.value(h2s_unary.q_mi_star)
>>> h2s_binary.A_j = pyo.value(ch4_unary.A_i)
>>> h2s_binary.H_j_star = pyo.value(ch4_unary.H_i_star)
>>> ch4_binary.H_i_star = pyo.value(ch4_unary.H_i_star)
>>> ch4_binary.A_i = pyo.value(ch4_unary.A_i)
>>> ch4_binary.q_mi_star = pyo.value(ch4_unary.q_mi_star)
>>> ch4_binary.A_j = pyo.value(h2s_unary.A_i)
>>> ch4_binary.H_j_star = pyo.value(h2s_unary.H_i_star)

And then solve them using the usual syntax

>>> h2s_binary.solve()
>>> ch4_binary.solve()
>>> h2s_binary.get_R2_pyomo()
0.9988281256
>>> h2s_binary.get_objective()
0.0186995038
>>> ch4_binary.get_R2_pyomo()
0.999329631
>>> ch4_binary.get_objective()
0.007515807

which demonstrates that the fits are again quite good. It is of interest to compare the binary fit parameters to the unary parameters

>>> pyo.value(h2s_binary.H_i_star)
-11.073113
>>> pyo.value(h2s_unary.H_i_star)
-10.97606
>>> pyo.value(h2s_binary.q_mi_star)
1.0189875
>>> pyo.value(h2s_unary.q_mi_star)
1.0109486
>>> pyo.value(h2s_binary.A_i)
-7.32572
>>> pyo.value(h2s_unary.A_i)
-7.36590

We can also plot all the results to a figure, and save it to a file

>>> fig = plt.figure()
>>> fig, ax = h2s_unary.plot_comparison_dimensionless(fig=fig, color='red', marker='o', markerfacecolor='None', label='H2S unary')
>>> fig, ax = ch4_unary.plot_comparison_dimensionless(fig=fig, ax=ax, color='blue', marker='x', markerfacecolor='None', label='CH4 unary')
>>> fig, ax = h2s_binary.plot_comparison_dimensionless(fig=fig, ax=ax, color='purple', marker='d', markerfacecolor='None', label='H2S binary')
>>> fig, ax = ch4_binary.plot_comparison_dimensionless(fig=fig, ax=ax, color='cyan', marker='s', markerfacecolor='None', label='CH4 binary')
>>> _ = ax.legend()
>>> fig.savefig('docs/source/h2s_ch4_example.png')

Which looks like

_images/h2s_ch4_example.png

Having fit the isotherms, we can now evaluate them at arbitrary fugacities and temperatures. We get the same answer whether we use units or dimensional quantities

>>> pyo.value(h2s_unary.eval_pyomo(h2s_unary.f_ref, h2s_unary.T_ref) - h2s_unary.q_ref*h2s_unary.eval_dimensionless_pyomo(1., 1.))
0.0
>>> pyo.value(
... h2s_binary.eval_pyomo(h2s_binary.f_ref, h2s_binary.f_ref, h2s_binary.T_ref)
... - h2s_binary.q_ref*h2s_binary.eval_dimensionless_pyomo(1., 1., 1.)
... )
0.0

Comparison to scipy

>>> import numpy as np
>>> popt, pcov = h2s_binary.solve_scipy()
>>> popt
array([  1.01898639, -11.07321779,  -8.15011325,  -7.32582652,
        -7.11673647])
>>> popt - np.array(list(map(pyo.value,
...         [h2s_binary.q_mi_star, h2s_binary.H_i_star, h2s_binary.H_j_star, h2s_binary.A_i, h2s_binary.A_j])))
array([-1.12501256e-06, -1.04698086e-04, -1.76342848e-04, -1.04982550e-04,
       -1.81042032e-04])
>>> h2s_binary.get_R2_scipy()
0.998828

which is nearly the same as the pyomo/ipopt result.

Unary Isotherms

Langmuir

The temperature-dependent unary Langmuir isotherm is expressed as

(1)\[q_i = \frac{q_{\text{m},i}k_if_i}{1 + k_i f_i}\]

where \(f_i\), is the fugacity of component i, can be calculated assuming ideal gas

\[f_i^\text{IG} = y_i P\]

or, using the RealGas package to calculate \(\phi_i\) from \(y_i,P,T\) data,

\[f_i = \phi_i y_i P\]

An Arrhenius relationship for \(k_i\) is assumed as

\[k_i = k_{i,\infty}\exp\left(\frac{-\Delta H_i}{RT}\right)\]

Introducing the dimensionless parameters

(2)\[\theta_i = \frac{q_i}{q_\text{ref}}\]
(3)\[f_i^\star = \frac{f_i}{f_\text{ref}}\]
(4)\[T^\star = \frac{T}{T_\text{ref}}\]

The variables to be fit in dimensionless form are

(5)\[H_i^\star = \frac{\Delta H_i}{R T_\text{ref}}\]
(6)\[q_{\text{m},i}^\star = \frac{q_{\text{m},i}}{q_\text{ref}}\]
(7)\[A_i = \ln\left(k_{i,\infty} f_\text{ref}\right)\]

So that Equation (1) becomes

(8)\[\theta_i = \frac{q_{\text{m},i}^\star\exp\left(A_i - \frac{H_i^\star}{T^\star}\right)f_i^\star}{1 + \exp\left(A_i - \frac{H_i^\star}{T^\star}\right)f_i^\star}\]

Modules

class isotherm_models.unaryisotherm.UnaryIsotherm(f_i, q_i, T, q_ref=None, f_ref=None, T_ref=None, **kwargs)[source]

Base class for Unary Isotherms

Parameters
  • f_i (list) – fugacities of component i (can be calculated assuming ideal gas or real gas)

  • q_i (list) – loadings of component i

  • T (list, optional) – temperatures in [K], defaults to None

  • q_ref (float, optional) – reference loading, defaults to maximum loading in q_i

  • f_ref (float, optional) – reference fugacity, defaults to maximum fugacity in f_j

  • T_ref (float, optional) – reference temperature, defaults to maximum temperature in T

  • points (list, derived from input) – state points at which a pressure and temperature are provided

  • f_i_star (list, derived) – dimensionless fugacitities, calculated by Equation (3)

  • theta (list, derived) – dimensionless loadings, calculated by Equation (2)

  • T_star (list, derived) – dimensionless temperatures, calculated by Equation (4)

  • theta_calc (pyo.Var, derived from input) – calculated dimensionless at each state point

  • objective (pyo.Objective, derived from input) – objective function to be minimized for isotherm fitting, calculated from isotherm_models.unaryisotherm.UnaryIsotherm.objective_rule_pyomo()

  • R2 (pyo.Expression, derived) – coefficient of determination, see isotherm_models.unaryisotherm.UnaryIsotherm.R2_rule()

  • q_calc (pyo.Expression, derived) – calculated loading in units

R2_rule()[source]

Calculate coefficient of determination squared, \(R^2\)

isotherm_eq_rule(point)[source]

Constraint for dimensionless expression

objective_rule_pyomo()[source]

Sum of squared errors between calculated loading and predicted loading

\[\sum_i \left(\theta_i^{\text{raw}}-\theta_i^{\text{calc}}\right)^2\]

where raw denotes the raw data obtained by experiment or molecular simulation and calc denotes the data calculated from the isotherm function

solve(solver=<pyomo.solvers.plugins.solvers.IPOPT.IPOPT object>, **kwargs)[source]

Solve constraints subject to objective function

Parameters
  • solver (pyo.SolverFactory, optional) – solver for solving model equations, defaults to pyo.SolverFactory(‘ipopt’)

  • kwargs – for solve argument

class isotherm_models.unaryisotherm.LangmuirUnary(*args, **kwargs)[source]

Langmuir isotherm for unary mixture

Isotherm is Equation (1). Dimensionless isotherm is Equation (8). Dimensionless variables to be fit are \(H_i^\star\), \(A_i\), and \(q_{\text{m},i}^\star\), as defined in Equations (5), (6), and (7), respectively.

Parameters
  • H_i_star (pyo.Var) – \(H_i^\star\), dimensionless heat of adsorption of component i

  • A_i (pyo.Var) – \(A_i\), dimensionless langmuir constant in logarithmic space

  • q_mi_star (pyo.Var) – \(q_{\text{m}i}^\star\), dimensionless saturation loading

  • q_mi (pyo.Expression) – langmuir saturaiton loading

  • k_i_inf (pyo.Expression) – langmuir adsorption constant independent of temperature

  • dH_i (pyo.Expression) – heat of adsorption of component i

dimensionless_isotherm_expression(point)[source]

Dimensionless isotherm expression, see Equation (8)

eval(f_i, T, q_mi, k_i_inf, dH_i)[source]

evaluate using generic types (any type)

eval_pyomo(f_i, T)[source]

evaluate using pyomo types (any type)

initial_guess_A_i()[source]

Initial guess for \(A_i\) variable

Todo

Come up with logical initial guess

initial_guess_H_i_star()[source]

Initial guess for \(H_i^\star\) variable

This value of 10 corresponds to an absolute value for heat of adsorption of \(10RT\) which is approximately 25 kJ/mol

initial_guess_q_mi_star()[source]

Initial guess for \(q_mi^\star\) variable

If \(q_\text{ref}\) is chosen to be the saturation loading, \(q_mi^\star\) will be 1. Thus, we return 1 as initial guess

initial_guess_vector()[source]

p0 in scipy curve fit; initial guess for dimensionless parameters

Note

order here must be the same as last args in LangmuirUnary.eval_dimensionless()

isotherm_expression(point)[source]

Isotherm expression in unit quantities, see Equation (1)

Binary Isotherms

Binary Langmuir

(9)\[q_i = \frac{q_{\text{m},i}k_i\hat{f}_i}{1 + k_i \hat{f}_i + k_j \hat{f}_j}\]

Arrhenius relationships are used for \(k_i\) and \(k_j\), and dimensionless variables are used as illustrated in isotherm_models.unaryisotherm.LangmuirUnary

Note

This isotherm is not equivalent to the conventional extended langmuir isotherm, because both \(k_i\) and \(k_j\) are fit simultaneously to binary data.

For completeness, the relationships are repeated for the binary case below

\[\begin{split}\begin{align} k_i &= k_{i,\infty}\exp\left(\frac{-\Delta H_i}{RT}\right)\\ k_j &= k_{j,\infty}\exp\left(\frac{-\Delta H_j}{RT}\right)\\ \end{align}\end{split}\]

The dimensionless parameters \(\theta_i\) and \(T^\star\) are calculated as the unary case, as shown in Equations (2) and (4), respectively. The other dimensionless parameters are

(10)\[\hat{f}_i^\star = \frac{\hat{f}_i}{f_\text{ref}}\]
(11)\[\hat{f}_j^\star = \frac{\hat{f}_j}{f_\text{ref}}\]

The dimensionless variables to be fit include \(H_i^\star\), \(q_{\text{m},i}^\star\), \(A_i\), \(H_j^\star\), \(q_{\text{m},j}^\star\), and \(A_j\). The former three (\(H_i^\star\), \(q_{\text{m},i}^\star\), and \(A_i\)) have the same expression as the unary case, as shown in Equations (5), (6), and (7), respectively. The latter two are expressed as

(12)\[H_j^\star = \frac{\Delta H_j}{R T_\text{ref}}\]
(13)\[A_j = \ln\left(k_{j,\infty} f_\text{ref}\right)\]

So that Equation (9) becomes

(14)\[\theta_i = \frac{ q_{\text{m},i}^\star\exp\left(A_i - \frac{H_i^\star}{T^\star}\right)\hat{f}_i^\star }{ 1 + \exp\left(A_i - \frac{H_i^\star}{T^\star}\right)\hat{f}_i^\star + \exp\left(A_j - \frac{H_j^\star}{T^\star}\right)\hat{f}_j^\star }\]

Modules

class isotherm_models.binaryisotherm.BinaryIsotherm(hat_f_i, hat_f_j, q_i, T, f_ref=None, **kwargs)[source]

Base class for Binary Isotherms, inherits from UnaryIsotherm

The following additional dimensionless variables are used in computations

Parameters
  • hat_f_j (list) – mixture fugacities of component i

  • hat_f_j – mixture fugacities of component j

  • q_i (list) – loadings of component i

  • T (list, optional) – temperatures in [K], defaults to None

  • points (list, derived from input) – state points at which a pressure and temperature are provided

  • hat_f_i_star (list, derived) – dimensionless fugacitities of component i, calculated by Equation (10)

  • hat_f_j_star (list, derived) – dimensionless fugacitities of component j, calculated by Equation (11)

  • theta (list, derived) – dimensionless loadings, calculated by Equation (2)

  • T_star (list, derived) – dimensionless temperatures, calculated by Equation (4)

  • theta_calc (pyo.Var, derived from input) – calculated dimensionless at each state point

  • objective (pyo.Objective, derived from input) – objective function to be minimized for isotherm fitting, calculated from isotherm_models.unaryisotherm.UnaryIsotherm.objective_rule_pyomo()

  • R2 (pyo.Expression, derived) – coefficient of determination, see isotherm_models.unaryisotherm.UnaryIsotherm.R2_rule()

  • q_calc (pyo.Expression, derived) – calculated loading in units

  • unary_points (list, derived) – points where only i is present, derived from where \(\hat{f}_j < 1\times10^{-12}\)

plot_adsorption_surface()[source]

plot surface of adsorption data

Todo

implement this helpful for debugging

class isotherm_models.binaryisotherm.BinaryLangmuir(*args, **kwargs)[source]

Temperature-dependent extended unary Langmuir isotherm, expressed as

Isotherm is Equation (9). Dimensionless isotherm is Equation (14). Dimensionless variables to be fit are \(H_i^\star\), \(A_i\), \(q_{\text{m},i}^\star\), \(H_j_star\), and \(A_j\), as defined in Equations (5), (6), (7), (12), and (13), respectively.

Parameters
  • H_i_star (pyo.Var) – \(H_i^\star\), dimensionless heat of adsorption of component i

  • A_i (pyo.Var) – \(A_i\), dimensionless langmuir constant in logarithmic space

  • H_j_star (pyo.Var) – \(H_j^\star\), dimensionless heat of adsorption of component j

  • A_j (pyo.Var) – \(A_j\), dimensionless langmuir constant in logarithmic space

  • q_mi_star (pyo.Var) – \(q_{\text{m},i}^\star\), dimensionless saturation loading

  • q_mi (pyo.Expression) – langmuir saturation loading

  • k_i_inf (pyo.Expression) – langmuir adsorption constant independent of temperature

  • dH_i (pyo.Expression) – heat of adsorption of component i

  • k_j_inf (pyo.Expression) – langmuir adsorption constant independent of temperature

  • dH_j (pyo.Expression) – heat of adsorption of component j

dimensionless_isotherm_expression(point)[source]

Dimensionless isotherm expression, see Equation (14)

eval(x, q_mi, dH_i, dH_j, k_i_inf, k_j_inf)[source]

evaluate using generic types (any type)

eval_pyomo(hat_f_i, hat_f_j, T)[source]

Evaluate isotherm in dimensional form

initial_guess_vector()[source]

p0 in scipy curve fit; initial guess for dimensionless parameters

Note

order here must be the same as last args in LangmuirUnary.eval_dimensionless()

isotherm_expression(point)[source]

Isotherm expression in unit quantities, see Equation (9)

Adsorption Equilibria Rules

For gases and their mixtures, the rules, limits, and consistency tests are [TM88]

  1. Unary isotherms should reduce to Henry’s law at the limit of zero pressure.

  2. In spite of incorrect limits at zero pressure, both the Toth and DR equations are accurate for calculating spreading pressure provided the pressure is sufficiently high.

  3. At fixed temperature and pressure, thermodynamically consistent \(x\)-\(y\) diagrams intersect each other at least once. This can be derived by considering the Gibbs adsorption isotherm at constant spreading pressure.

  4. Mixed gas isotherms should display continuity with single-gas isotherms. That is,

    \[\lim_{y_i\to 1} q_\text{t} = q_i \;(\text{constant}\; P, T)\]

    where \(q_\text{t}=\sum_iq_i\) is the total loading. Discontinuities generate inaccurate values of adsorbate vapor pressure that lower the quality of calculations of mixed-gas adsorption.

  5. Isothermal selectivity curves for different vapor compositions should intersect at the limit of zero pressure.

  6. Activity coefficients in the adsorbed phase are functions of spreading pressure as well as composition.

  7. Imperfections in the gas phase led to corrections in fugacity that are small compared to the effect of nonidealities in the adsorbed phase. In most cases, vapor-phase imperfections may be ignored unless the pressure is above 500 kPa and experimental error is less than a few percent.

Real Adsorbed Solution Theory

Todo

implement this into the code

The Gibbs adsorption isotherm is

(1)\[-a \mathrm{d}\Pi + \sum_i x_i \mathrm{d}\mu_i = 0\]

where \(a\) is the surface area per mole of adsorbate, \(\Pi\) is the spreading pressure, \(x_i\) is the adsorbed mole fraction of component i, and \(\mu_i\) is the adsorbed-phase chemical potential of component i.

For change in equilibrium conditions,

(2)\[\mathrm{d}\mu_i = \mathrm{d}\mu_i^\text{g} = RT \mathrm{d} \ln{\hat{f}_i^\text{g}}\]

where \(\hat{f}_i^\text{g}\) is the fugacity of component i in the gas phase. And the substituting surface area of the adsorbent is

(3)\[A = a \sum_i q_i\]

where \(q_i\) is the loading of component i. Substituting Equations (2) and (3) into Equation (1) yields

(4)\[\frac{A}{RT} \mathrm{d}\Pi = \sum_i q_i \mathrm{d} \ln{\hat{f}_i^\text{g}}\]

If we have a good description of the multicomponent isotherms,

\[q_i = F(\{\hat{f}_k\})\]

where \(F\) is an isotherm function, Equation (4) can be simplified to

\[\frac{A\Pi}{RT} = \sum_i \int_0^{\hat{f}_i^\text{g}}\frac{q_i}{f_i^\prime}\mathrm{d}f_i^\prime\]

where \(f_i^\prime\) is a dummy variable for integration.

Data Sets

CO2 and N2 on BEA

Experiment from [PXSL14]

N2 adsorption on BEA, scanned from images in paper

P [atm]

Q [mmol/g]

T [K]

adsorbate

0.5254701189156284

0.07017543859649145

N2

0.5923867910171959

0.0789473684210531

N2

0.6568240613926388

0.08333333333333348

N2

0.7225015761212199

0.09210526315789469

N2

0.788179090849801

0.10087719298245634

N2

0.8526163612252438

0.10526315789473673

N2

0.9195330333268112

0.11403508771929838

N2

0.9988401921780905

0.1184210526315792

N2

0.41270462401356545

0.06140350877192979

N2

0.47590273701602204

0.06578947368421062

N2

CO2 adsorption on BEA, scanned from images in paper

P [atm]

Q [mmol/g]

T [K]

adsorbate

0.02981369160199132

0.09649122807017552

CO2

0.055855562077436444

0.17543859649122817

CO2

0.10917737342116132

0.3289473684210531

CO2

0.24682058305615331

0.7192982456140355

CO2

0.3137807343637904

0.9035087719298249

CO2

0.3832192004174003

1.0877192982456143

CO2

0.45017500380443043

1.254385964912281

CO2

0.5171318941716123

1.4254385964912284

CO2

0.5828463662253526

1.5833333333333337

CO2

0.6497989086719275

1.7368421052631582

CO2

0.6683960520880888

1.7763157894736845

CO2

0.6894736842105261

1.8245614035087723

CO2

0.7328670188482358

1.9166666666666672

CO2

0.8196504271831995

2.0877192982456148

CO2

0.9113904650101088

2.2587719298245617

CO2

0.9994075958173001

2.4078947368421058

CO2

0.15004021826561445

0.21052631578947345

CO2

0.21573729863692678

0.29824561403508776

CO2

0.2801941346551011

0.38157894736842124

CO2

0.34464988369312377

0.4605263157894739

CO2

0.4103447901041326

0.5394736842105265

CO2

0.4785190982412659

0.6228070175438596

CO2

0.5429759342594404

0.7061403508771931

CO2

0.6086686667101457

0.7763157894736845

CO2

0.6731244157481683

0.8552631578947372

CO2

0.7375779908258874

0.9254385964912284

CO2

0.8020326528837582

1.0000000000000002

CO2

0.8677253853344638

1.0701754385964914

CO2

0.9321789604121826

1.1403508771929827

CO2

0.9656438183438771

1.1710526315789478

CO2

0.9991108502358745

1.210526315789474

CO2

0.08434205091415034

0.1184210526315792

CO2

0.13265397073849425

0.05701754385964941

CO2

0.10539142155264239

0.052631578947368585

CO2

0.0595360768712363

0.02631578947368407

CO2

0.20948933672471134

0.08771929824561386

CO2

0.26154155525120115

0.1184210526315792

CO2

0.3297017326463618

0.14473684210526327

CO2

0.39414552490271526

0.17543859649122817

CO2

0.4610676319050413

0.20614035087719307

CO2

0.5267484075740776

0.2280701754385963

CO2

0.5911911128502791

0.2543859649122808

CO2

0.6581132198526054

0.2850877192982457

CO2

0.7225548381486553

0.3070175438596494

CO2

0.7869986304050085

0.3377192982456143

CO2

0.8539196504271831

0.3640350877192984

CO2

0.9196004260962194

0.38596491228070207

CO2

0.9989141068284091

0.4166666666666665

CO2

H2S and CH4 on MFI

Molecular simulation from [STS15],

H2S adsorption on MFI, taken from tables in SI

P [bar]

Q [mmol/g]

d Q [mmol/g]

adsorbate

T [K]

0.001

0.01

0.0003

H2S

298

0.01

0.098

0.001

H2S

298

0.1

0.90

0.01

H2S

298

0.3

1.91

0.01

H2S

298

0.5

2.28

0.01

H2S

298

2.61

0.01

H2S

298

1.5

2.742

0.004

H2S

298

2

2.810

0.005

H2S

298

3

2.90

0.01

H2S

298

4

2.95

0.01

H2S

298

5

2.983

0.004

H2S

298

6

3.010

0.003

H2S

298

7

3.030

0.004

H2S

298

8

3.050

0.004

H2S

298

9

3.064

0.004

H2S

298

10

3.079

0.003

H2S

298

0.001

0.00226

0.00002

H2S

343

0.01

0.0226

0.0002

H2S

343

0.1

0.221

0.003

H2S

343

0.3

0.62

0.01

H2S

343

0.5

0.96

0.01

H2S

343

1.54

0.01

H2S

343

1.5

1.87

0.01

H2S

343

2

2.074

0.004

H2S

343

3

2.321

0.004

H2S

343

4

2.46

0.01

H2S

343

5

2.55

0.01

H2S

343

6

2.62

0.01

H2S

343

7

2.665

0.003

H2S

343

8

2.704

0.004

H2S

343

9

2.737

0.004

H2S

343

10

2.762

0.003

H2S

343

20

2.905

0.004

H2S

343

30

2.969

0.002

H2S

343

40

3.005

0.002

H2S

343

50

3.030

0.003

H2S

343

CH4 adsorption on MFI, taken from tables in SI

P [bar]

Q [mmol/g]

d Q [mmol/g]

adsorbate

T [K]

0.001

0.01

0.0003

H2S

298

0.01

0.098

0.001

H2S

298

0.1

0.90

0.01

H2S

298

0.3

1.91

0.01

H2S

298

0.5

2.28

0.01

H2S

298

2.61

0.01

H2S

298

1.5

2.742

0.004

H2S

298

2

2.810

0.005

H2S

298

3

2.90

0.01

H2S

298

4

2.95

0.01

H2S

298

5

2.983

0.004

H2S

298

6

3.010

0.003

H2S

298

7

3.030

0.004

H2S

298

8

3.050

0.004

H2S

298

9

3.064

0.004

H2S

298

10

3.079

0.003

H2S

298

0.001

0.00226

0.00002

H2S

343

0.01

0.0226

0.0002

H2S

343

0.1

0.221

0.003

H2S

343

0.3

0.62

0.01

H2S

343

0.5

0.96

0.01

H2S

343

1.54

0.01

H2S

343

1.5

1.87

0.01

H2S

343

2

2.074

0.004

H2S

343

3

2.321

0.004

H2S

343

4

2.46

0.01

H2S

343

5

2.55

0.01

H2S

343

6

2.62

0.01

H2S

343

7

2.665

0.003

H2S

343

8

2.704

0.004

H2S

343

9

2.737

0.004

H2S

343

10

2.762

0.003

H2S

343

20

2.905

0.004

H2S

343

30

2.969

0.002

H2S

343

40

3.005

0.002

H2S

343

50

3.030

0.003

H2S

343

H2S/CH4 Binary adsorption on MFI, taken from tables in SI

T [K]

P [bar]

y H2S [mol/mol]

dY H2S [mol/mol]

Q H2S [mmol/g]

dQ H2S [mmol/g]

Q CH4 [mmol/g]

dQ CH4 [mmol/g]

dH H2S [kJ/mol]

d dH H2S [kJ/mol]

dH CH4 [kJ/mol]

d dH CH4 [kJ/mol]

298

1

0.00472

0.00002

0.0406

0.0001

0.499

0.001

-28.5

0.2

-19.21

0.05

298

1

0.00944

0.00004

0.0816

0.0003

0.492

0.001

-28.5

0.2

-19.22

0.02

298

1

0.0141

0.0001

0.1231

0.0005

0.483

0.001

-28.6

0.1

-19.34

0.03

298

1

0.019

0.0001

0.164

0.001

0.476

0.001

-28.6

0.1

-19.37

0.05

298

1

0.0239

0.0001

0.204

0.001

0.47

0.001

-28.5

0.1

-19.39

0.03

298

1

0.0288

0.0002

0.246

0.001

0.462

0.001

-28.6

0.1

-19.4

0.1

298

1

0.0337

0.0002

0.287

0.001

0.455

0.001

-28.7

0.1

-19.47

0.04

298

1

0.0385

0.0001

0.33

0.001

0.4473

0.0004

-28.7

0.1

-19.53

0.04

298

1

0.1038

0.0002

0.816

0.001

0.358

0.001

-29.4

0.1

-19.88

0.04

298

1

0.1665

0.0003

1.212

0.002

0.281

0.001

-30.07

0.03

-20.43

0.05

298

1

0.2421

0.0003

1.571

0.002

0.211

0.001

-30.82

0.05

-21

0.1

298

1

0.3341

0.0003

1.873

0.002

0.149

0.001

-31.4

0.1

-21.4

0.1

298

1

0.4433

0.0002

2.112

0.001

0.1

0.0002

-32

0.1

-21.9

0.1

298

1

0.5673

0.0001

2.295

0.001

0.0623

0.0002

-32.5

0.1

-22.2

0.2

298

1

0.7038

0.0001

2.429

0.001

0.0353

0.0002

-32.8

0.1

-22.4

0.2

298

1

0.84866

0.00002

2.534

0.001

0.0151

0.0001

-33

0.1

-22.7

0.3

298

10

0.00167

0.00002

0.0633

0.0001

1.834

0.002

-29.5

0.3

-20.19

0.03

298

10

0.00339

0.00002

0.1265

0.0001

1.796

0.002

-29.8

0.1

-20.26

0.04

298

10

0.00509

0.00001

0.1898

0.0001

1.758

0.002

-29.9

0.1

-20.35

0.03

298

10

0.0069

0.0001

0.2525

0.0003

1.717

0.002

-29.8

0.1

-20.4

0.1

298

10

0.0088

0.0001

0.315

0.0004

1.682

0.001

-30

0.1

-20.48

0.05

298

10

0.0106

0.0001

0.3784

0.0005

1.643

0.001

-30.3

0.2

-20.46

0.05

298

10

0.0128

0.0001

0.439

0.001

1.605

0.001

-29.9

0.1

-20.49

0.05

298

10

0.0147

0.0001

0.502

0.001

1.567

0.001

-30.2

0.1

-20.54

0.05

298

10

0.043

0.0002

1.235

0.001

1.11

0.001

-31.3

0.1

-21.3

0.1

298

10

0.0807

0.0001

1.789

0.001

0.758

0.001

-32.1

0.1

-21.9

0.1

298

10

0.1415

0.0003

2.251

0.001

0.465

0.001

-32.8

0.1

-22.3

0.1

298

10

0.2364

0.0003

2.575

0.001

0.265

0.001

-33.2

0.1

-22.7

0.1

298

10

0.3628

0.0002

2.773

0.001

0.15

0.001

-33

0.1

-22.4

0.1

298

10

0.5091

0.0001

2.896

0.001

0.0844

0.0004

-33.1

0.1

-22.7

0.1

298

10

0.6667

0.0001

2.977

0.001

0.0443

0.0004

-32.8

0.1

-22.2

0.2

298

10

0.83109

0.00004

3.035

0.001

0.018

0.0001

-32.9

0.1

-22.5

0.4

343

1

0.0079

0.00001

0.0169

0.0001

0.2019

0.0004

-27.8

0.2

-19.15

0.05

343

1

0.01582

0.00003

0.0338

0.0002

0.1998

0.0003

-27.9

0.1

-19.14

0.03

343

1

0.02383

0.00002

0.0504

0.0001

0.1978

0.0002

-28

0.1

-19.14

0.05

343

1

0.03177

0.00003

0.0677

0.0002

0.1955

0.0002

-28

0.1

-19.22

0.03

343

1

0.03976

0.00004

0.0849

0.0003

0.1926

0.0004

-28.1

0.1

-19.2

0.1

343

1

0.0479

0.0001

0.101

0.0004

0.1902

0.0004

-28.1

0.1

-19.2

0.1

343

1

0.0561

0.0001

0.1176

0.0004

0.1872

0.0003

-27.9

0.05

-19.2

0.1

343

1

0.064

0.0001

0.136

0.001

0.1853

0.0004

-28.1

0.1

-19.34

0.05

343

1

0.1643

0.0002

0.339

0.001

0.1577

0.0001

-28.3

0.1

-19.43

0.04

343

1

0.2519

0.0001

0.509

0.001

0.1346

0.0003

-28.47

0.04

-19.57

0.04

343

1

0.344

0.0001

0.675

0.001

0.112

0.0002

-28.75

0.05

-19.78

0.04

343

1

0.4403

0.0001

0.84

0.001

0.09

0.0002

-28.9

0.1

-19.9

0.1

343

1

0.542

0

0.995

0.001

0.0695

0.0001

-29.23

0.04

-20.11

0.03

343

1

0.6487

0.0001

1.146

0.001

0.0498

0.0001

-29.46

0.03

-20.2

0.1

343

1

0.76069

0.00004

1.285

0.001

0.0316

0.00005

-29.74

0.02

-20.6

0.1

343

1

0.87781

0.00002

1.418

0.001

0.01502

0.00005

-29.96

0.02

-20.6

0.2

343

10

0.00368

0.00002

0.0502

0.0001

1.191

0.001

-29

0.1

-19.84

0.04

343

10

0.00743

0.00004

0.1002

0.0003

1.169

0.001

-28.8

0.2

-19.85

0.02

343

10

0.01121

0.00004

0.1502

0.0003

1.146

0.001

-28.8

0.2

-19.91

0.05

343

10

0.0151

0.0001

0.2

0.001

1.124

0.002

-29

0.2

-19.92

0.04

343

10

0.0192

0.0001

0.248

0.001

1.102

0.001

-28.9

0.1

-20.01

0.03

343

10

0.0231

0.0001

0.298

0.001

1.079

0.001

-29

0.1

-20.06

0.04

343

10

0.027

0

0.3483

0.0002

1.056

0.002

-29

0.1

-20

0.1

343

10

0.0313

0.0001

0.396

0.001

1.036

0.002

-29.2

0.1

-20.05

0.02

343

10

0.0867

0.0005

0.97

0.003

0.78

0.001

-30

0.1

-20.8

0.1

343

10

0.1463

0.0004

1.4

0.003

0.586

0.001

-30.8

0.1

-21.2

0.1

343

10

0.2215

0.0003

1.774

0.001

0.419

0.001

-31.4

0.1

-21.8

0.1

343

10

0.3161

0.0002

2.074

0.001

0.288

0.001

-31.9

0.1

-22.09

0.05

343

10

0.4289

0.0002

2.304

0.001

0.187

0.001

-32.3

0.04

-22.5

0.1

343

10

0.5576

0.0002

2.472

0.001

0.1171

0.0004

-32.5

0.1

-22.7

0.1

343

10

0.6977

0.0001

2.595

0.001

0.0658

0.0004

-32.8

0.1

-22.7

0.2

343

10

0.84586

0.00004

2.69

0.001

0.028

0.0001

-33

0.1

-22.9

0.2

343

50

0.00243

0.00002

0.0599

0.0001

2.097

0.001

-28.5

0.1

-20.06

0.04

343

50

0.00488

0.00003

0.1198

0.0002

2.055

0.001

-28.7

0.2

-20.2

0.02

343

50

0.0075

0.0001

0.1789

0.0004

2.012

0.001

-29

0.2

-20.17

0.05

343

50

0.0101

0.0001

0.2385

0.0003

1.968

0.001

-29.1

0.2

-20.16

0.04

343

50

0.0126

0.0001

0.2979

0.0003

1.925

0.001

-28.9

0.1

-20.21

0.03

343

50

0.0154

0.0001

0.357

0.001

1.882

0.001

-29.2

0.1

-20.25

0.04

343

50

0.0183

0.0001

0.414

0.001

1.84

0.001

-29.2

0.1

-20.3

0.1

343

50

0.021

0.0002

0.474

0.001

1.798

0.001

-29.4

0.1

-20.37

0.02

343

50

0.0614

0.0004

1.152

0.002

1.306

0.002

-29.8

0.1

-20.8

0.1

343

50

0.1101

0.0002

1.657

0.001

0.941

0.001

-30.3

0.1

-21.4

0.1

343

50

0.1794

0.0002

2.081

0.001

0.637

0.001

-31

0.1

-21.8

0.1

343

50

0.2746

0.0002

2.4

0.001

0.412

0.001

-31.2

0.1

-21.96

0.05

343

50

0.3939

0.0002

2.624

0.001

0.259

0.001

-30.83

0.04

-22

0.1

343

50

0.5315

0.0003

2.776

0.002

0.157

0.001

-30.9

0.1

-22.3

0.1

343

50

0.6808

0.0001

2.885

0.001

0.0887

0.0004

-30.5

0.1

-22.1

0.2

343

50

0.8379

0.0001

2.966

0.001

0.0387

0.0002

-30.3

0.1

-23.1

0.2

298

0.001

0

0

0.0006

0.00001

298

0.01

0

0

0.006

0.0001

298

0.1

0

0

0.058

0.001

298

0.3

0

0

0.168

0.003

298

0.5

0

0

0.274

0.005

298

1

0

0

0.5

0.01

298

1.5

0

0

0.7

0.01

298

2

0

0

0.85

0.01

298

5

0

0

1.46

0.01

298

10

0

0

1.88

0.01

298

12

0

0

1.98

0.01

298

15

0

0

2.09

0.01

298

18

0

0

2.18

0.01

298

20

0

0

2.22

0.01

298

25

0

0

2.33

0.01

298

30

0

0

2.39

0.01

343

0.001

0

0

0.000217

0.000001

343

0.01

0

0

0.00218

0.000001

343

0.1

0

0

0.0217

0.0001

343

0.3

0

0

0.0639

0.0003

343

0.5

0

0

0.106

0.001

343

1

0

0

0.204

0.001

343

1.5

0

0

0.297

0.001

343

2

0

0

0.379

0.001

343

5

0

0

0.788

0.004

343

10

0

0

1.213

0.003

343

12

0

0

1.327

0.003

343

15

0

0

1.472

0.003

343

18

0

0

1.585

0.002

343

20

0

0

1.643

0.003

343

25

0

0

1.779

0.002

343

30

0

0

1.877

0.003

343

40

0

0

2.032

0.002

343

50

0

0

2.141

0.002

298

0.001

1

0

0.01

0.0003

298

0.01

1

0

0.098

0.001

298

0.1

1

0

0.9

0.01

298

0.3

1

0

1.91

0.01

298

0.5

1

0

2.28

0.01

298

1

1

0

2.61

0.01

298

1.5

1

0

2.742

0.004

298

2

1

0

2.81

0.005

298

3

1

0

2.9

0.01

298

4

1

0

2.95

0.01

298

5

1

0

2.983

0.004

298

6

1

0

3.01

0.003

298

7

1

0

3.03

0.004

298

8

1

0

3.05

0.004

298

9

1

0

3.064

0.004

298

10

1

0

3.079

0.003

343

0.001

1

0

0.00226

0.00002

343

0.01

1

0

0.0226

0.0002

343

0.1

1

0

0.221

0.003

343

0.3

1

0

0.62

0.01

343

0.5

1

0

0.96

0.01

343

1

1

0

1.54

0.01

343

1.5

1

0

1.87

0.01

343

2

1

0

2.074

0.004

343

3

1

0

2.321

0.004

343

4

1

0

2.46

0.01

343

5

1

0

2.55

0.01

343

6

1

0

2.62

0.01

343

7

1

0

2.665

0.003

343

8

1

0

2.704

0.004

343

9

1

0

2.737

0.004

343

10

1

0

2.762

0.003

343

20

1

0

2.905

0.004

343

30

1

0

2.969

0.002

343

40

1

0

3.005

0.002

343

50

1

0

3.03

0.003

Fugacity coefficients and fugacities

Calculated from :code`RealGas` python package using virial equation of state. The critical temperatures and densities were obtained from the TraPPE website. The accentric factors and critical compressibilities were obtained from DIPPR [RWO+07]. The critical pressure was calculated from all the other critical properties above. The \(k_ij\) parameter was set to 0.

H2S/CH4 Binary adsorption on MFI, taken from tables in SI and added fugacities

T [K]

P [bar]

y H2S [mol/mol]

dY H2S [mol/mol]

Q H2S [mmol/g]

dQ H2S [mmol/g]

Q CH4 [mmol/g]

dQ CH4 [mmol/g]

dH H2S [kJ/mol]

d dH H2S [kJ/mol]

dH CH4 [kJ/mol]

d dH CH4 [kJ/mol]

fugacity CH4 [Pa]

fugacity H2S [Pa]

activity coefficient CH4

activity coefficient H2S

298

1.0

0.00472

2e-05

0.0406

0.0001

0.499

0.001

-28.5

0.2

-19.21

0.05

99354.64683398815

467.70268175311554

0.9982582472669816

0.9908955121888041

298

1.0

0.00944

4e-05

0.0816

0.0003

0.49200000000000005

0.001

-28.5

0.2

-19.22

0.02

98883.45755026388

935.4204755461337

0.9982581322712797

0.99091152070565

298

1.0

0.0141

0.0001

0.1231

0.0005

0.483

0.001

-28.6

0.1

-19.34

0.03

98418.25065254685

1397.2074243643547

0.9982579435292306

0.9909272513222372

298

1.0

0.019

0.0001

0.16399999999999998

0.001

0.47600000000000003

0.001

-28.6

0.1

-19.37

0.05

97929.07688426304

1882.7930534842294

0.9982576644675131

0.9909437123601208

298

1.0

0.0239

0.0001

0.204

0.001

0.47

0.001

-28.5

0.1

-19.39

0.03

97439.89532468858

2368.3946190505576

0.9982573027834093

0.9909600916529528

298

1.0

0.0288

0.0002

0.24600000000000002

0.001

0.462

0.001

-28.6

0.1

-19.4

0.1

96950.70609528711

2854.012000886412

0.998256858477009

0.9909763891966709

298

1.0

0.0337

0.0002

0.287

0.001

0.455

0.001

-28.7

0.1

-19.47

0.04

96461.50931752406

3339.6450788069737

0.9982563315484224

0.9909926049872324

298

1.0

0.0385

0.0001

0.33

0.001

0.4473

0.0004

-28.7

0.1

-19.53

0.04

95982.28894558216

3815.38238070176

0.9982557352634649

0.9910084105718858

298

1.0

0.1038

0.0002

0.816

0.001

0.358

0.001

-29.4

0.1

-19.88

0.04

89462.24616376412

10288.81831126354

0.9982397474198184

0.9912156369232696

298

1.0

0.1665

0.0003

1.212

0.002

0.281

0.001

-30.07

0.03

-20.43

0.05

83200.85252827851

16506.825636128993

0.9982105882216977

0.9914009391068465

298

1.0

0.2421

0.0003

1.571

0.002

0.21100000000000002

0.001

-30.82

0.05

-21.0

0.1

75650.35260477995

24006.794379045048

0.9981574429974925

0.9916065418853799

298

1.0

0.3341

0.0003

1.8730000000000002

0.002

0.149

0.001

-31.4

0.1

-21.4

0.1

66461.23141587035

33137.05514274732

0.9980662474225915

0.9918304442606202

298

1.0

0.4433

0.0002

2.112

0.001

0.1

0.0002

-32.0

0.1

-21.9

0.1

55554.21876296531

43977.96231550829

0.9979202220758993

0.9920587032598306

298

1.0

0.5673

0.0001

2.295

0.001

0.0623

0.0002

-32.5

0.1

-22.2

0.2

43170.682549052566

56291.392323458014

0.9977047041611409

0.9922685056135733

298

1.0

0.7038

0.0001

2.4290000000000003

0.001

0.0353

0.0002

-32.8

0.1

-22.4

0.2

29543.17708750116

69847.83447293856

0.9974063837778919

0.9924386824799454

298

1.0

0.8486600000000001

2e-05

2.5340000000000003

0.001

0.0151

0.0001

-33.0

0.1

-22.7

0.3

15088.898370840641

84233.71308811927

0.9970198474190993

0.9925495850884839

298

10.0

0.0016699999999999998

2e-05

0.0633

0.0001

1.834

0.002

-29.5

0.3

-20.19

0.03

981077.5470453583

1523.8757940066832

0.9827186872530709

0.9125004754531038

298

10.0

0.00339

2e-05

0.1265

0.0001

1.796

0.002

-29.8

0.1

-20.26

0.04

979387.1239880387

3093.5595638865707

0.9827185398380899

0.9125544436243572

298

10.0

0.00509

1e-05

0.1898

0.0001

1.758

0.002

-29.9

0.1

-20.35

0.03

977716.2595347259

4645.1731723511175

0.9827182956596335

0.9126076959432451

298

10.0

0.0069

0.0001

0.2525

0.0003

1.7169999999999999

0.002

-29.8

0.1

-20.4

0.1

975937.1743688908

6297.383652599459

0.9827179280725917

0.9126642974781825

298

10.0

0.0088

0.0001

0.315

0.0004

1.682

0.001

-30.0

0.1

-20.48

0.05

974069.5094911745

8031.967735781164

0.9827174228119193

0.9127236063387687

298

10.0

0.0106

0.0001

0.3784

0.0005

1.643

0.001

-30.3

0.2

-20.46

0.05

972300.0329249608

9675.464740041176

0.9827168313371345

0.9127796924567146

298

10.0

0.0128

0.0001

0.439

0.001

1.605

0.001

-29.9

0.1

-20.49

0.05

970137.1950898683

11684.45578726241

0.9827159593698018

0.9128481083798757

298

10.0

0.0147

0.0001

0.502

0.001

1.567

0.001

-30.2

0.1

-20.54

0.05

968269.162767907

13419.734023255814

0.9827150743610139

0.9129070764119602

298

10.0

0.043

0.0002

1.235

0.001

1.11

0.001

-31.3

0.1

-21.3

0.1

940431.8576733811

39292.21234277575

0.9826874165866052

0.9137723800645523

298

10.0

0.0807

0.0001

1.7890000000000001

0.001

0.758

0.001

-32.1

0.1

-21.9

0.1

903311.9315181902

73831.39189822483

0.9826084319788864

0.9148871362853139

298

10.0

0.1415

0.0003

2.251

0.001

0.465

0.001

-32.8

0.1

-22.3

0.1

843372.9343998154

129697.93604663569

0.982379655678294

0.9165931876087329

298

10.0

0.2364

0.0003

2.575

0.001

0.265

0.001

-33.2

0.1

-22.7

0.1

749681.564622155

217258.3049635014

0.9817726095104178

0.9190283627897691

298

10.0

0.3628

0.0002

2.773

0.001

0.15

0.001

-33.0

0.1

-22.4

0.1

624769.3838252344

334442.58751575556

0.9804918139127972

0.9218373415539017

298

10.0

0.5091

0.0001

2.8960000000000004

0.001

0.0844

0.0004

-33.1

0.1

-22.7

0.1

480266.3604646813

470644.29587924975

0.9783384812888191

0.9244633586314079

298

10.0

0.6667

0.0001

2.977

0.001

0.0443

0.0004

-32.8

0.1

-22.2

0.2

325040.40524152294

617721.150628149

0.9752187375983286

0.9265353991722649

298

10.0

0.83109

4e-05

3.035

0.001

0.018000000000000002

0.0001

-32.9

0.1

-22.5

0.4

164026.61381715562

771130.8167478166

0.971088827287642

0.9278547651250967

343

1.0

0.0079

1e-05

0.0169

0.0001

0.2019

0.0004

-27.8

0.2

-19.15

0.05

99110.89024172857

785.3482956137495

0.9990010103994412

0.9941117665996828

343

1.0

0.015819999999999997

2.9999999999999997e-05

0.0338

0.0002

0.1998

0.0003

-27.9

0.1

-19.14

0.03

98319.66096250119

1572.7121075165753

0.9990008023176776

0.9941290186577595

343

1.0

0.02383

2e-05

0.0504

0.0001

0.1978

0.0002

-28.0

0.1

-19.14

0.05

97519.42698024753

2369.0506958603496

0.9990004505388154

0.9941463264206251

343

1.0

0.03177

2.9999999999999997e-05

0.0677

0.0002

0.1955

0.0002

-28.0

0.1

-19.22

0.03

96726.17327822208

3158.4569427216143

0.9989999615610141

0.9941633436328657

343

1.0

0.039760000000000004

4e-05

0.0849

0.0003

0.1926

0.0004

-28.1

0.1

-19.2

0.1

95927.91152225775

3952.860984131869

0.9989993285247205

0.994180328000973

343

1.0

0.0479

0.0001

0.10099999999999999

0.0004

0.1902

0.0004

-28.1

0.1

-19.2

0.1

95114.65081966543

4762.20596173629

0.9989985381752489

0.9941974867925448

343

1.0

0.0561

0.0001

0.1176

0.0004

0.1872

0.0003

-27.9

0.05

-19.2

0.1

94295.38285917533

5577.544044360629

0.9989975935922802

0.9942146246632139

343

1.0

0.064

0.0001

0.136

0.001

0.1853

0.0004

-28.1

0.1

-19.34

0.05

93506.07639572746

6363.078371912866

0.998996542689396

0.9942309956113853

343

1.0

0.1643

0.0002

0.33899999999999997

0.001

0.1577

0.0001

-28.3

0.1

-19.43

0.04

83484.02152096899

16338.434006332393

0.9989711801001434

0.9944269023939374

343

1.0

0.2519

0.0001

0.509

0.001

0.1346

0.0003

-28.47

0.04

-19.57

0.04

74730.01306979323

25053.46727590841

0.9989307989545947

0.9945798839185553

343

1.0

0.344

0.0001

0.675

0.001

0.11199999999999999

0.0002

-28.75

0.05

-19.78

0.04

65525.87303426274

34218.45386724007

0.9988700157662003

0.9947224961406997

343

1.0

0.4403

0.0001

0.84

0.001

0.09

0.0002

-28.9

0.1

-19.9

0.1

55902.0733056576

43803.316888868176

0.9987863731580775

0.9948516213687979

343

1.0

0.542

0.0

0.995

0.001

0.0695

0.0001

-29.23

0.04

-20.11

0.03

45739.34939814717

53927.14589545035

0.9986757510512483

0.994965791428973

343

1.0

0.6487

0.0001

1.146

0.001

0.0498

0.0001

-29.46

0.03

-20.2

0.1

35078.53753985252

64549.610699230274

0.9985350851082416

0.9950610559462043

343

1.0

0.76069

4e-05

1.285

0.001

0.0316

5e-05

-29.74

0.02

-20.6

0.1

23891.761691274674

75698.85059828975

0.9983603564947002

0.995134030923106

343

1.0

0.8778100000000001

2e-05

1.4180000000000001

0.001

0.015019999999999999

5e-05

-29.96

0.02

-20.6

0.2

12196.369925855415

87357.9610867268

0.9981479602140457

0.995180746251772

343

10.0

0.0036799999999999997

2e-05

0.0502

0.0001

1.1909999999999998

0.001

-29.0

0.1

-19.84

0.04

986412.0261184953

3468.642623528989

0.9900554301012678

0.9425659303067906

343

10.0

0.00743

4e-05

0.1002

0.0003

1.169

0.001

-28.8

0.2

-19.85

0.02

982698.8643201104

7003.844009180555

0.9900549727677751

0.9426438774132645

343

10.0

0.01121

4e-05

0.1502

0.0003

1.146

0.001

-28.8

0.2

-19.91

0.05

978955.6917559687

10567.915381225455

0.9900541993304633

0.9427221571119943

343

10.0

0.0151

0.0001

0.2

0.001

1.124

0.002

-29.0

0.2

-19.92

0.04

975103.2744252512

14236.316386376398

0.9900530758709017

0.9428024096938011

343

10.0

0.0192

0.0001

0.248

0.001

1.102

0.001

-28.9

0.1

-20.01

0.03

971042.5427480503

18103.423864423006

0.9900515321656304

0.942886659605365

343

10.0

0.0231

0.0001

0.298

0.001

1.079

0.001

-29.0

0.1

-20.06

0.04

967179.5727199535

21782.52570083111

0.9900497212815574

0.9429664805554593

343

10.0

0.027000000000000003

0.0

0.3483

0.0002

1.056

0.002

-29.0

0.1

-20.0

0.1

963316.2919149265

25462.241735252624

0.9900475764798834

0.9430459901945416

343

10.0

0.0313

0.0001

0.396

0.001

1.036

0.002

-29.2

0.1

-20.05

0.02

959056.4216436056

29520.072093756335

0.9900448246553171

0.9431332937302342

343

10.0

0.0867

0.0005

0.97

0.003

0.78

0.001

-30.0

0.1

-20.8

0.1

904142.4034608224

81864.23690740153

0.9899730684997509

0.944224185783178

343

10.0

0.1463

0.0004

1.4

0.003

0.586

0.001

-30.8

0.1

-21.2

0.1

845009.8940832004

138301.39116035856

0.9898206560655972

0.9453273490113365

343

10.0

0.2215

0.0003

1.774

0.001

0.419

0.001

-31.4

0.1

-21.8

0.1

770339.1119457926

209675.15623515385

0.9895171637068626

0.9466147008359089

343

10.0

0.3161

0.0002

2.074

0.001

0.28800000000000003

0.001

-31.9

0.1

-22.09

0.05

676349.3079143139

299684.2280836276

0.9889593623546045

0.9480677889390308

343

10.0

0.4289

0.0002

2.3040000000000003

0.001

0.187

0.001

-32.3

0.04

-22.5

0.1

564268.6964458781

407265.0048124523

0.988038340826262

0.9495570175156267

343

10.0

0.5576

0.0002

2.472

0.001

0.1171

0.0004

-32.5

0.1

-22.7

0.1

436493.2864851499

530239.2746809563

0.9866484775884943

0.9509312673618298

343

10.0

0.6977

0.0001

2.595

0.001

0.0658

0.0004

-32.8

0.1

-22.7

0.2

297682.8146374437

664232.6667354767

0.9847264791182391

0.9520319144839855

343

10.0

0.8458600000000001

4e-05

2.69

0.001

0.027999999999999997

0.0001

-33.0

0.1

-22.9

0.2

151401.35731376952

805889.7413609043

0.9822327579717761

0.9527460115869106

343

50.0

0.00243

2e-05

0.0599

0.0001

2.097

0.001

-28.5

0.1

-20.06

0.04

4744725.791674324

9038.054612506701

0.9512567121453781

0.7438728076137203

343

50.0

0.00488

2.9999999999999997e-05

0.1198

0.0002

2.055

0.001

-28.7

0.2

-20.2

0.02

4733068.197742039

18155.409558026655

0.9512557676947584

0.7440741622142072

343

50.0

0.0075

0.0001

0.1789

0.0004

2.012

0.001

-29.0

0.2

-20.17

0.05

4720598.25894536

27910.837521734065

0.9512540572182085

0.7442890005795751

343

50.0

0.0101

0.0001

0.2385

0.0003

1.9680000000000002

0.001

-29.1

0.2

-20.16

0.04

4708220.012427124

37597.33585631338

0.9512516440907414

0.7445017001250175

343

50.0

0.0126

0.0001

0.2979

0.0003

1.925

0.001

-28.9

0.1

-20.21

0.03

4696314.592062534

46916.46224170486

0.9512486514204038

0.744705749868331

343

50.0

0.0154

0.0001

0.35700000000000004

0.001

1.882

0.001

-29.2

0.1

-20.25

0.04

4682976.757527794

57359.89791314146

0.9512445170684123

0.7449337391317072

343

50.0

0.0183

0.0001

0.414

0.001

1.84

0.001

-29.2

0.1

-20.3

0.1

4669158.415208578

68182.98743634831

0.9512393633917853

0.745169261599435

343

50.0

0.021

0.0002

0.474

0.001

1.798

0.001

-29.4

0.1

-20.37

0.02

4656289.293563722

78265.73824523445

0.9512337678373283

0.745387983287947

343

50.0

0.0614

0.0004

1.1520000000000001

0.002

1.306

0.002

-29.8

0.1

-20.8

0.1

4463316.305076584

229819.00908587684

0.9510582367518824

0.7485961208009018

343

50.0

0.1101

0.0002

1.6569999999999998

0.001

0.941

0.001

-30.3

0.1

-21.4

0.1

4229774.738500736

414141.5507812322

0.9506179882010868

0.7523007280313028

343

50.0

0.1794

0.0002

2.081

0.001

0.637

0.001

-31.0

0.1

-21.8

0.1

3896050.0362489764

679262.7923860186

0.9495613054469842

0.7572606381115033

343

50.0

0.2746

0.0002

2.4

0.001

0.41200000000000003

0.001

-31.2

0.1

-21.96

0.05

3435816.686986997

1048236.7764820578

0.947288857730079

0.7634645130969102

343

50.0

0.3939

0.0002

2.6239999999999997

0.001

0.259

0.001

-30.83

0.04

-22.0

0.1

2858094.701124538

1516942.951154272

0.943109949224398

0.7702172892380158

343

50.0

0.5315

0.0003

2.7760000000000002

0.002

0.157

0.001

-30.9

0.1

-22.3

0.1

2193694.8712352514

2063699.7841704178

0.9364759322242269

0.7765568331779559

343

50.0

0.6808

0.0001

2.885

0.001

0.0887

0.0004

-30.5

0.1

-22.1

0.2

1479693.8057825833

2660689.587876201

0.9271264447259293

0.7816361891528205

343

50.0

0.8379

0.0001

2.966

0.001

0.0387

0.0002

-30.3

0.1

-23.1

0.2

741562.5205293724

3288420.039826111

0.9149445040461102

0.7849194509669677

298

0.001

0.0

0.0

0.0006

1e-05

99.99982567685703

0.0

0.9999982567685702

298

0.01

0.0

0.0

0.006

0.0001

999.9825678224506

0.0

0.9999825678224507

298

0.1

0.0

0.0

0.057999999999999996

0.001

9998.256918985078

0.0

0.9998256918985078

298

0.3

0.0

0.0

0.168

0.003

29984.315005205095

0.0

0.9994771668401699

298

0.5

0.0

0.0

0.27399999999999997

0.005

49956.43816363626

0.0

0.9991287632727252

298

1.0

0.0

0.0

0.5

0.01

99825.82855988853

0.0

0.9982582855988853

298

1.5

0.0

0.0

0.7

0.01

149608.28494757478

0.0

0.9973885663171651

298

2.0

0.0

0.0

0.85

0.01

199303.9209533651

0.0

0.9965196047668256

298

5.0

0.0

0.0

1.46

0.01

495660.8554474322

0.0

0.9913217108948644

298

10.0

0.0

0.0

1.88

0.01

982718.7344915213

0.0

0.9827187344915213

298

12.0

0.0

0.0

1.98

0.01

1175158.181870935

0.0

0.9792984848924458

298

15.0

0.0

0.0

2.09

0.01

1461285.6258068562

0.0

0.9741904172045708

298

18.0

0.0

0.0

2.18

0.01

1744396.188195273

0.0

0.9691089934418183

298

20.0

0.0

0.0

2.22

0.01

1931472.222241234

0.0

0.965736111120617

298

25.0

0.0

0.0

2.33

0.01

2393387.9348726072

0.0

0.9573551739490429

298

30.0

0.0

0.0

2.39

0.01

2847140.906919647

0.0

0.9490469689732157

343

0.001

0.0

0.0

0.000217

1e-06

99.99990005807724

0.0

0.9999990005807724

343

0.01

0.0

0.0

0.00218

1e-06

999.9900058526717

0.0

0.9999900058526717

343

0.1

0.0

0.0

0.0217

0.0001

9999.000630213317

0.0

0.9999000630213316

343

0.3

0.0

0.0

0.0639

0.0003

29991.00657075588

0.0

0.9997002190251959

343

0.5

0.0

0.0

0.106

0.001

49975.02074853373

0.0

0.9995004149706745

343

1.0

0.0

0.0

0.204

0.001

99900.10795265506

0.0

0.9990010795265506

343

1.5

0.0

0.0

0.297

0.001

149775.2990314409

0.0

0.9985019935429392

343

2.0

0.0

0.0

0.379

0.001

199600.63137904272

0.0

0.9980031568952136

343

5.0

0.0

0.0

0.7879999999999999

0.004

497507.6830456021

0.0

0.9950153660912042

343

10.0

0.0

0.0

1.213

0.003

990055.5787576132

0.0

0.9900555787576132

343

12.0

0.0

0.0

1.327

0.003

1185694.311722179

0.0

0.9880785931018158

343

15.0

0.0

0.0

1.472

0.003

1477680.7712222184

0.0

0.9851205141481456

343

18.0

0.0

0.0

1.585

0.002

1767908.3237986022

0.0

0.9821712909992235

343

20.0

0.0

0.0

1.643

0.003

1960420.098058145

0.0

0.9802100490290725

343

25.0

0.0

0.0

1.7790000000000001

0.002

2438310.1519523496

0.0

0.9753240607809398

343

30.0

0.0

0.0

1.8769999999999998

0.003

2911387.2821865203

0.0

0.9704624273955068

343

40.0

0.0

0.0

2.032

0.002

3843246.9608703065

0.0

0.9608117402175766

343

50.0

0.0

0.0

2.141

0.002

4756285.117691112

0.0

0.9512570235382224

298

0.001

1.0

0.0

0.01

0.0003

0.0

99.99925611964946

0.9999925611964946

298

0.01

1.0

0.0

0.098

0.001

0.0

999.9256144550077

0.9999256144550077

298

0.1

1.0

0.0

0.9

0.01

0.0

9992.563934951111

0.9992563934951112

298

0.3

1.0

0.0

1.91

0.01

0.0

29933.125167781745

0.9977708389260582

298

0.5

1.0

0.0

2.28

0.01

0.0

49814.37464358243

0.9962874928716486

298

1.0

1.0

0.0

2.61

0.01

0.0

99258.87684524755

0.9925887684524755

298

1.5

1.0

0.0

2.742

0.004

0.0

148335.56633611114

0.9889037755740742

298

2.0

1.0

0.0

2.81

0.005

0.0

197046.4926516004

0.985232463258002

298

3.0

1.0

0.0

2.9

0.01

0.0

293379.2032033977

0.9779306773446589

298

4.0

1.0

0.0

2.95

0.01

0.0

388273.20266297203

0.9706830066574301

298

5.0

1.0

0.0

2.983

0.004

0.0

481744.52506792225

0.9634890501358445

298

6.0

1.0

0.0

3.01

0.003

0.0

573809.04581507

0.9563484096917834

298

7.0

1.0

0.0

3.03

0.004

0.0

664482.4831312154

0.9492606901874506

298

8.0

1.0

0.0

3.05

0.004

0.0

753780.3995308068

0.9422254994135085

298

9.0

1.0

0.0

3.0639999999999996

0.004

0.0

841718.2032606357

0.935242448067373

298

10.0

1.0

0.0

3.0789999999999997

0.003

0.0

928311.1497316719

0.928311149731672

343

0.001

1.0

0.0

0.0022600000000000003

2e-05

0.0

99.99951856616649

0.9999951856616649

343

0.01

1.0

0.0

0.0226

0.0002

0.0

999.9518576596396

0.9999518576596396

343

0.1

1.0

0.0

0.221

0.003

0.0

9995.18680878829

0.9995186808788291

343

0.3

1.0

0.0

0.62

0.01

0.0

29956.702125878106

0.9985567375292702

343

0.5

1.0

0.0

0.96

0.01

0.0

49879.785998015745

0.9975957199603149

343

1.0

1.0

0.0

1.54

0.01

0.0

99519.72204831392

0.9951972204831392

343

1.5

1.0

0.0

1.87

0.01

0.0

148920.67315055724

0.9928044876703815

343

2.0

1.0

0.0

2.074

0.004

0.0

198083.5015314732

0.9904175076573659

343

3.0

1.0

0.0

2.3209999999999997

0.004

0.0

295698.22522153467

0.9856607507384488

343

4.0

1.0

0.0

2.46

0.01

0.0

392370.7357896914

0.9809268394742285

343

5.0

1.0

0.0

2.55

0.01

0.0

488107.8320710314

0.9762156641420627

343

6.0

1.0

0.0

2.62

0.01

0.0

582916.2693277695

0.9715271155462826

343

7.0

1.0

0.0

2.665

0.003

0.0

676802.7595109635

0.966861085015662

343

8.0

1.0

0.0

2.7039999999999997

0.004

0.0

769773.9715207191

0.962217464400899

343

9.0

1.0

0.0

2.737

0.004

0.0

861836.5314648978

0.9575961460721086

343

10.0

1.0

0.0

2.762

0.003

0.0

952997.0229163286

0.9529970229163286

343

20.0

1.0

0.0

2.905

0.004

0.0

1816406.6513747708

0.9082033256873854

343

30.0

1.0

0.0

2.969

0.002

0.0

2596545.196748361

0.865515065582787

343

40.0

1.0

0.0

3.005

0.002

0.0

3299333.1231585075

0.8248332807896269

343

50.0

1.0

0.0

3.03

0.003

0.0

3930318.304974113

0.7860636609948226

References

PXSL14

T D Pham, R Xiong, S I Sandler, and R F Lobo. Experimental and Computational Studies on the Adsorption o CO$_2$ and N$_2$ on Pure Silica Zeolites. Microporous and Mesoporous Materials, 185:157–166, 2014. doi:10.1016/j.micromeso.2013.10.030.

RWO+07

R L Rowley, W V Wilding, J L Oscarson, Y Yang, N A Zundel, T E Daubert, and R P Danner. DIPPR$^\mathrm ®$ Data Compilation of Pure Chemical Properties, Design Institute for Physical Properties. In Design Institute for Physical Properties of the American Institute of Chemical Engineers. AIChE, New York, 2007.

STS15

M S Shah, M Tsapatsis, and J Ilja Siepmann. Monte Carlo Simulations Probing the Adsorptive Separation of Hydrogen Sulfide/Methane Mixtures Using All-Silica Zeolites. Langmuir, 31:12268–12278, 2015. doi:10.1021/acs.langmuir.5b03015.

TM88

O Talu and A L Myers. Rigorous Thermodynamic Treatment of Gas Adsorption. AIChE J., 34:1887–1893, 1988. doi:10.1002/aic.690341114.

Indices and tables