Computing standard thermodynamic properties of reactions

Computing standard thermodynamic properties of reactions

Written by Allan Leal (ETH Zurich) on Jan 21th, 2022

This tutorial demonstrates the use of Reaktoro for the computation of standard thermodynamic properties of a chemical reaction such as:

  • the equilibrium constant of reaction, \(K_r\)

  • the standard Gibbs energy of reaction, \(\Delta G_r^\circ\)

  • the standard Helmholtz energy of reaction, \(\Delta A_r^\circ\)

  • the standard enthalpy of reaction, \(\Delta H_r^\circ\)

  • the standard internal energy of reaction, \(\Delta U_r^\circ\)

  • the standard entropy of reaction, \(\Delta S_r^\circ\)

  • the standard volume of reaction, \(\Delta V_r^\circ\)

  • the standard heat capacity (constant pressure) of reaction, \(\Delta C_{P,r}^\circ\)

  • the standard heat capacity (constant volume) of reaction, \(\Delta C_{V,r}^\circ\)

Reaktoro computes these reaction properties using the standard thermodynamic properties of the reacting species at a given temperature and pressure. For example, consider the reaction

\[2\mathrm{A}+3\mathrm{B}=\mathrm{C}.\]

The standard Gibbs energy of this reaction is computed using

\[\Delta G_{r}^{\circ}=G_{\mathrm{C}}^{\circ}-2G_{\mathrm{A}}^{\circ}-3G_{\mathrm{B}}^{\circ}.\]

This rationale (stoichiometric property contribution from product species minus the contribution of reactant species) can be applied to all other standard thermodynamic properties (e.g., \(\Delta H_r^\circ\)) and every reaction.

The equilibrium constant of the reaction is defined as:

\[\ln K_r = -\dfrac{\Delta G^{\circ}_m}{RT}\]

but it’s often handled in logarithm base 10, \(\lg K_r = \ln K_r/\ln 10\).

It’s very easy to compute these reaction properties in Reaktoro as shown next:

from reaktoro import *

db = PhreeqcDatabase("phreeqc.dat")

rxn = db.reaction("H+ + OH- = H2O")

rprops = rxn.props(25.0, "C", 1.0, "atm")
print(rprops)
+------------------------------------------------+-------------+-------------+
| Property                                       |       Value |        Unit |
+------------------------------------------------+-------------+-------------+
| Temperature                                    |    298.1500 |           K |
| Pressure                                       |      1.0132 |         bar |
| Equilibrium Constant (log base 10)             |     13.9948 |           - |
| Delta Standard Gibbs Energy                    | -79882.1698 |       J/mol |
| Delta Standard Enthalpy                        | -56358.9238 |       J/mol |
| Delta Standard Volume                          |  2.2208e-05 |      m3/mol |
| Delta Standard Volume (Temperature Derivative) |  0.0000e+00 |  m3/(mol*K) |
| Delta Standard Volume (Pressure Derivative)    |  0.0000e+00 | m3/(mol*Pa) |
| Delta Standard Isobaric Heat Capacity          |    189.6441 |   J/(mol*K) |
| Delta Standard Isochoric Heat Capacity         |    189.6441 |   J/(mol*K) |
| Delta Standard Internal Energy                 | -56361.1740 |       J/mol |
| Delta Standard Entropy                         |     78.8974 |   J/(mol*K) |
| Delta Standard Helmholtz Energy                | -79884.4200 |       J/mol |
+------------------------------------------------+-------------+-------------+

Another more complicated example (mineral dissolution reaction):

rxn = db.reaction("Kaolinite + 6*H+ = H2O + 2*H4SiO4 + 2*Al+3")

rprops = rxn.props(40.0, "C", 1.0, "atm")
print(rprops)
+------------------------------------------------+--------------+-------------+
| Property                                       |        Value |        Unit |
+------------------------------------------------+--------------+-------------+
| Temperature                                    |     313.1500 |           K |
| Pressure                                       |       1.0132 |         bar |
| Equilibrium Constant (log base 10)             |       6.1956 |           - |
| Delta Standard Gibbs Energy                    |  -37143.5851 |       J/mol |
| Delta Standard Enthalpy                        | -147695.2000 |       J/mol |
| Delta Standard Volume                          |  -6.6423e-05 |      m3/mol |
| Delta Standard Volume (Temperature Derivative) |   0.0000e+00 |  m3/(mol*K) |
| Delta Standard Volume (Pressure Derivative)    |   0.0000e+00 | m3/(mol*Pa) |
| Delta Standard Isobaric Heat Capacity          |       0.0000 |   J/(mol*K) |
| Delta Standard Isochoric Heat Capacity         |       0.0000 |   J/(mol*K) |
| Delta Standard Internal Energy                 | -147688.4696 |       J/mol |
| Delta Standard Entropy                         |    -353.0309 |   J/(mol*K) |
| Delta Standard Helmholtz Energy                |  -37136.8547 |       J/mol |
+------------------------------------------------+--------------+-------------+

That’s it! As long as you specify species names that exists in the database, you are free to define your reaction as you wish.