Welcome to QM-Thermodynamics’s documentation!

Ab initio calculation of an equation of state and thermodynamics of minerals

Thermodynamic properties, equation of state (3th or 4th-order Birch-Murnaghan EoS) and thermal expansion of crystal phases can be computed, along with their temperature and pressure dependence, by using the code here described, starting from data calculated at the ab initio quantum-mechanical (QM) level, which are essentially static energies (internal energies) and vibrational frequencies as functions of the unit cell volume.

Ab initio data are processed within the general framework of Statistical Thermodynamics, within the limit of the quasi-harmonic approximation (QHA).

Properties like:

  • bulk modulus, its pressure derivative and its thermal dependence;

  • thermal expansion and its temperature dependence;

  • specific heat (at constant pressure) and its temperature dependences;

  • entropy at the reference state (T=298.15K, P=1 bar)

can be computed from QM data, and can then be used to evaluate the Gibbs free energy at any temperature and pressure, by following algorithms equivalent to those implemented in the Perplex package .

Equilibria between mineral species (only end-members can be considered) can be evaluated starting from the thermodynamic data thus derived. Here is an example where the equilibrium between kyanite and andalusite has been determined in a P/T field: thermodynamics data for kyanite are computed at the QM level, whereas those for andalusite are from literature (Holland & Powell )


All of the properties are computed by constructing the Helmholtz free energy [F(V,T)] as a function of volume (V) and temperature (T). At any given T, F is fitted in a V range by a 3^order volume-integrated Birch-Murnaghan EoS (V-BM3). Results of the fitting are then used to compute all the possibles properties derivable from F.

The program can be loaded and run in a normal Python console as well as in any other environment like Spyder


Jupyter Notebooks or Jupyter Labs are convenient environments, too.

Other than the local PC, Jupyter Notebooks can also be viewed by using the viewer by inserting the location of the book; see the example here .

Once the notebook has been loaded in nbviewer, by clicking on the Execute on Binder button an image is created on the Binder site and the notebook is executed (though it may require some minutes to build the image and run it on the server).

Information about the input required to run the program can be found in the EoS tutorial , as well as in the sections Input file and required files on this site.

The github repository of the package can be found here .

The input files used in the EoS tutorial refer to the example on pyrope and can be found on Github . The notebook of such tutorial can also be view here , on the nbviewer site and, from there, compiled and interactively used on Binder (click on the Execute on Binder icon).

Contact and citation