Example #1
0
def nebtest(MyNEB=NEB, nimages=22):
    import pylab as pl
    from interpolate import InterpolatedPath
    from pygmin import defaults
    from pygmin.optimize import lbfgs_py
    defaults.NEBquenchRoutine = lbfgs_py
    defaults.NEBquenchParams["iprint"]=1
    defaults.NEBquenchParams["debug"]=True
    defaults.NEBquenchParams["maxErise"]=0.1
    
    x = np.arange(.5, 5., .05)
    y = np.arange(.5, 5., .05)
    z = np.zeros([len(x), len(y)])
    potential = test.leps()
    for i in range(0, len(x)):
        for j in range(0, len(y)):
                z[j, i] = potential.getEnergy([x[i], y[j]])
    print "done"
    #z[z>0.] = 0.
    #pl.imshow(z)
    #pl.show()
    initial = np.array([.75, 2.]) #np.random.random(3)
    final = np.array([2., .75]) #np.random.random(3)
#    from pygmin.optimize import quench
#    print "quench initial"
#    ret = quench.lbfgs_py(initial, potential.getEnergyGradient)
#    initial = ret[0]
#    print "quench final"
#    ret = quench.quench(final, potential.getEnergyGradient)
#    final = ret[0]
#    print "done with quenching"
#    print initial, final
    #print "Initial: ", initial
    #print "Final: ", final
    #pl.imshow(z)

    neb = MyNEB(InterpolatedPath(initial, final, nimages) ,potential, k=1000, dneb=False)
    tmp = neb.coords
    energies_interpolate = neb.energies.copy()
    pl.figure()
    pl.subplot(2,2,1)
    pl.subplots_adjust(wspace=0.3, left=0.05, right=0.95, bottom = 0.14)

    pl.title("path")
    #pl.contourf(x, y, z)
    pl.pcolor(x, y, z, vmax=-0.5, cmap=pl.cm.PuBu)
    pl.colorbar()
    pl.plot(tmp[:, 0], tmp[:, 1], 'ko-')
    print "optimizing NEB"
    neb.optimize()#quenchRoutine=quench.fire)
    print "done"
    tmp = neb.coords
    pl.plot(tmp[:, 0], tmp[:, 1], 'ro-')
    pl.xlabel("x")
    pl.ylabel("y")
    pl.axis(xmin=0.5, xmax=2.5, ymin=0.5, ymax=2.5)

    pl.subplot(1,2,2)
    pl.title("energy")
    pl.plot(energies_interpolate, 'ko-', label="interpolate")
    pl.plot(neb.energies, 'ro-', label="neb")
    pl.xlabel("image")
    pl.ylabel("energy")
    pl.legend(loc='best')
    
    pl.subplot(1,2,2)
    pl.title("energy")
    pl.plot(energies_interpolate, 'ko-', label="interpolate")
    pl.plot(neb.energies, 'ro-', label="neb")
    pl.xlabel("image")
    pl.ylabel("energy")
    pl.legend(loc='best')
    pl.show()
Example #2
0
        self.potential = potential
        self.trajectory=[]
    
    def getEnergyGradient(self, x):
        self.trajectory.append(x)
        return self.potential.getEnergyGradient(x)
    
    def getEnergy(self, x):
        return self.potential.getEnergy(x)
    
if __name__ == "__main__":
    import pylab as pl
    x = np.arange(.5, 5., .05)
    y = np.arange(.5, 5., .05)
    z = np.zeros([len(x), len(y)])
    potential = potwrap(test.leps())
    for i in range(0, len(x)):
        for j in range(0, len(y)):
                z[j, i] = potential.getEnergy([x[i], y[j]])
    x0 = np.array([.75, 1.5]) #np.random.random(3)
    #final = np.array([2., .75]) #np.random.random(3)

    pl.pcolor(x, y, z, vmax=-0.5, cmap=pl.cm.PuBu)
    tau=np.array([0.5,-1.])#np.random.random(2)-0.5
    x1 = x0 + 0.1*tau
    pl.plot([x0[0], x1[0]], [x0[1], x1[1]])
    ret = findTransitionState_dimer(x0, potential, tau)
    x0 = ret.coords
    tau=ret.eigenvec
    E = ret.energy
    x1 = x0 + 0.1*tau
Example #3
0
def nebtest(MyNEB=NEB, nimages=22):
    import pylab as pl
    from interpolate import InterpolatedPath
    from pygmin.optimize import lbfgs_py
    NEBquenchParams = dict()
    NEBquenchParams["iprint"] = 20
    NEBquenchParams["debug"] = True
    NEBquenchParams["maxErise"] = 0.1

    x = np.arange(.5, 5., .05)
    y = np.arange(.5, 5., .05)
    z = np.zeros([len(x), len(y)])
    potential = test.leps()
    for i in range(0, len(x)):
        for j in range(0, len(y)):
            z[j, i] = potential.getEnergy([x[i], y[j]])
    print "done"
    #z[z>0.] = 0.
    #pl.imshow(z)
    #pl.show()
    initial = np.array([.75, 2.])  #np.random.random(3)
    final = np.array([2., .75])  #np.random.random(3)
    #    from pygmin.optimize import quench
    #    print "quench initial"
    #    ret = quench.lbfgs_py(initial, potential.getEnergyGradient)
    #    initial = ret[0]
    #    print "quench final"
    #    ret = quench.quench(final, potential.getEnergyGradient)
    #    final = ret[0]
    #    print "done with quenching"
    #    print initial, final
    #print "Initial: ", initial
    #print "Final: ", final
    #pl.imshow(z)

    neb = MyNEB(InterpolatedPath(initial, final, nimages),
                potential,
                k=1000,
                dneb=False,
                quenchParams=NEBquenchParams)
    tmp = neb.coords
    energies_interpolate = neb.energies.copy()
    pl.figure()
    pl.subplot(2, 2, 1)
    pl.subplots_adjust(wspace=0.3, left=0.05, right=0.95, bottom=0.14)

    pl.title("path")
    #pl.contourf(x, y, z)
    pl.pcolor(x, y, z, vmax=-0.5, cmap=pl.cm.PuBu)
    pl.colorbar()
    pl.plot(tmp[:, 0], tmp[:, 1], 'ko-')
    print "optimizing NEB"
    neb.optimize()  #quenchRoutine=quench.fire)
    print "done"
    tmp = neb.coords
    pl.plot(tmp[:, 0], tmp[:, 1], 'ro-')
    pl.xlabel("x")
    pl.ylabel("y")
    pl.axis(xmin=0.5, xmax=2.5, ymin=0.5, ymax=2.5)

    pl.subplot(1, 2, 2)
    pl.title("energy")
    pl.plot(energies_interpolate, 'ko-', label="interpolate")
    pl.plot(neb.energies, 'ro-', label="neb")
    pl.xlabel("image")
    pl.ylabel("energy")
    pl.legend(loc='best')

    pl.subplot(1, 2, 2)
    pl.title("energy")
    pl.plot(energies_interpolate, 'ko-', label="interpolate")
    pl.plot(neb.energies, 'ro-', label="neb")
    pl.xlabel("image")
    pl.ylabel("energy")
    pl.legend(loc='best')
    pl.show()