def test_vasp_set_w_options(): parsed_args = parse_args(["vs", "--poscar", "POSCAR-tmp", "-t", "band", "-x", "pbesol", "-k", "4.2", "--potcar", "Mg_pv", "O_h", "--user_incar_settings", "LREAD", "F", "-d", "c", "--vasprun", "vasprun_1", "--outcar", "OUTCAR_1", "--options", "encut", "800", "--uniform_kpt_mode", "--file_transfer", "WAVECAR", "C", ]) expected = Namespace( poscar=Path("POSCAR-tmp"), task=Task.band, xc=Xc.pbesol, kpt_density=4.2, overridden_potcar=["Mg_pv", "O_h"], user_incar_settings=["LREAD", "F"], prev_dir=Path("c"), vasprun=Path("vasprun_1"), outcar=Path("OUTCAR_1"), options=["encut", "800"], uniform_kpt_mode=True, file_transfer_type=["WAVECAR", "C"], func=parsed_args.func, ) assert parsed_args == expected
def test_plot_dos_w_options(): parsed_args = parse_args(["pd", "--vasprun", "vasprun_1", "--outcar", "OUTCAR_1", "-t", "atoms", "-l", "False", "-c", "False", "--x_range", "-1.0", "1.0", "-y", "-5.0", "5.0", "--target", "1", "2", "--filename", "dos_1.pdf", "-b", "-1" ]) expected = Namespace( vasprun=Path("vasprun_1"), outcar=Path("OUTCAR_1"), type=AtomGroupingType.atoms, legend=False, crop_first_value=False, x_range=[-1.0, 1.0], y_max_ranges=[-5.0, 5.0], target=["1", "2"], filename="dos_1.pdf", base_energy=-1.0, func=parsed_args.func, ) assert parsed_args == expected
def test_get_poscars_wo_options(): parsed_args = parse_args(["gp", "-m", "mp-1234"]) # func is a pointer so need to point the same address. expected = Namespace(poscar="POSCAR", prior_info=Path("prior_info.yaml"), mpid="mp-1234", func=parsed_args.func) assert parsed_args == expected
def test_structure_info_w_options(): parsed_args = parse_args(["si", "-p", "a", "-s", "1", "-a", "2", "-c"]) expected = Namespace(poscar="a", symprec=1.0, angle_tolerance=2.0, show_conventional=True, func=parsed_args.func) assert parsed_args == expected
def test_structure_info_wo_options(): parsed_args = parse_args(["si"]) expected = Namespace(poscar="POSCAR", symprec=defaults.symmetry_length_tolerance, angle_tolerance=defaults.symmetry_angle_tolerance, show_conventional=False, func=parsed_args.func) assert parsed_args == expected
def test_band_edge_wo_options(): parsed_args = parse_args(["be"]) # func is a pointer so need to point the same address. expected = Namespace( vasprun=defaults.vasprun, outcar=defaults.outcar, func=parsed_args.func, ) assert parsed_args == expected
def test_get_poscars_w_options(): parsed_args = parse_args( ["get_poscar", "-p", "a", "-m", "123", "-pi", "b.yaml"]) expected = Namespace(poscar="a", prior_info=Path("b.yaml"), mpid="123", func=parsed_args.func) assert parsed_args == expected
def test_plot_absorption_wo_options(): parsed_args = parse_args(["pa"]) expected = Namespace(vasprun=defaults.vasprun, outcar=defaults.outcar, filename="absorption.pdf", y_ranges=[10**3, 10**8], calc_kk=False, ita=0.01, func=parsed_args.func) assert parsed_args == expected
def test_plot_band_wo_options(): parsed_args = parse_args(["pb"]) # func is a pointer so need to point the same address. expected = Namespace( vasprun=defaults.vasprun, kpoints_filename="KPOINTS", y_range=[-10.0, 10.0], filename="band.pdf", func=parsed_args.func, ) assert parsed_args == expected
def test_band_edge_w_options(): parsed_args = parse_args(["be", "--vasprun", "vasprun_1", "--outcar", "OUTCAR_1", ]) expected = Namespace( vasprun=Path("vasprun_1"), outcar=Path("OUTCAR_1"), func=parsed_args.func, ) assert parsed_args == expected
def test_plot_absorption_w_options(): parsed_args = parse_args([ "pa", "--vasprun", "vasprun_1", "--outcar", "OUTCAR_1", "-f", "a", "-y", "-5.0", "5.0", "-ckk", "-i", "0.1" ]) expected = Namespace(vasprun=Path("vasprun_1"), outcar=Path("OUTCAR_1"), filename="a", y_ranges=[10**-5.0, 10**5.0], calc_kk=True, ita=0.1, func=parsed_args.func) assert parsed_args == expected
def test_plot_dos_wo_options(): parsed_args = parse_args(["pd"]) # func is a pointer so need to point the same address. expected = Namespace( vasprun=defaults.vasprun, outcar=defaults.outcar, type=AtomGroupingType.non_equiv_sites, legend=True, crop_first_value=True, x_range=None, y_max_ranges=None, target=None, filename="dos.pdf", base_energy=None, func=parsed_args.func, ) assert parsed_args == expected
def test_plot_band_w_options(): parsed_args = parse_args(["pb", "--vasprun", "vasprun_1", "--kpoints", "KPOINTS_1", "--y_range", "-1.0", "1.0", "--filename", "band_1.pdf", ]) expected = Namespace( vasprun=Path("vasprun_1"), kpoints_filename="KPOINTS_1", y_range=[-1.0, 1.0], filename="band_1.pdf", func=parsed_args.func, ) assert parsed_args == expected
def test_vasp_set_wo_options(): parsed_args = parse_args(["vs"]) # func is a pointer so need to point the same address. expected = Namespace( poscar=Path("POSCAR"), task=defaults.task, xc=defaults.xc, kpt_density=None, overridden_potcar=defaults.overridden_potcar, user_incar_settings=None, prev_dir=None, vasprun=defaults.vasprun, outcar=defaults.outcar, options=None, uniform_kpt_mode=False, file_transfer_type=None, func=parsed_args.func, ) assert parsed_args == expected
def test_integration(tmpdir): tmpdir.chdir() os.chdir(tmpdir) tmpdir.join("vise.yaml").write(""" kpoint_density: 0.5 overridden_potcar: O_h dos_step_size: 0.01 band_mesh_distance: 0.25 str_opt_encut_factor: 1.5 ldauu: Mn: 10 ldaul: Mn: 4 potcar_set: mp user_incar_settings: ISPIN: 2 options: cutoff_energy: 1000 """) from vise.cli.main import parse_args tmpdir.join("POSCAR").write("""Mn1 O1 1.0 0.000000 2.123447 2.123447 2.123447 0.000000 2.123447 2.123447 2.123447 0.000000 Mn O 1 1 direct 0.000000 0.000000 0.000000 Mn 0.500000 0.500000 0.500000 O """) args = parse_args(["vs", "-t", "band"]) args.func(args) incar = tmpdir.join("INCAR") incar_expected = """# algorithm ALGO = Normal # accuracy PREC = Normal LREAL = False EDIFF = 1e-05 ENCUT = 1000 LASPH = True NELM = 100 # ionic relaxation ISIF = 0 IBRION = 2 NSW = 0 # occupation ISMEAR = 0 SIGMA = 0.1 # spin ISPIN = 2 # IO control LWAVE = False LCHARG = False # analyzer NBANDS = 23 LORBIT = 10 # hubbard u LDAU = True LDAUTYPE = 2 LMAXMIX = 4 LDAUPRINT = 1 LDAUL = 4 -1 LDAUU = 10 0 # parallel KPAR = 2""" assert incar.read() == incar_expected potcar = tmpdir.join("POTCAR") potcar_expected = """ PAW_PBE Mn_pv 02Aug2007 13.0000000000000 parameters from PSCTR are: VRHFIN =Mn: 3p4s3d TITEL = PAW_PBE Mn_pv 02Aug2007 POMASS = 54.938; ZVAL = 13.000 mass and valenz ENMAX = 269.864; ENMIN = 202.398 eV END of PSCTR-controll parameters PAW_PBE O_h 06Feb2004 6.00000000000000 parameters from PSCTR are: VRHFIN =O: s2p4 TITEL = PAW_PBE O_h 06Feb2004 POMASS = 16.000; ZVAL = 6.000 mass and valenz ENMAX = 700.000; ENMIN = 500.000 eV END of PSCTR-controll parameters """ assert potcar.read() == potcar_expected kpoints = tmpdir.join("KPOINTS") kpoints_expected = """k-path added by seekpath. Formula: MnO SG: 225 23 Reciprocal 0.00000000000000000 0.00000000000000000 0.00000000000000000 1 None 0.50000000000000000 0.00000000000000000 0.00000000000000000 4 None 0.50000000000000000 0.50000000000000000 0.00000000000000000 3 None 0.00000000000000000 0.00000000000000000 0.00000000000000000 0 GAMMA 0.12500000000000000 0.00000000000000000 0.12500000000000000 0 0.25000000000000000 0.00000000000000000 0.25000000000000000 0 0.37500000000000000 0.00000000000000000 0.37500000000000000 0 0.50000000000000000 0.00000000000000000 0.50000000000000000 0 X 0.62500000000000000 0.25000000000000000 0.62500000000000000 0 U 0.37500000000000000 0.37500000000000000 0.75000000000000000 0 K 0.29999999999999999 0.29999999999999999 0.59999999999999998 0 0.22500000000000001 0.22500000000000001 0.45000000000000001 0 0.14999999999999999 0.14999999999999999 0.29999999999999999 0 0.07500000000000001 0.07500000000000001 0.15000000000000002 0 0.00000000000000000 0.00000000000000000 0.00000000000000000 0 GAMMA 0.12500000000000000 0.12500000000000000 0.12500000000000000 0 0.25000000000000000 0.25000000000000000 0.25000000000000000 0 0.37500000000000000 0.37500000000000000 0.37500000000000000 0 0.50000000000000000 0.50000000000000000 0.50000000000000000 0 L 0.50000000000000000 0.41666666666666669 0.58333333333333337 0 0.50000000000000000 0.33333333333333337 0.66666666666666663 0 0.50000000000000000 0.25000000000000000 0.75000000000000000 0 W 0.50000000000000000 0.00000000000000000 0.50000000000000000 0 X """ assert kpoints.read() == kpoints_expected
def test_make_atom_poscars_w_options(): parsed_args = parse_args(["map", "-d", "a", "-e", "H", "He"]) expected = Namespace(dirname=Path("a"), elements=[Element.H, Element.He], func=parsed_args.func) assert parsed_args == expected
def test_make_atom_poscars_wo_options(): parsed_args = parse_args(["map"]) expected = Namespace(dirname=Path.cwd(), elements=None, func=parsed_args.func) assert parsed_args == expected