Source code for ORR
# -*- coding: utf-8 -*-
"""
Created on Fri May 26 14:39:12 2017
@author: mpnun
"""
import numpy as np
[docs]def ORR_rate(delEads_OH, delEads_OOH):
'''
Compute ORR rate from OH and OOH binding energies
Follows the method and data in S.1 of F. Calle-Vallejo et al., Science 350(6257), 185 (2015).
Also see J. K. Nørskov et al., The Journal of Physical Chemistry B 108(46), 17886 (2004).
for method on how to convert binding energies to activity
:returns: Current
'''
kB = 8.617e-5 # eV / K
T = 298.15 # K
U_0 = 1.23 # eV, theoretical maximum cell voltage for ORR
U = 0.9 # V, cathode potential
i_c = 1.6123434625e-12 # miliAmperes (mA) per atom, divide by surface area to get current density
n = 1 # number of electrons tranfered in each step
# *OH, *OOH
E_g = [-7.53, -13.26]
ZPE = [0.332, 0.428] # find actual values, eV
TS = [0, 0] # eV, at 298 K
E_solv = [-0.575, -0.480] # solvation energy, eV
# Species free energies at T = 298K
G_OH = E_g[0] + delEads_OH + ZPE[0] - TS[0] + E_solv[0]
G_OOH = E_g[1] + delEads_OOH + ZPE[1] - TS[1] + E_solv[1]
G_H2g = -6.8935
G_H2Ol = -14.3182
G_O2g = -9.9294 # gas thermo obtained from ../DFT_data/Volcano_rederive.m
# Compute G1 and G4
G1 = G_OOH - G_O2g - 0.5 * G_H2g + U * n
G4 = G_H2Ol - G_OH - 0.5 * G_H2g + U * n
delG_max = max(G1,G4)
j = i_c * np.exp( - delG_max / (kB * T) )
# Check which step is rate determining
is_step_4 = G1 < G4; # *OH desorption (Step 4) is rate determining
if is_step_4:
RDS = 4
else:
RDS = 1
return j