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