davidkleiven / CEMC

DEPRECATED: Monte Carlo package targeted at systems studied with the Cluster Expansion.
MIT License
3 stars 2 forks source link

Parallel tempering #31

Open davidkleiven opened 6 years ago

davidkleiven commented 6 years ago

Improve exploration of the configurational space via parallel tempering. A good introduction

Earl, David J., and Michael W. Deem. 
"Parallel tempering: Theory, applications, and new perspectives." 
Physical Chemistry Chemical Physics 7.23 (2005): 3910-3916.

essentially the system can exchange replica between different temperatures. If a user anyways are interested in a range of temperatures, this approach should improve the accuracy without increasing the computational effort.

davidkleiven commented 6 years ago

To implement this one could create a new class

class ParallelTempering(object):

that takes minimum temperature, maximum temperature, number of temperature and a reference Montecarlo object as arguments. It makes copies of this Montecarlo and holds a list of such Montecarlo objects, one at each temperature.

davidkleiven commented 6 years ago

We should support automatic assignment of temperature (given a temperature range). One option is maybe iteratively solving Eq. (5) of the paper by Earl et al. starting from the highest temperature. When finding the temperatures, one can just do a very quick scan with not too many MC step to get an approximate value for the average energy.

davidkleiven commented 6 years ago

A first version has been implemented. Not tested with MPI.