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.