コード例 #1
0
def test_actual_vasp_files(test_data_files: Path):
    vasprun_file = str(test_data_files / "MgO_dos_vasprun.xml")
    vasprun = Vasprun(vasprun_file)
    dos_data = DosDataFromVasp(vasprun, base_energy=1,
                               vertical_lines=[0.0]).make_dos_data()
    plot_data = dos_data.dos_plot_data({"Mg": [0], "O": [1]})
    plotter = DosPlotter(plot_data)
    plotter.construct_plot()
    plotter.plt.show()
コード例 #2
0
def plot_dos(args: Namespace):
    vasprun = Vasprun(args.vasprun)
    outcar = Outcar(args.outcar)
    band_edge = VaspBandEdgeProperties(vasprun, outcar)

    if band_edge.band_gap:
        vertical_lines = [band_edge.vbm_info.energy, band_edge.cbm_info.energy]
    else:
        vertical_lines = [vasprun.efermi]

    if args.base_energy is None:
        base = vertical_lines[0]
    else:
        base = args.base_energy

    dos_data_from_vasp = \
        DosDataFromVasp(vasprun, vertical_lines, base, args.crop_first_value)
    dos_data = dos_data_from_vasp.make_dos_data()

    ylim_set = None
    if args.y_max_ranges:
        if dos_data.spin:
            ylim_set = [[-y_max, y_max] for y_max in args.y_max_ranges]
        else:
            ylim_set = [[0, y_max] for y_max in args.y_max_ranges]

    structure = vasprun.final_structure
    grouped_atom_indices = args.type.grouped_atom_indices(
        structure, args.target)
    logger.info(f"Grouped atom indices: {grouped_atom_indices}")
    plot_data = dos_data.dos_plot_data(grouped_atom_indices,
                                       xlim=args.x_range,
                                       ylim_set=ylim_set)
    plot_data.to_json_file()
    plotter = DosPlotter(plot_data, args.legend)
    plotter.construct_plot()
    plotter.plt.savefig(args.filename, format="pdf")
コード例 #3
0
def vasp_dos_data_energy_window(mocker):
    stub_vasprun = mocker.Mock(spec=Vasprun)
    stub_vasprun.complete_dos = CompleteDos(None, total_dos, pdoses)
    return DosDataFromVasp(stub_vasprun,
                           crop_first_value=True,
                           energy_window=[0.1, 1.1]).make_dos_data()
コード例 #4
0
def vasp_dos_data_crop_first_value(mocker):
    stub_vasprun = mocker.Mock(spec=Vasprun)
    stub_vasprun.complete_dos = CompleteDos(None, total_dos, pdoses)
    return DosDataFromVasp(stub_vasprun, crop_first_value=True).make_dos_data()
コード例 #5
0
def dos_data_from_vasp(mocker):
    stub_vasprun = mocker.Mock(spec=Vasprun)
    stub_vasprun.complete_dos = CompleteDos(None, total_dos, pdoses)
    return DosDataFromVasp(stub_vasprun).make_dos_data()