Pourbaix Diagram for Copper

[1]:
import pyPourbaix as pb

Like elucidated in the previous examples, let’s define the nessecarry Reactants for the hydrogen evolution reaction \((\text{HER})\) and oxygen evolution reaction \((\text{OER})\).

[2]:
species = ('H|+1|,      state=aq,   dGf=0,              dHf=0,              Sm=0',
           'H2,         state=g,    dGf=0,              dHf=0,              Sm=0',
           'e|-1|,      state=e,    dGf=0,              dHf=0,              Sm=0',
           'H2O,        state=l,    dGf=-2.37140E+05,   dHf=-2.85830E+05,   Sm=69.95',
           'O2,         state=g,    dGf=0,              dHf=0,              Sm=205.137')

The Pourbaix diagram of Copper is slightly more compley than the Pourbaix diagram of Aluminium. It involves 3 solid phases, crystalline \(\text{Cu}^{0}(\text{s})\), copper oxide \(\text{Cu}_2\text{O}(\text{s})\) and copper hydroxide \(\text{Cu}(\text{OH})_2(\text{s})\):

[3]:
species = ('H|+1|,      state=aq,   dGf=0,              dHf=0,              Sm=0',
           'H2,         state=g,    dGf=0,              dHf=0,              Sm=0',
           'e|-1|,      state=e,    dGf=0,              dHf=0,              Sm=0',
           'H2O,        state=l,    dGf=-2.37140E+05,   dHf=-2.85830E+05,   Sm=69.95',
           'O2,         state=g,    dGf=0,              dHf=0,              Sm=205.137',
           'Cu|0|,      state=s,    dGf=0,              dHf=0,              Sm=33.15',
           'Cu2O|0|,    state=s,    dGf=-147.9E+03,     dHf=0,              Sm=92.36',
           'Cu(OH)2|0|, state=s,    dGf=-359.92E+03,    dHf=0,              Sm=87.0'
           )

We will again consider two aqueous species, \(\text{Cu}^{2+}\) predominantly present at acidic \(\text{pH}\) and \(\text{Cu}(\text{OH})_4^{2-}\) that is preferrentially stabilised in alkaline media.

[4]:
species = ('H|+1|,      state=aq,   dGf=0,              dHf=0,              Sm=0',
           'H2,         state=g,    dGf=0,              dHf=0,              Sm=0',
           'e|-1|,      state=e,    dGf=0,              dHf=0,              Sm=0',
           'H2O,        state=l,    dGf=-2.37140E+05,   dHf=-2.85830E+05,   Sm=69.95',
           'O2,         state=g,    dGf=0,              dHf=0,              Sm=205.137',
           'Cu|0|,      state=s,    dGf=0,              dHf=0,              Sm=33.15',
           'Cu2O|0|,    state=s,    dGf=-147.9E+03,     dHf=0,              Sm=92.36',
           'Cu(OH)2|0|, state=s,    dGf=-359.92E+03,    dHf=0,              Sm=87.0',
           'Cu|+2|,     state=aq,   dGf=65.04E+03,      dHf=0,              Sm=-98.0',
           'Cu(OH)4|-2|,state=aq,   dGf=-657.48e+03,    dHf=0,              Sm=-175'
           )

db = pb.Database.from_default(species)

Having 5 rather that 4 stable constituents significantly increases the complexity of the final Pourbaix diagram. First of all, let’s implement all \(\text{Cu}^{0}(\text{s})\) oxidation reactions to form \(\text{Cu}^{2+}\), \(\text{Cu}_2\text{O}(\text{s})\) and \(\text{Cu}(\text{OH})_4^{2-}\).

[5]:

reactions = ('2H|+1| + 2e|-1| -> H2', 'O2 + 4H|+1| + 4e|-1| -> 2H2O', 'Cu|0| -> Cu|+2| + 2e|-1|', 'Cu2O|0| + 2H|+1| + 2e|-1| -> 2Cu|0| + H2O', 'Cu(OH)4|-2| + 4H|+1| + 2e|-1| -> Cu|0| + 4H2O' )

The \(\text{Cu}(\text{I})\) copper oxide \(\text{Cu}_2\text{O}(\text{s})\) furthermore features 3 potential and \(\text{pH}\)-dependent transitions to the aqueous species \(\text{Cu}^{2+}\) and \(\text{Cu}(\text{OH})_4^{2-}\) as well as the \(\text{Cu}(\text{II})\) copper hydroxide \(\text{Cu}(\text{OH})_2(\text{s})\):

[6]:
reactions = ('2H|+1| + 2e|-1| -> H2',
            'O2 + 4H|+1| + 4e|-1| -> 2H2O',
            'Cu|0| -> Cu|+2| + 2e|-1|',
            'Cu2O|0| + 2H|+1| + 2e|-1| -> 2Cu|0| + H2O',
            'Cu(OH)4|-2| + 4H|+1| + 2e|-1| -> Cu|0| + 4H2O',
            '2Cu|+2| + H2O + 2e|-1| -> Cu2O|0| + 2H|+1|',
            '2Cu(OH)4|-2| + 6H|+1| + 2e|-1| -> Cu2O|0| + 7H2O',
            '2Cu(OH)2|0| + 2H|+1| + 2e|-1| -> Cu2O|0| + 3H2O'
            )

