Modify finite temp_analysis.py to evaluate free energy differences.
Modify finite temp_analysis.py to evaluate free energy differences.

This amounts to integrating an appropriately defined function wrt
time/temperature depending on which variant of DMQMC is used:

    F_xc ~ k_B T int_{0}^{beta} dtau' (Tr[drho(tau)/dtau]/Tr[rho])

We can estimate the value to the integral by using estimates for the
integrand averaged over multiple simulations as is usually done for the
rest of the estimates. Evaluating the error in the same fashion by usual
error propagation is however biased due to not taking into account
temporal correlations from a single simulations. This usually leads to
a large over estimation of the error for the free energy. Trying to
directly measure the temporal correlations is difficult so it is best to
find a different route to estimate the error where everything is
statistically independent.

To do this we estimate the error from the variance of the integral
evaluated from each simulation. This is slightly dodgy but tends to lead
to an accurate estimate for the error provided
Tr[drho(tau)/dtau]/Tr[rho] from a single simulation is a decent estimate
to the average value for a given simulation, which is usually true for
higher temperatures and with larger walker numbers. This has been
verified by comparing to exact digitalisation and CPIMC results for
larger systems. This is a practical solution not an ideal one.

hande-qmc/hande,hande-qmc/hande,hande-qmc/hande,hande-qmc/hande,ruthfranklin/hande,hande-qmc/hande