Computing standard thermodynamic properties of reactions
Computing standard thermodynamic properties of reactions#
Written by Allan Leal (ETH Zurich) on Jan 21th, 2022
Attention
Always make sure you are using the latest version of Reaktoro. Otherwise, some new features documented on this website will not work on your machine and you may receive unintuitive errors. Follow these update instructions to get the latest version of Reaktoro!
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,
the standard Gibbs energy of reaction,
the standard Helmholtz energy of reaction,
the standard enthalpy of reaction,
the standard internal energy of reaction,
the standard entropy of reaction,
the standard volume of reaction,
the standard heat capacity (constant pressure) of reaction,
the standard heat capacity (constant volume) of reaction,
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
The standard Gibbs energy of this reaction is computed using
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.,
The equilibrium constant of the reaction is defined as:
but itβs often handled in logarithm base 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.