Add thermodynamic potentials

Not ready to be merged. Opening for comments/suggestions.
Awesome, thanks!