G()=stuff goes here
The program as I have written it, in Python, takes command line arguments + a datafile, and produces output files as requested.
Currently, it is tuned for predicting the Li capacity and performance of Li-ion battery anode materials, outputting things like: volume expansion, cell potential vs composition and specific capacity.
It is obviously limited to predicting phases for which you have the relevant thermodynamic data for, a pool of candidate structures.
There are two primary modes of operation:
At a given composition, the stable phases are given by the combination with the lowest energy. To obtain more useful information from this, all that is required is coming up with efficient and useful ways to loop over composition and tabulate the results. With this in mind, I have written functions which output binary and ternary phase diagrams as a list of data points. As an example, if I ask for the binary phase diagram of Si-Fe, I would get the following:
Here, each column is a single phase, and at a given Si-Fe ratio. For a ternary phase diagram, the compositions are specified by the amount of two of the three pure phases. At the moment, this only works for elemental alloys, but expanded functionality should be complete shortly.
In order to predict the cell potential of a Li-ion battery anode material, or the pressure at which H2 will go into a complex hydride, or the partial pressure of O2 required to form a particular phase, etc... it is necessary to define the chemical potential of a compound rather than the composition. This permits you to scan over pressure of gases, or electrical potentials of charge carrying species, to find useful and interesting properties.
There is no fundamental limit to the terms which can be included in the free energy. Entropic effects, magnetic moments, even mechanical strain could be incorporated. This is an incredibly powerful principle and these additional features are currently under development.
Absolutely! The attached version is likely already out of date, but I will try to keep it current, and feel free to ask me!
Especially if you want it to be adapted to a new problem, I would love to work with you to make it more robust and broadly applicable.