Ejemplo n.º 1
0
    def setUpClass(cls) -> None:
        # Set up parent calculator and image environment
        initial_structure = ase.io.read(
            "./relaxation_test_structures/Pt-NP.traj")
        initial_structure.set_calculator(EMT())

        # Run relaxation with the parent calc
        EMT_initial_structure = initial_structure.copy()
        cls.emt_counter = CounterCalc(EMT())
        EMT_initial_structure.set_calculator(cls.emt_counter)
        cls.EMT_structure_optim = Relaxation(EMT_initial_structure,
                                             BFGS,
                                             fmax=0.05,
                                             steps=100)
        cls.EMT_structure_optim.run(cls.emt_counter, "PtNP_emt")

        # Run relaxation with active learning
        OAL_initial_structure = initial_structure.copy()
        OAL_initial_structure.set_calculator(EMT())
        OAL_relaxation = Relaxation(OAL_initial_structure,
                                    BFGS,
                                    fmax=0.05,
                                    steps=30,
                                    maxstep=0.04)
        cls.OAL_learner, cls.OAL_structure_optim = run_online_al(
            OAL_relaxation, [OAL_initial_structure], "PtNP_oal", EMT())

        # Retain images of the final structure from both relaxations
        cls.EMT_image = cls.EMT_structure_optim.get_trajectory("PtNP_emt")[-1]
        cls.EMT_image.set_calculator(EMT())
        cls.OAL_image = cls.OAL_structure_optim.get_trajectory("PtNP_oal")[-1]
        cls.OAL_image.set_calculator(EMT())
        cls.description = "PtNP"
        return super().setUpClass()
Ejemplo n.º 2
0
    def setUpClass(cls) -> None:
        initial_structure = Icosahedron("Cu", 2)
        initial_structure.rattle(0.1)
        initial_structure.set_pbc(True)
        initial_structure.set_cell([20, 20, 20])

        EMT_initial_structure = initial_structure.copy()
        parent_calc = EMT()
        cls.emt_counter = CounterCalc(parent_calc)
        EMT_initial_structure.set_calculator(cls.emt_counter)
        cls.EMT_structure_optim = Relaxation(
            EMT_initial_structure, BFGS, fmax=0.01, steps=30
        )
        cls.EMT_structure_optim.run(cls.emt_counter, "CuNP_emt")

        offline_initial_structure = compute_with_calc(
            [initial_structure.copy()], parent_calc
        )[0]
        Offline_relaxation = Relaxation(
            offline_initial_structure, BFGS, fmax=0.01, steps=30, maxstep=0.05
        )
        cls.offline_learner, cls.trained_calc, cls.Offline_traj = run_offline_al(
            Offline_relaxation,
            [offline_initial_structure],
            "CuNP_offline_al",
            parent_calc,
        )
        cls.EMT_image = cls.EMT_structure_optim.get_trajectory("CuNP_emt")[-1]
        cls.EMT_image.set_calculator(parent_calc)
        cls.offline_final_structure_AL = cls.Offline_traj[-1]
        cls.offline_final_structure_AL.set_calculator(cls.trained_calc)
        cls.offline_final_structure_EMT = cls.Offline_traj[-1]
        cls.offline_final_structure_EMT.set_calculator(parent_calc)
        cls.description = "CuNP"
        return super().setUpClass()
Ejemplo n.º 3
0
    def setUpClass(cls) -> None:
        # Set up parent calculator and image environment
        initial_structure = Icosahedron("Cu", 2)
        initial_structure.rattle(0.1)
        initial_structure.set_pbc(True)
        initial_structure.set_cell([20, 20, 20])

        # Run relaxation with the parent calc
        EMT_initial_structure = initial_structure.copy()
        cls.emt_counter = CounterCalc(EMT())
        EMT_initial_structure.set_calculator(cls.emt_counter)
        cls.EMT_structure_optim = Relaxation(EMT_initial_structure,
                                             BFGS,
                                             fmax=FORCE_THRESHOLD,
                                             steps=30)
        cls.EMT_structure_optim.run(cls.emt_counter, "CuNP_emt")

        # Run relaxation with active learning
        chemical_formula = initial_structure.get_chemical_formula()
        al_config = cls.get_al_config()
        al_config["links"]["traj"] = "CuNP_emt.traj"
        cls.oal_results_dict = active_learning(al_config)
        dbname = (str(al_config["links"]["ml_potential"]) + "_" +
                  str(chemical_formula) + "_oal")
        cls.OAL_image = Trajectory(dbname + ".traj")[-1]
        cls.OAL_image.set_calculator(EMT())

        # Retain images of the final structure from both relaxations
        cls.EMT_image = cls.EMT_structure_optim.get_trajectory("CuNP_emt")[-1]
        cls.EMT_image.set_calculator(EMT())
        cls.description = "CuNP"
        return super().setUpClass()
Ejemplo n.º 4
0
    def setUpClass(cls) -> None:
        # Set up parent calculator and image environment
        initial_structure = Icosahedron("Cu", 2)
        initial_structure.rattle(0.1)
        initial_structure.set_pbc(True)
        initial_structure.set_cell([20, 20, 20])

        # Run relaxation with the parent calc
        EMT_initial_structure = initial_structure.copy()
        cls.emt_counter = CounterCalc(EMT())
        EMT_initial_structure.set_calculator(cls.emt_counter)
        cls.EMT_structure_optim = Relaxation(
            EMT_initial_structure, BFGS, fmax=FORCE_THRESHOLD, steps=30
        )
        cls.EMT_structure_optim.run(cls.emt_counter, "CuNP_emt")

        # Run relaxation with active learning
        OAL_initial_structure = initial_structure.copy()
        OAL_initial_structure.set_calculator(EMT())
        OAL_relaxation = Relaxation(
            OAL_initial_structure, BFGS, fmax=0.05, steps=100, maxstep=0.04
        )
        cls.OAL_learner, cls.OAL_structure_optim = run_online_al(
            OAL_relaxation,
            [],
            ["Cu"],
            "CuNP_oal",
            CounterCalc(EMT()),
        )

        # Retain images of the final structure from both relaxations
        cls.EMT_image = cls.EMT_structure_optim.get_trajectory("CuNP_emt")[-1]
        cls.EMT_image.set_calculator(EMT())
        cls.OAL_image = cls.OAL_structure_optim.get_trajectory("CuNP_oal")[-1]
        cls.OAL_image.set_calculator(EMT())
        cls.description = "CuNP"
        return super().setUpClass()
Ejemplo n.º 5
0
    def setUpClass(cls) -> None:
        cls.emt_counter = CounterCalc(EMT())
        ml2relax = True
        cls.total_neb_images = 5
        intermediate_images = 3
        iter = 7
        initial, final = construct_geometries(parent_calc=cls.emt_counter,
                                              ml2relax=ml2relax)
        images = [initial, final]
        cls.EMT_neb = NEBcalc(images)

        cls.EMT_neb.run(cls.emt_counter, filename="emt_neb")

        initial1, final1 = construct_geometries(parent_calc=EMT(),
                                                ml2relax=ml2relax)
        images_neb = [initial1, final1]
        cls.neb_AL_learner = offline_neb(images_neb, EMT(), iter,
                                         intermediate_images)
        cls.saddle_pt = int(cls.total_neb_images / 2)
        cls.neb_AL_image = read("example_iter_" + str(iter) + ".traj@" +
                                str(-cls.saddle_pt))
        cls.description = "CuC_NEB"
        return super().setUpClass()