VlachosGroup/PythonGroupAdditivity

get_G does not account for entropy of the elements

gmboyer opened this issue · 1 comments

Hi guys. I like what you're doing with this package. However, I ran into an issue with the function get_G.

I'm trying to reproduce ideal gas formation properties from Domalski and Hearing 1993 (https://doi.org/10.1063/1.555927). The properties reported in this paper for hexane are:

Hexane:

  • Gibbs free energy of formation: 0.28 kJ/mol
  • Enthalpy of formation: -167.04 kJ/mol
  • Standard molar entropy: 387.25 J/mol/K

The functions get_H and get_S produce values that are reasonably close:

Hexane:

  • get_H: -167.84 kJ/mol
  • get_S: 412.19 J/mol/K (the paper does an additional correction for symmetry, but it's close enough)

However, get_G produces an incorrect free energy of formation value:
get_G: -290.73 kJ/mol

I think this is because the get_G function is erroneously calculating the free energy of formation (delta_G) like this:

delta_G= delta_H- T*S

when it should be accounting for formation from the elements:

delta_G = delta_H- T*(S - Selements)

where Selements represents the sum of the contributions of the entropies of the elements according to Cox, J. D., Wagman, D. D., & Medvedev, V. A. (1989). CODATA key values for thermodynamics. Chem/Mats-Sci/E.

In the case of hexane, Selements = 949.2 J/mol/K, giving us:

delta_G = -167.84 kJ/mol - 298.15 K * (412.19 J/mol/K - 949.2 J/mol/K)/1000
delta_G = -7.7 kJ/mol

This agrees much more closely with the Domalski and Hearing value of 0.28 kJ/mol. If you ignore the entropy of the elements in the equation above, you instead obtain what is currently reported by get_G.

Check out the entropy function in the CHNOSZ package for R for obtaining entropy from the elements. e.g.:

entropy("C6H14") # for hexane

I used this function to quickly calculate Selements for this example. By default, it returns values in cal/mol/K.

Hope this helps!

We agree that to compute a Gibbs Free Energy of formation, one must include the entropy of formation of the elements to have a true deltaS in the equation deltaG = deltaH -T deltaS. This has generally not been required by our kinetics users since we always compute a deltaG across reactions such as between a transition state and an initial state or a final state and an initial state where the entropy of the elements is the same on the LHS and RHS of the equation canceling out.

Nonetheless, we see this as a useful addition to pGrAdd and have added functionality to the get_S, get_SoR, get_G, and get_GoRT methods that now allow you to specify the inclusion of the entropy of the elements in the options (S_elements=True) for these methods. The default will continue to be S_elements=None. I show an example (hexane as you show in your issue) in the GitHub readme. We have also added this to our pMuTT software.

This will appear in pGrAdd version >=2.9.5 which should be available sometime today. Thanks for contributing to our software project.