예제 #1
0
    def setUp(self):
        nmin = 10
        natoms = 13

        sys = LJCluster(natoms)

        pot = sys.get_potential()
        mindist = sys.get_mindist()

        db = create_random_database(nmin=nmin,
                                    natoms=natoms,
                                    nts=old_div(nmin, 2))
        min1, min2 = list(db.minima())[:2]

        self.db = db
        self.natoms = natoms
        self.connect = DoubleEndedConnect(min1,
                                          min2,
                                          pot,
                                          mindist,
                                          db,
                                          merge_minima=True,
                                          max_dist_merge=1e100)
        #        for ts in db.transition_states():
        #            self.add_ts(ts.energy, ts.coords,
        #                        ts.minimum1.energy, ts.minimum1.coords,
        #                        ts.minimum2.energy, ts.minimum2.coords)
        for m in db.minima():
            self.connect.dist_graph.addMinimum(m)
예제 #2
0
    def get_double_ended_connect(self, min1, min2, database, **kwargs):
        """return a DoubleEndedConnect object
    
        See Also
        --------
        pele.landscape
        """
        kwargs = dict_copy_update(self.params["double_ended_connect"], kwargs)
        pot = self.get_potential()
        mindist = self.get_mindist()

        # attach the function which orthogonalizes to known zero eigenvectors.
        # This is amazingly ugly
        # vr: yea, we should polish this parameters stuff and give create policies instead!
        try:
            kwargs["local_connect_params"]["tsSearchParams"]["orthogZeroEigs"]
        except KeyError:
            if "local_connect_params" in kwargs:
                lcp = kwargs["local_connect_params"]
            else:
                lcp = kwargs["local_connect_params"] = BaseParameters()

            if "tsSearchParams" in lcp:
                tssp = lcp["tsSearchParams"]
            else:
                tssp = lcp["tsSearchParams"] = BaseParameters()

            if not "orthogZeroEigs" in tssp:
                tssp[
                    "orthogZeroEigs"] = self.get_orthogonalize_to_zero_eigenvectors(
                    )

        try:
            kwargs["local_connect_params"]["pushoff_params"]["quench"]
        except Exception:
            if not "pushoff_params" in kwargs["local_connect_params"]:
                kwargs["local_connect_params"][
                    "pushoff_params"] = BaseParameters()
            kwargs["local_connect_params"]["pushoff_params"][
                "quench"] = self.get_minimizer()

        return DoubleEndedConnect(min1, min2, pot, mindist, database, **kwargs)
예제 #3
0
    def test2(self):
        from pele.storage import Database
        from pele.systems import LJCluster
        np.random.seed(0)

        natoms = 13
        system = LJCluster(natoms)
        pot = system.get_potential()
        mindist = system.get_mindist(niter=1)
        
        db = Database()
        db.addMinimum(pot.getEnergy(_x1), _x1)
        db.addMinimum(pot.getEnergy(_x2), _x2)
        m1, m2 = db.minima()
        
        connect = DoubleEndedConnect(m1, m2, pot, mindist, db, verbosity=10)
        connect.connect()
        self.assertTrue(connect.success())
        
        path = connect.returnPath()
예제 #4
0
    tsSearchParams["nfail_max"] = 200

    NEBquenchParams = dict()
    NEBquenchParams["iprint"] = 100

    NEBparams = dict()
    NEBparams["k"] = 5.
    NEBparams["image_density"] = 15
    NEBparams["NEBquenchParams"] = NEBquenchParams

    local_connect_params = dict()
    local_connect_params["tsSearchParams"] = tsSearchParams
    local_connect_params["NEBparams"] = NEBparams

myconnect = DoubleEndedConnect(min1, min2, pot, mindist, database,
                               local_connect_params=local_connect_params,
)

if (myconnect.graph.areConnected(min1, min2)):
    print "ALERT: The minima are already connected in the database file", dbfile
    print "       Delete it for a fresh run."

myconnect.connect()
print ""
print "found a path!"



# the path is now saved in the database.  Lets retrieve it and 
# print it in a more visual format
# now retrieve the path for printing