Example #1
0
    def test_heat_capacity_2D(self):
        self.bdim = 2
        self.ndim = self.natoms * self.bdim
        self.origin = np.zeros(self.ndim)
        self.potential = Harmonic(self.origin,
                                  self.k,
                                  bdim=self.bdim,
                                  com=False)

        print "2D"
        for T in self.temperatures:

            mcrunner = Metropolis_MCrunner(self.potential,
                                           self.origin,
                                           T,
                                           self.stepsize,
                                           self.niter,
                                           hEmax=100,
                                           adjustf=self.adjustf,
                                           adjustf_niter=self.adjust_niter,
                                           radius=self.radius,
                                           bdim=self.bdim)
            #MCMC
            mcrunner.run()
            #collect the results
            binenergy, hist, mean, variance = mcrunner.get_histogram()

            cv = variance / (T * T)
            cv_true = self.natoms * self.bdim / 2.0

            print cv, cv_true

            self.assertLess(abs(cv - cv_true), self.tolerance,
                            'failed for temperature {}, cv = {}'.format(T, cv))
Example #2
0
 def setUp(self):
     self.natoms = 4
     self.k = 1
     self.Emax = 2  #this choice is fundamentally arbitrary, it's only used to generate the initial configuration
     #self.temperatures = [0.2,0.27,0.362,0.487,0.65,0.88,1.18,1.6]
     self.temperatures = [0.2, 0.362, 0.65, 1.18]
     self.stepsize = 1
     self.niter = 2e6
     self.adjustf = 0.9
     self.adjust_niter = 0.3 * self.niter
     self.radius = 1e10
     self.tolerance = 2e-1
     self.bdim = 3
     self.ndim = self.natoms * self.bdim
     self.origin = np.zeros(self.ndim)
     self.seeds = dict(takestep=42, metropolis=44)
     self.potential = Harmonic(self.origin,
                               self.k,
                               bdim=self.bdim,
                               com=False)
     self.mcrunner = Metropolis_MCrunner(self.potential,
                                         self.origin,
                                         1,
                                         self.stepsize,
                                         self.niter,
                                         hEmax=100,
                                         adjustf=self.adjustf,
                                         adjustf_niter=self.adjust_niter,
                                         radius=self.radius,
                                         bdim=self.bdim,
                                         single=False,
                                         seeds=self.seeds)
Example #3
0
    def test_heat_capacity_2D_com(self):
        self.bdim = 2
        self.ndim = self.natoms * self.bdim
        self.origin = np.zeros(self.ndim)
        potential = Harmonic(self.origin, self.k, bdim=self.bdim, com=True)
        #self.start_coords = vector_random_uniform_hypersphere(self.ndim) * np.sqrt(2*self.Emax) #coordinates sampled from Pow(ndim)

        print "2D com"
        for T in self.temperatures:

            mcrunner = Metropolis_MCrunner(potential,
                                           self.origin,
                                           T,
                                           self.stepsize,
                                           self.niter,
                                           hEmax=100,
                                           adjustf=self.adjustf,
                                           adjustf_niter=self.adjust_niter,
                                           radius=self.radius,
                                           bdim=self.bdim)
            #MCMC
            mcrunner.run()
            #collect the results
            binenergy, hist, mean, variance = mcrunner.get_histogram()

            cv = variance / (T * T)
            cv_true = (self.natoms - 1) * self.bdim / 2.0

            print cv, cv_true

            self.assertLess(abs(cv - cv_true), self.tolerance,
                            'failed for temperature {}, cv = {}'.format(T, cv))
Example #4
0
    natoms = 4
    bdim = 3
    k = 1
    origin = np.zeros(natoms * bdim)
    potential = Harmonic(origin, k, bdim=bdim, com=False)
    path = args.base_directory

    #Parallel Tempering
    temperature = 1.0
    stepsize = 1
    niter = 1e4
    mcrunner = Metropolis_MCrunner(potential,
                                   origin,
                                   temperature,
                                   stepsize,
                                   niter,
                                   hEmax=100,
                                   adjustf=0.9,
                                   adjustf_niter=3000,
                                   radius=100000,
                                   seeds=dict(metropolis=44, takestep=42))
    ptrunner = MPI_PT_RLhandshake(mcrunner,
                                  0.2,
                                  1.6,
                                  max_ptiter=501,
                                  pfreq=10,
                                  base_directory=path,
                                  verbose=False,
                                  suppress_histogram=False)
    ptrunner.run()