Additional Gas and Adsorbate Species Properties¶
There are two main ways of using free energies in CatMAP:
1. Frozen everything - Useful if you’ve already calculated free energies for all species yourself, you can tell CatMAP
to use no free energy corrections by specifying frozen_gas
and frozen_adsorbate
as the gas_thermo_mode
and adsorbate_thermo_mode
,
respectively. If you are using scaling relationships with this method, keep in mind that linear scaling relationships are only
formulated for formation energies rather than free energies.
2. Let CatMAP do it - CatMAP has built-in functions to estimate free energies for gasses and adsorbates based on data you
provide and its own internal database of parameters. The rest of this tutorial will go over how you can customize these
methods to your liking. Currently, all corrections to electronic energies to get to free energies are located in the thermodynamics
module.
Ideal Gas Properties
ideal_gas
is the default mode for correcting the energies of gas phase species. It relies on ASE’s thermochemistry
package, user-provided vibrational frequencies,
and a dictionary of ideal gas parameters, ideal_gas_params
, which stores [symmetry_number, geometry, spin]
values for
each gas species key. CatMAP provides and uses a default ideal_gas_params
dictionary in catmap.data.ideal_gas_params
,
but you can provide your own parameters by adding something like the following to your .mkm file:
ideal_gas_params = {'Cl2_g':[2, 'linear', 0],
'F2_g':[2, 'linear', 0],}
and so on for each species in your system that CatMAP does not already have parameters for.
Shomate Gas Properties
In the tutorials, we use the Shomate equation to estimate free energy corrections for the gas phase molecules. Shomate
parameters can be found in databases such as NIST
or they can be fitted from experimental data with the fit_shomate
function in catmap.thermodynamics
, which takes in lists of
temperatures, heat capacities, enthalpies, entropies, and initial guesses for the Shomate parameters and returns the least-squares fitted Shomate
parameters A, B, C, D, E, F, G, and H. See fit_shomate.py
in the custom_gasses
tutorial for examples on how to do this. This tutorial
also generates a plot that compares how the free energies generated from the Shomate equation and Ideal Gas equations can deviate as a function
of temperature.
If you have your own Shomate parameters you wish to use or you have calculated them using fit_shomate
, you can use them in your microkinetic model
by modifying your model’s shomate_params
attribute - which is a dictionary of gas_name:temperature_range
keys to a list of
Shomate parameters as values. You can input this dictionary in your .mkm file like the example below:
shomate_params = {'CH3OH_g:298-1500':[-1.0846, 153.2464, -79.5305, 16.4713, 0.5220, -4.8974, 199.1894, 0.0],
'CH3CH2OH_g:298-1200':[-4.7368, 271.9618, -169.3495, 43.7386, 0.2464, -9.8283, 203.3326, 0.0],}
Hindered Adsorbate Properties
hindered_adsorbate
is a mode for correcting the energies of adsorbed species. It relies on ASE’s thermochemistry package
HinderedThermo,
user-provided vibrational frequencies, and a dictionary of hindered adsorbate parameters, hindered_ads_params
, which stores
[barrierT, barrierR, site_density, rotational_minima, mass, inertia, symmetry_number]
values for each adsorbate species key.
You can provide your own parameters by adding something like the following to your .mkm file:
hindered_ads_params = {'CH4_s':[0.006, 0.0008, 1.5e15, 6, None, None, 1],
'C2H6_s':[0.049, 0.018, 1.5e15, 6, 30.07, 73.15, 1],}
and so on for each adsorbed species in your system.
Contributing Data to CatMAP
If you have Shomate data or additional Ideal Gas parameter data that you’d like to see included in CatMAP, feel free to send us a pull
request with your updated parameter_data.py
file. We will most likely only
include such new data in the main CatMAP repository only if the Shomate parameters are fit with well-established thermodynamic data (such as
NIST or the CRC) or if the Ideal Gas parameters are consistent with the geometries in ASE’s database.
Writing Your Own Corrections
Modifying CatMAP source code to include your own custom free energy corrections may seem daunting, but it may be much easier than you think.
Check out the documentation for enthalpy_entropy.py
, specifically how ideal_gas
and shomate_gas
are implemented. All a thermodynamic
correction needs to do is to return a dictionary of corrections it is reponsible for. At the point your correction function is called, the ReactionModel
instance is already fully initialized, so you have access to all attributes of the reaction model from within your correction function.