def test_vasp_poscar_setup_no_poscar(self): compare_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure", "POSCAR_perfect")) myvc = VaspChecker(name="childdir", structure=compare_pos.structure) self.assertFalse(os.path.isfile(os.path.join(testdir, "childdir", "POSCAR"))) myvc._vasp_poscar_setup() mypos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "childdir", "POSCAR")) self.assertEqual(mypos.structure, compare_pos.structure)
def test_vasp_poscar_setup_no_poscar(self): compare_pos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "structure", "POSCAR_perfect")) myvc = VaspChecker(name="childdir", structure=compare_pos.structure) self.assertFalse( os.path.isfile(os.path.join(testdir, "childdir", "POSCAR"))) myvc._vasp_poscar_setup() mypos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "childdir", "POSCAR")) self.assertEqual(mypos.structure, compare_pos.structure)
def test_add_selective_dynamics(self): mystruc = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure", "POSCAR_Al")).structure myvc = VaspChecker(name="childdir", structure=mystruc) myvc._vasp_poscar_setup() sdarr = np.zeros([4, 3], bool) sdarr[0][0] = True sdarr[1][1] = True sdarr[2][2] = True sdarr[3][0] = True sdarr[3][1] = True myvc.add_selective_dynamics_to_structure_file(sdarr) after_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "childdir", "POSCAR")) compare_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure", "POSCAR_Al_sd")) self.assertEqual(after_pos.structure, compare_pos.structure) self.assertEqual(after_pos.selective_dynamics, compare_pos.selective_dynamics)
def test_vasp_incar_setup(self): my_structure = pymatgen.io.vaspio.Poscar.from_file("structure/POSCAR_LNO").structure kdict = dict() kdict["mast_xc"] = "pw91" kdict["mast_pp_setup"] = {"La": "La", "Ni": "Ni_pv", "O": "O_s"} kdict["IBRION"] = 3 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) mypos = myvc._vasp_poscar_setup() mypot = myvc._vasp_potcar_setup(mypos) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_notags")) self.assertEqual(myincar, incar_compare) # kdict["ENCUT"] = 100 kdict["mast_multiplyencut"] = 1.1 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_encut")) self.assertEqual(myincar, incar_compare) # kdict.pop("ENCUT") myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_multiply_110")) self.assertEqual(myincar, incar_compare) # kdict.pop("mast_multiplyencut") kdict["mast_charge"] = -2 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_charge_neg")) self.assertEqual(myincar, incar_compare) # kdict["mast_charge"] = 2 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_charge_pos")) self.assertEqual(myincar, incar_compare) # kdict.pop("mast_charge") kdict["mast_setmagmom"] = "3 5 2" myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_setmagmom")) self.assertEqual(myincar, incar_compare) # kdict[ "mast_setmagmom" ] = "-1 -2 3 1 2 3 1 2 7 8 7 8 7 8 7 8 5 4 3 2 1 1 2 3 4 5 -5 -4 -3 -2 -1 1 2 3 4 5 4 4 4 -4" myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file(os.path.join(testdir, "files", "INCAR_setmagmom_indiv")) self.assertEqual(myincar, incar_compare)
def test_vasp_poscar_setup_mast_coordinates(self): kdict = dict() kdict["mast_coordinates"] = ["structure/POSCAR_coordinates"] # note that the input is a list of strings myvc = VaspChecker(name="childdir", program_keys=kdict) perf_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure", "POSCAR_perfect")) perf_pos.write_file(os.path.join(testdir, "childdir", "POSCAR")) coord_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure", "POSCAR_coordinates")) grafted_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure", "POSCAR_grafted")) mypos = myvc._vasp_poscar_setup() self.assertEqual(mypos.structure, grafted_pos.structure)
def test_add_selective_dynamics(self): mystruc = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "structure", "POSCAR_Al")).structure myvc = VaspChecker(name="childdir", structure=mystruc) myvc._vasp_poscar_setup() sdarr = np.zeros([4, 3], bool) sdarr[0][0] = True sdarr[1][1] = True sdarr[2][2] = True sdarr[3][0] = True sdarr[3][1] = True myvc.add_selective_dynamics_to_structure_file(sdarr) after_pos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "childdir", "POSCAR")) compare_pos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "structure", "POSCAR_Al_sd")) self.assertEqual(after_pos.structure, compare_pos.structure) self.assertEqual(after_pos.selective_dynamics, compare_pos.selective_dynamics)
def test_vasp_poscar_setup_mast_coordinates(self): kdict = dict() kdict['mast_coordinates'] = [ "structure/POSCAR_coordinates" ] #note that the input is a list of strings myvc = VaspChecker(name="childdir", program_keys=kdict) perf_pos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "structure", "POSCAR_perfect")) perf_pos.write_file(os.path.join(testdir, "childdir", "POSCAR")) coord_pos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "structure", "POSCAR_coordinates")) grafted_pos = pymatgen.io.vaspio.Poscar.from_file( os.path.join(testdir, "structure", "POSCAR_grafted")) mypos = myvc._vasp_poscar_setup() self.assertEqual(mypos.structure, grafted_pos.structure)
def test_vasp_incar_setup(self): my_structure = pymatgen.io.vaspio.Poscar.from_file( "structure/POSCAR_LNO").structure kdict = dict() kdict['mast_xc'] = "pw91" kdict['mast_pp_setup'] = {'La': 'La', 'Ni': 'Ni_pv', 'O': 'O_s'} kdict['IBRION'] = 3 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) mypos = myvc._vasp_poscar_setup() mypot = myvc._vasp_potcar_setup(mypos) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_notags")) self.assertEqual(myincar, incar_compare) # kdict['ENCUT'] = 100 kdict['mast_multiplyencut'] = 1.1 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_encut")) self.assertEqual(myincar, incar_compare) # kdict.pop("ENCUT") myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_multiply_110")) self.assertEqual(myincar, incar_compare) # kdict.pop("mast_multiplyencut") kdict["mast_charge"] = -2 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_charge_neg")) self.assertEqual(myincar, incar_compare) # kdict["mast_charge"] = 2 myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_charge_pos")) self.assertEqual(myincar, incar_compare) # kdict.pop("mast_charge") kdict["mast_setmagmom"] = "3 5 2" myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_setmagmom")) self.assertEqual(myincar, incar_compare) # kdict[ "mast_setmagmom"] = "-1 -2 3 1 2 3 1 2 7 8 7 8 7 8 7 8 5 4 3 2 1 1 2 3 4 5 -5 -4 -3 -2 -1 1 2 3 4 5 4 4 4 -4" myvc = VaspChecker(name="childdir", program_keys=kdict, structure=my_structure) myvc._vasp_incar_setup(mypot, mypos) myincar = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "childdir", "INCAR")) incar_compare = pymatgen.io.vaspio.Incar.from_file( os.path.join(testdir, "files", "INCAR_setmagmom_indiv")) self.assertEqual(myincar, incar_compare)