Lastly, 2 potential-independent hydrolysis reactions mark the transitions between the 3 \(\text{Cu}(\text{II})\) species \(\text{Cu}^{2+}\), \(\text{Cu}(\text{OH})_2(\text{s})\) and \(\text{Cu}(\text{OH})_4^{2-}\):

[7]:
reactions = ('2H|+1| + 2e|-1| -> H2',
            'O2 + 4H|+1| + 4e|-1| -> 2H2O',
            'Cu|0| -> Cu|+2| + 2e|-1|',
            'Cu2O|0| + 2H|+1| + 2e|-1| -> 2Cu|0| + H2O',
            'Cu(OH)4|-2| + 4H|+1| + 2e|-1| -> Cu|0| + 4H2O',
            '2Cu|+2| + H2O + 2e|-1| -> Cu2O|0| + 2H|+1|',
            '2Cu(OH)4|-2| + 6H|+1| + 2e|-1| -> Cu2O|0| + 7H2O',
            '2Cu(OH)2|0| + 2H|+1| + 2e|-1| -> Cu2O|0| + 3H2O',
            'Cu(OH)2|0| + 2H|+1| -> Cu|+2| + 2H2O',
            'Cu(OH)4|-2| + 2H|+1| -> Cu(OH)2|0| + 2H2O'
            )

Note that 1 additional solid species added a total of 3 reactions to the Pourbaix diagram. By this time, setting up the reactive system should come natural:

[8]:
Cu_system = pb.System()
Cu_system.set_database(db)

As the transition of \(\text{Cu}^{0}(\text{s})\) to \(\text{Cu}(\text{OH})_4^{2-}\) is only visible at strongly alkaline pH, we will pick a borad \(\text{pH}\) interval of \([0, \ 18]\).

[9]:
Cu_system.pHs = (0, 18)

We will continue defining the reference electrode of our system. How about we pick the copper suphate electrode (CSE) this time, that sounds appropriate considering we want to generate a Pourbaix diagram of the element copper.

[10]:
Cu_system.reference_electrode = ("CSE",0.241)

Let’s quickly define the electrode potential boundaries as well as all elements to be plotted. We will also set the activity of aqueous species to \(\{\text{Cu}\}_{\text{aq}} = 1\cdot10^{-3}\).

[11]:
Cu_system.electrode_potentials = (-1.5, 2)
Cu_system.add_elements(["O","H","Cu"])
Cu_system.set_aqueous_activity("Cu",1e-3)

After adding so many different reactions to the reactive system, users might have lost track. Luckily, we can easily get an overview over the reactive system and generate a summary of all reactions added using the print command like so:

[12]:
Cu_system.add_reactions(reactions)
print(Cu_system)
-----------------------------System-----------------------------
Temperature : 298.15, Pressure : 1.0
----------------------------------------------------------------
        1.0H₂ ⇄ 2.0H⁺¹ + 2.0e⁻¹
        2.0H₂O ⇄ 1.0O₂ + 4.0H⁺¹ + 4.0e⁻¹
        1.0Cu⁺² + 2.0e⁻¹ ⇄ 1.0Cu⁰
        2.0Cu⁰ + 1.0H₂O ⇄ 1.0Cu₂O⁰ + 2.0H⁺¹ + 2.0e⁻¹
        1.0Cu⁰ + 4.0H₂O ⇄ 1.0Cu(OH)₄⁻² + 4.0H⁺¹ + 2.0e⁻¹
        1.0Cu₂O⁰ + 2.0H⁺¹ ⇄ 2.0Cu⁺² + 1.0H₂O + 2.0e⁻¹
        1.0Cu₂O⁰ + 7.0H₂O ⇄ 2.0Cu(OH)₄⁻² + 6.0H⁺¹ + 2.0e⁻¹
        1.0Cu₂O⁰ + 3.0H₂O ⇄ 2.0Cu(OH)₂⁰ + 2.0H⁺¹ + 2.0e⁻¹
        1.0Cu⁺² + 2.0H₂O ⇄ 1.0Cu(OH)₂⁰ + 2.0H⁺¹
        1.0Cu(OH)₂⁰ + 2.0H₂O ⇄ 1.0Cu(OH)₄⁻² + 2.0H⁺¹
----------------------------------------------------------------

Likewise, we can inspect the database of species, together with all entered thermodynamic parameters:

[13]:
print(db)
----------------------------Database----------------------------
Species              dGf             dHf              Sm
----------------------------------------------------------------
H|+1|                0.0             0.0             0.0
H2                   0.0             0.0             0.0
e|-1|                0.0             0.0             0.0
H2O             -237140.0       -285830.0          69.95
O2                   0.0             0.0         205.137
Cu|0|                0.0             0.0           33.15
Cu2O|0|         -147900.0            0.0           92.36
Cu(OH)2|0|      -359920.0            0.0            87.0
Cu|+2|           65040.0             0.0           -98.0
Cu(OH)4|-2|     -657480.0            0.0          -175.0
----------------------------------------------------------------

Let’s generate and plot the diagram using th plotting backend bokeh:

[14]:
Cu_diagram = pb.PourbaixDiagram(Cu_system,HER=True,OER=True)
Cu_diagram.solve()
Cu_diagram.show(backend='bokeh',plot_regions=True)

It can be recognised that any of the \(\text{Cu}^{0}(\text{s})\) oxidation reactions feature a potential greater than the hydrogen evolution line \(\text{E}_{\text{H}^+/\text{H}_2} = \text{E}^0_{\text{H}^+/\text{H}_2} - 0.059\times\text{pH}\).