free energy function