Ejemplo n.º 1
0
def dos_graph_soc(rawdatadir, savedir):
    dosrun = Vasprun("{}/vasprun.xml".format(rawdatadir),
                     soc=True,
                     parse_dos=True)
    dos = dosrun.complete_dos

    orbitals = {
        "s": Orbital.s,
        "p_y": Orbital.py,
        "p_z": Orbital.pz,
        "p_x": Orbital.px,
        "d_xy": Orbital.dxy,
        "d_yz": Orbital.dyz,
        "d_z2-r2": Orbital.dz2,
        "d_xz": Orbital.dxz,
        "d_x2-y2": Orbital.dx2
    }
    spinor_component = {
        "mtot": SpinNonCollinear.mtot,
        "mx": SpinNonCollinear.mx,
        "my": SpinNonCollinear.my,
        "mz": SpinNonCollinear.mz
    }

    for m in spinor_component:
        dosplot = DosPlotter()
        if m == "mtot":
            dosplot.add_dos("Total DOS with SOC", dos.tdos)
        dosplot.add_dos_dict(dos.get_element_dos())
        plt = dosplot.get_plot(xlim=[-3, 3],
                               soc=True,
                               spinor_component=spinor_component[m],
                               element_colors=True)
        plt.grid()
        plt.savefig("{}/DOSGraph_{}_{}".format(savedir, m,
                                               "DOS by Element with SOC"))
        plt.close()

    for m in spinor_component:
        dosplot = DosPlotter()
        if m == "mtot":
            dosplot.add_dos("Total DOS with SOC", dos.tdos)
        dosplot.add_dos_dict(dos.get_orbital_dos())
        plt = dosplot.get_plot(xlim=[-3, 3],
                               soc=True,
                               spinor_component=spinor_component[m])
        plt.grid()
        plt.savefig("{}/DOSGraph_{}_{}".format(savedir, m,
                                               "DOS by Orbital with SOC"))
        plt.close()

    # Get detailed info about band gap (source: vasprun.xml)
    dos_graph_soc.e_fermi = float(dosrun.efermi)
    dos_graph_soc.electronic_gap = \
        dosrun.tdos.get_gap_alt(xlim=[-3,3],e_fermi=dos_graph_soc.e_fermi,
                                tol=0.001,abs_tol=False,
                                spin=SpinNonCollinear.mtot)

    return
Ejemplo n.º 2
0
 def setUp(self):
     with open(os.path.join(PymatgenTest.TEST_FILES_DIR,
                            "complete_dos.json"),
               encoding="utf-8") as f:
         self.dos = CompleteDos.from_dict(json.load(f))
         self.plotter = DosPlotter(sigma=0.2, stack=True)
     warnings.simplefilter("ignore")
Ejemplo n.º 3
0
def plot_dos(args):
    v = Vasprun(args.filename[0])
    dos = v.complete_dos

    all_dos = OrderedDict()
    all_dos["Total"] = dos

    structure = v.final_structure

    if args.site:
        for i in xrange(len(structure)):
            site = structure[i]
            all_dos["Site " + str(i) + " " + site.specie.symbol] = \
                dos.get_site_dos(site)

    if args.element:
        syms = [tok.strip() for tok in args.element[0].split(",")]
        all_dos = {}
        for el, dos in dos.get_element_dos().items():
            if el.symbol in syms:
                all_dos[el] = dos
    if args.orbital:
        all_dos = dos.get_spd_dos()

    plotter = DosPlotter()
    plotter.add_dos_dict(all_dos)
    if args.file:
        plotter.get_plot().savefig(args.file[0])
    else:
        plotter.show()
Ejemplo n.º 4
0
def plot_dos_dict(complete_dos, d, xlim=(-3, 3), **kwargs):
    """
    Plot DOS dict with pymatgen. The dict is most likely generated with the methods of the
    pymatgen CompleteDos class.

    Parameters
    ----------
    complete_dos : 
        CompleteDos object.
    d : TYPE
        Dict of DOS.
    xlim : (tuple), optional
        Limits for x axis. The default is (-3,3).
    **kwargs : (dict)
        Arguments for DosPlotter in pymatgen.

    Returns
    -------
    plt : 
        Matplotlib object.
    """

    dos_plotter = DosPlotter(**kwargs)
    for k in d:
        dos_plotter.add_dos(k, d[k])
    eg = complete_dos.get_gap()
    plt = dos_plotter.get_plot(xlim=(xlim[0], eg + xlim[1]))

    return plt
Ejemplo n.º 5
0
def get_dos_plot(args):
    """
    Plot DOS.

    Args:
        args (dict): Args from argparse.
    """
    v = Vasprun(args.dos_file)
    dos = v.complete_dos

    all_dos = OrderedDict()
    all_dos["Total"] = dos

    structure = v.final_structure

    if args.site:
        for i, site in enumerate(structure):
            all_dos["Site " + str(i) + " " +
                    site.specie.symbol] = dos.get_site_dos(site)

    if args.element:
        syms = [tok.strip() for tok in args.element[0].split(",")]
        all_dos = {}
        for el, dos in dos.get_element_dos().items():
            if el.symbol in syms:
                all_dos[el] = dos
    if args.orbital:
        all_dos = dos.get_spd_dos()

    plotter = DosPlotter()
    plotter.add_dos_dict(all_dos)
    return plotter.get_plot()
Ejemplo n.º 6
0
 def setUp(self):
     with open(os.path.join(test_dir, "complete_dos.json"),
               "r",
               encoding='utf-8') as f:
         self.dos = CompleteDos.from_dict(json.load(f))
         self.plotter = DosPlotter(sigma=0.2, stack=True)
     warnings.simplefilter("ignore")
Ejemplo n.º 7
0
    def get_dos(self, dos):
        task_id = dos['task_id']
        dos_obj = self.vaspdb.get_dos(task_id)
        energies = dos_obj.energies
        efermi = dos_obj.efermi
        gap = dos_obj.get_gap()
        densities_up = dos_obj.densities[Spin.up]
        densities_dn = dos_obj.densities[Spin.down]
        #densities = densities_up + densities_dn
        densities = dos_obj.get_densities()
        #print('Fermi energy: {}'.format(efermi))
        #print('gap: {}'.format(gap))
        tdos = np.vstack((energies, densities))
        #print(tdos)
        #print(type(densities))

        plotter = DosPlotter()

        # Adds a DOS with a label.
        #plotter.add_dos("Total DOS", dos)

        # Alternatively, you can add a dict of DOSs. This is the typical
        # form returned by CompleteDos.get_spd/element/others_dos().
        #plotter.add_dos_dict({"dos1": dos1, "dos2": dos2})
        dosplot = plotter.add_dos_dict(dos_obj.get_element_dos())
        #dosplot = plotter.add_dos_dict(dos_obj.get_spd_dos())
        #plotter.show()

        self.head = [
            'energies', 'total_dos', 'total_dos_spin_up', 'total_dos_spin_down'
        ]
        self.unit = ['eV', '', '', '']
        self.data = np.vstack(
            (energies, densities, densities_up, -densities_dn)).T
        self.parameter = dos['input']['incar']
Ejemplo n.º 8
0
 def get_odos(self, stack=True, xlim=[-10, 10], ylim=[0, 50], sigma=0.15):
     dos_vasprun = Vasprun(os.path.join(self.path, "vasprun.xml"), parse_projected_eigen=True)
     dos_data = dos_vasprun.complete_dos
     plotter = DosPlotter(stack=stack, sigma=sigma)
     o_dos = dos_data.get_spd_dos()
     plotter.add_dos_dict(o_dos)
     plotter.save_plot(f'{self.path}-odos.png', img_format=u'png', xlim=xlim, ylim=ylim)
Ejemplo n.º 9
0
    def get_sdos(self, dos_dict, stack=True, xlim=[-10, 10], ylim=None, sigma=0.15):
        dos_vasprun = Vasprun(os.path.join(self.path, "vasprun.xml"), parse_projected_eigen=True)
        dos_data = dos_vasprun.complete_dos
        plotter = DosPlotter(stack=stack, sigma=sigma)
        edos = dos_data.get_element_dos()
        for key in dos_dict:
            if type(dos_dict[key]) is list:
                for index, item in enumerate(dos_dict[key]):
                    if index == 0:
                        temp = dos_data.get_site_dos(dos_data.structure[item])
                    else:
                        temp = temp + dos_data.get_site_dos(dos_data.structure[item])
                plotter.add_dos(key, temp)
            elif type(dos_dict[key]) is str:
                temp = edos[Element(dos_dict[key])]
                plotter.add_dos(key, temp)
            elif type(dos_dict[key]) is int:
                temp = dos_data.get_site_dos(dos_data.structure[dos_dict[key]])
                plotter.add_dos(key, temp)
            else:
                print('Warning: invalid value')

        if ylim is not None:
            plotter.save_plot(f'{self.path}-dos.png', img_format=u'png', xlim=xlim, ylim=ylim)
        else:
            plotter.save_plot(f'{self.path}-dos.png', img_format=u'png', xlim=xlim)
Ejemplo n.º 10
0
def main():
    parser = argparse.ArgumentParser(
        description='''Convenient DOS Plotter for Feff runs.
    Author: Alan Dozier
    Version: 1.0
    Last updated: April, 2013''')

    parser.add_argument('filename',
                        metavar='filename',
                        type=str,
                        nargs=1,
                        help='ldos%% file set to plot')
    parser.add_argument('filename1',
                        metavar='filename1',
                        type=str,
                        nargs=1,
                        help='feff.inp input file ')
    parser.add_argument('-s',
                        '--site',
                        dest='site',
                        action='store_const',
                        const=True,
                        help='plot site projected DOS')
    parser.add_argument('-e',
                        '--element',
                        dest='element',
                        action='store_const',
                        const=True,
                        help='plot element projected DOS')
    parser.add_argument('-o',
                        '--orbital',
                        dest="orbital",
                        action='store_const',
                        const=True,
                        help='plot orbital projected DOS')

    args = parser.parse_args()
    f = LDos.from_file(args.filename1[0], args.filename[0])
    dos = f.complete_dos

    all_dos = OrderedDict()
    all_dos['Total'] = dos

    structure = f.complete_dos.structure

    if args.site:
        for i, site in enumerate(structure):
            all_dos['Site ' + str(i) + " " + site.specie.symbol] = \
                dos.get_site_dos(site)
    if args.element:
        all_dos.update(dos.get_element_dos())
    if args.orbital:
        all_dos.update(dos.get_spd_dos())

    plotter = DosPlotter()
    plotter.add_dos_dict(all_dos)
    plotter.show()
Ejemplo n.º 11
0
def plot_dos(vasprun_path: str):
    try:
        v = Vasprun(vasprun_path)
    except xml.etree.ElementTree.ParseError:
        print("\tskipped due to parse error")
        return
    tdos = v.tdos
    plt = DosPlotter()
    plt.add_dos("Total DOS", tdos)
    plt.show()
Ejemplo n.º 12
0
    def plot_dos(self, T=None, npoints=10000):
        """
        Plot the total Dos using DosPlotter()
        """
        if self.bzt_interp is None:
            raise BoltztrapError("BztInterpolator not present")

        tdos = self.bzt_interp.get_dos(T=T, npts_mu=npoints)
        # print(npoints)
        dosPlotter = DosPlotter()
        dosPlotter.add_dos("Total", tdos)

        return dosPlotter
Ejemplo n.º 13
0
    def __init__(self, vasp):
        self.vasp = vasp
        self.z = self.getGCD()
        self.formula = self.getElem()
        self.full_formula = self.getElem(False)
        self.elem_List = self.elList()
        self.mass = Mass(vasp.atomic_symbols)
        self.volume = vasp.final_structure.volume
        self.density = self.mass / self.volume * 1.66054
        self.neighbors = nearNeighbors(vasp)
        self.latConst = self.getLatConst()

        self.plot = DosPlotter()
Ejemplo n.º 14
0
    def plot_dos(self, sigma=0.05):
        """
        plot dos

        Args:
            sigma: a smearing

        Returns:
            a matplotlib object
        """
        plotter = DosPlotter(sigma=sigma)
        plotter.add_dos("t", self._bz.dos)
        return plotter.get_plot()
Ejemplo n.º 15
0
def get_mp_banddos():
    check_matplotlib()
    mpr = check_apikey()
    print("input the mp-ID")
    wait_sep()
    in_str = wait()
    mp_id = in_str
    step_count = 1
    proc_str = "Reading Data From " + web + " ..."
    procs(proc_str, step_count, sp='-->>')
    data = mpr.get_entry_by_material_id(mp_id)
    sepline()
    print(data)
    sepline()
    step_count += 1
    proc_str = "Reading Band Data From " + web + " ..."
    procs(proc_str, step_count, sp='-->>')

    band = mpr.get_bandstructure_by_material_id(mp_id)
    if band is None:
        print("No data obtained online, stop now!")
        os.exit(0)

    step_count += 1
    filename = mp_id + '_band.png'
    proc_str = "Writing Data to " + filename + " File..."
    bsp = BSPlotter(band)
    procs(proc_str, step_count, sp='-->>')
    bsp.save_plot(filename=filename, img_format="png")

    step_count += 1
    proc_str = "Reading DOS Data From " + web + " ..."
    procs(proc_str, step_count, sp='-->>')
    dos = mpr.get_dos_by_material_id(mp_id)
    if dos is None:
        print("No data obtained online, stop now!")

    step_count += 1
    filename = mp_id + '_dos.png'
    proc_str = "Writing Data to " + filename + " File..."
    dsp = DosPlotter()
    dsp.add_dos('Total', dos)
    procs(proc_str, step_count, sp='-->>')
    dsp.save_plot(filename=filename, img_format="png")
Ejemplo n.º 16
0
def pdos(vasprun):

    # Load the vasprun.xml file
    out = Vasprun(os.path.abspath(vasprun))

    # Extract the types of species in the structure
    species = out.initial_structure.types_of_specie

    # Extract the complete DOS
    element_dos = out.complete_dos.get_element_dos()

    # Initialize the DosPlotter
    plotter = DosPlotter()

    # Add the element projected DOS to the DOSplotter
    for specie in species:
        plotter.add_dos(specie.name, element_dos[specie])

    plotter.show()
Ejemplo n.º 17
0
def total_dos():
   check_matplotlib()
   filename='vasprun.xml'
   check_file(filename)
   proc_str="Reading Data From "+ filename +" File ..."
   procs(proc_str,1,sp='-->>')
   vsr=Vasprun(filename,parse_eigen=False)
   tdos=vsr.tdos
   idos=vsr.idos
   E=tdos.energies-tdos.efermi
   if vsr.is_spin:
      proc_str="This Is a Spin-polarized Calculation."
      procs(proc_str,0,sp='-->>')
      proc_str="Writting TDOS.dat File ..."
      TDOSUP=tdos.densities[Spin.up]
      TDOSDOWN=tdos.densities[Spin.down]
      ETDOS=np.vstack((E,TDOSUP,TDOSDOWN))
      head_line="#%(key1)+12s%(key2)+12s%(key3)+12s"%{'key1':'Energy(eV)','key2':'SpinUp','key3':'SpinDown'}
      write_col_data('TDOS.dat',ETDOS.T,head_line)

      proc_str="Writting IDOS.dat File ..."
      procs(proc_str,3,sp='-->>')
      IDOSUP=idos.densities[Spin.up]
      IDOSDOWN=idos.densities[Spin.down]
      EIDOS=np.vstack((E,IDOSUP,IDOSDOWN))
      head_line="#%(key1)+12s%(key2)+12s%(key3)+12s"%{'key1':'Energy(eV)','key2':'IntSpinUp','key3':'IntSpinDown'}
      write_col_data('IDOS.dat',EIDOS.T,head_line)

      plt1=DosPlotter()
      plt2=DosPlotter()
      plt1.add_dos('Total DOS',tdos)
      plt2.add_dos('Total DOS',idos)
      try:
       # plt1.show()
        plt1.save_plot('TotalDOS.png', img_format="png")
       # plt2.show()
        plt2.save_plot('IntegratedDOS.png', img_format="png")
      except:
        print("pls use gnuplot to plot TDOS.dat and IDOS.dat")
   else:
      if vsr.parameters['LNONCOLLINEAR']:
         proc_str="This Is a Non-Collinear Calculation."
      else:
          proc_str="This Is a Non-Spin Calculation."
      procs(proc_str,0,sp='-->>')
      proc_str="Writting TDOS.dat File ..."
      procs(proc_str,2,sp='-->>')
      
      TDOS=tdos.densities[Spin.up]
      ETDOS=np.vstack((E,TDOS))
      head_line="#%(key1)+12s%(key2)+12s"%{'key1':'Energy(eV)','key2':'TotalDOS'}
      write_col_data('TDOS.dat',ETDOS.T,head_line)

      proc_str="Writting IDOS.dat File ..."
      procs(proc_str,3,sp='-->>')
      IDOS=idos.densities[Spin.up]
      EIDOS=np.vstack((E,IDOS))
      head_line="#%(key1)+12s%(key2)+13s"%{'key1':'Energy(eV)','key2':'IntegratedDOS'}
      write_col_data('IDOS.dat',EIDOS.T,head_line)

      plt1=DosPlotter()
      plt2=DosPlotter()
      plt1.add_dos('Total DOS',tdos)
      plt2.add_dos('Integrated DOS',idos)
      filename4="TotalDOS.png IntegratedDOS.png"
      proc_str="Saving Plot to "+ filename4 +" File ..."
      procs(proc_str,4,sp='-->>')

      try:
       # plt1.show()
        plt1.save_plot('TotalDOS.png', img_format="png")
       # plt2.show()
        plt2.save_plot('IntegratedDOS.png', img_format="png")
      except:
        print("pls use gnuplot to plot TDOS.dat and IDOS.dat")
Ejemplo n.º 18
0
from pymatgen.io.vasp.outputs import Vasprun, Element
from pymatgen.electronic_structure.plotter import DosPlotter
import os

os.chdir('/home/jinho93/oxides/perobskite/lanthanum-aluminate/slab/14/asym')
os.chdir(
    '/home/jinho93/oxides/perobskite/lanthanum-aluminate/periodic_step/vasp/stengel/001/vca/AlO2'
)
os.chdir(
    '/home/jinho93/oxides/perobskite/lanthanum-aluminate/slab/14/asym/to_Al')
# os.chdir('/home/jinho93/new/oxides/perobskite/lanthanum-aluminate/slab/7')
vrun = Vasprun('vasprun.xml')
cdos = vrun.complete_dos
s = vrun.final_structure

dsp = DosPlotter()

dos_dict = {}
i: Site
for n, i in enumerate(s.sites):
    if i.species_string == 'La':
        dos_dict[f'{n}'] = cdos.get_site_dos(i)

dsp.add_dos_dict(dos_dict)

dsp.show(xlim=(-10, 5), ylim=(0, 2))

# %%

aldos = cdos.get_site_dos(s.sites[0])
dx = aldos.energies[1] - aldos.energies[0]
Ejemplo n.º 19
0
def main():
    """
    Main function.
    """
    parser = argparse.ArgumentParser(
        description="""Convenient DOS Plotter for Feff runs.
    Author: Alan Dozier
    Version: 1.0
    Last updated: April, 2013""")

    parser.add_argument(
        "filename",
        metavar="filename",
        type=str,
        nargs=1,
        help="ldos%% file set to plot",
    )
    parser.add_argument("filename1",
                        metavar="filename1",
                        type=str,
                        nargs=1,
                        help="feff.inp input file ")
    parser.add_argument(
        "-s",
        "--site",
        dest="site",
        action="store_const",
        const=True,
        help="plot site projected DOS",
    )
    parser.add_argument(
        "-e",
        "--element",
        dest="element",
        action="store_const",
        const=True,
        help="plot element projected DOS",
    )
    parser.add_argument(
        "-o",
        "--orbital",
        dest="orbital",
        action="store_const",
        const=True,
        help="plot orbital projected DOS",
    )

    args = parser.parse_args()
    f = LDos.from_file(args.filename1[0], args.filename[0])
    dos = f.complete_dos

    all_dos = {}
    all_dos["Total"] = dos

    structure = f.complete_dos.structure

    if args.site:
        for i, site in enumerate(structure):
            all_dos["Site " + str(i) + " " +
                    site.specie.symbol] = dos.get_site_dos(site)
    if args.element:
        all_dos.update(dos.get_element_dos())
    if args.orbital:
        all_dos.update(dos.get_spd_dos())

    plotter = DosPlotter()
    plotter.add_dos_dict(all_dos)
    plotter.show()
Ejemplo n.º 20
0
if print_magnetic:
    # read in magentic moment from OUTCAR and print
    out = Outcar('./OUTCAR')
    print('Total Magnetic Moment:', out.total_mag)

if make_dosplot:
    # read in BSDOSPlotter function to plot DOS and BS
    from pymatgen.electronic_structure.plotter import DosPlotter

    # make and save a plot of the band structure and DOS
    dos = vsp.complete_dos
    energy_range = (-10, 7)  # eV, change if desired to change plotting range

    # create DosPlotter object with smearing
    edosplot = DosPlotter(sigma=dos_smearing)
    # plot Total DOS and element-projected dos
    edosplot.add_dos("Total DOS", dos)
    edosplot.add_dos_dict(dos.get_element_dos())
    plt = edosplot.get_plot(xlim=energy_range)
    plt.plot((-20, 20), (0, 0), 'k--')
    plt.savefig('Element_DOS_plot.png')

    # create DosPlotter object with smearing
    odosplot = DosPlotter(sigma=dos_smearing)
    # plot Total DOS and orbital-projected dos
    odosplot.add_dos("Total DOS", dos)
    odosplot.add_dos_dict(dos.get_spd_dos())
    plt = odosplot.get_plot(xlim=energy_range)
    plt.plot((-20, 20), (0, 0), 'k--')
    plt.savefig('Orbital_DOS_plot.png')
Ejemplo n.º 21
0
#!/nfshome/villa/anaconda3/bin/python
"""
Spyder Editor

This is a temporary script file.
"""

import os
from pymatgen.core.periodic_table import Element
from pymatgen.io.vasp.outputs import Vasprun
from pymatgen.io.vasp.inputs import Poscar
from pymatgen.electronic_structure.plotter import DosPlotter

complete_dos = Vasprun('vasprun.xml').complete_dos

partial_dos = complete_dos.get_spd_dos()

dos_plotter = DosPlotter()
dos_plotter.add_dos('Total_dos', complete_dos)
for orbital in partial_dos:
    dos_plotter.add_dos(orbital, partial_dos[orbital])
plt = dos_plotter.get_plot(xlim=(-10, 10))
plt.show()
Ejemplo n.º 22
0
@Author  : Xu-Shan Zhao
@Filename: pymatgenPlotBSDOS202005091027.py
@IDE     : PyCharm
@Time1   : 2020-05-09 10:27:36
@Time2   : 2020/5/9 10:27
@Month1  : 5月
@Month2  : 五月
"""

from pymatgen.electronic_structure.plotter import DosPlotter, BSPlotter, BSDOSPlotter
from pymatgen.io.vasp import Vasprun, BSVasprun

vasprun_file = './AlEuO3_Perovskite_DOS/vasprun.xml'
vasprun = Vasprun(vasprun_file)
tdos = vasprun.tdos
plotter = DosPlotter()
plotter.add_dos('Total DOS', tdos)
# plotter.show(xlim=[-20, 20], ylim=[-6, 6])
plotter.show()

completeDos = vasprun.complete_dos
element_dos = completeDos.get_element_dos()
plotter = DosPlotter()
plotter.add_dos_dict(element_dos)
plotter.add_dos('Total DOS', tdos)
plotter.show()

spd_dos = completeDos.get_spd_dos()
plotter = DosPlotter()
plotter.add_dos_dict(spd_dos)
plotter.add_dos('Total DOS', tdos)
Ejemplo n.º 23
0
 def plot_dos(self):
     plotter = DosPlotter(sigma=0.05)
     plotter.add_dos("t", self._bz.dos)
     plotter.get_plot().show()
Ejemplo n.º 24
0
os.chdir(
    '/home/ksrc5/FTJ/1.bfo/111-dir/junction/sto/vasp/vac/conf3/4.node03/dense_k_dos/again'
)

vrun = Vasprun('vasprun.xml')
s: Structure = vrun.final_structure
cdos = vrun.complete_dos
pdos = cdos.pdos
doss = dict()
num = 16
arr = np.linspace(0, 1, num, endpoint=False)
darr = arr[1] - arr[0]
for j in arr:
    densities = []
    for i in s.sites:
        if j + darr > i.c >= j:
            densities.append(cdos.get_site_dos(i).get_densities())
    densities = np.sum(densities, axis=0)
    doss[f'{j:.2f}'] = Dos(cdos.efermi, cdos.energies, {Spin.up: densities})
dsp = DosPlotter(sigma=0.1)
ax_array, fig, plt = get_axarray_fig_plt(None, nrows=num, sharex=True)
plt = pretty_plot(12, 6, plt=plt)
for i in range(num):
    dsp.__init__(sigma=0.05)
    a = doss.popitem()
    dsp.add_dos(*a)
    fig.add_subplot(num, 1, i + 1)
    subplt = dsp.get_plot(xlim=(-1, 2), plt=plt)
plt.savefig('figure.png')
plt.show()
Ejemplo n.º 25
0
#!/nfshome/villa/anaconda3/bin/python

from pymatgen.io.vasp.outputs import Vasprun
from pymatgen.electronic_structure.plotter import BSPlotter, DosPlotter

vaspout = Vasprun("./vasprun.xml")

# Initializes plotter with some optional args. Defaults are usually
# fine,
complete_dos = vaspout.complete_dos
plt = DosPlotter()
plt.add_dos_dict(complete_dos.get_spd_dos())
tdos = vaspout.tdos
# Adds a DOS with a label.
plt.add_dos("Total", tdos)
#plt.get_plot()

plt.save_plot('dos_mg.pdf', img_format='pdf', xlim=[-7, 6], ylim=[0, 20])
Ejemplo n.º 26
0
#print cdos.get_densities()
tdos = vasp.tdos  #Total dos calculated at the end of run
idos = vasp.idos  # Integrated dos calculated at the end of run
pdos = vasp.pdos  # List of list of PDos objects. Access as pdos[atomindex][orbitalindex]
efermi = vasp.efermi
eigenvalues = vasp.eigenvalues
projected_eigenvalues = vasp.projected_eigenvalues
bs = bsvasp.get_band_structure(line_mode=True)
total_dos = tdos
pdoss = pdos
#CDOS = CompleteDos(structure,total_dos,pdoss)
spd_dos = cdos.get_spd_dos
#print spd_dos
element_dos = cdos.get_element_dos
#element_spd_dos = cdos.get_element_spd_dos(el)
dosplotter = DosPlotter()
Totaldos = dosplotter.add_dos('Total DOS', tdos)
Integrateddos = dosplotter.add_dos('Integrated DOS', idos)
#Pdos = dosplotter.add_dos('Partial DOS',pdos)
#Spd_dos =  dosplotter.add_dos('spd DOS',spd_dos)
#Element_dos = dosplotter.add_dos('Element DOS',element_dos)
#Element_spd_dos = dosplotter.add_dos('Element_spd DOS',element_spd_dos)
dos_dict = {
    'Total DOS': tdos,
    'Integrated DOS': idos
}  #'Partial DOS':pdos,'spd DOS':spd_dos,'Element DOS':element_dos}#'Element_spd DOS':element_spd_dos
add_dos_dict = dosplotter.add_dos_dict(dos_dict)
get_dos_dict = dosplotter.get_dos_dict()
dos_plot = dosplotter.get_plot()
##dosplotter.save_plot("MAPbI3_dos",img_format="png")
##dos_plot.show()
Ejemplo n.º 27
0
 def __init__(self, *args, **kwargs):
     MyMplCanvas.__init__(self, *args, **kwargs)
     self.dsp = DosPlotter()
Ejemplo n.º 28
0
        # 3rd run to obtain Band structure
        band = MPNonSCFSet.from_prev_calc(static_dir,
                                          mode="line",
                                          standardize=True,
                                          user_incar_settings=myset)
        band.write_input(band_dir)
        run_vasp(cmd, band_dir)
        os.system('cp ' + band_dir + '/vasprun.xml  ./band-vasprun.xml')
        os.system('cp ' + band_dir + '/KPOINTS  ./')

        v = BSVasprun("band-vasprun.xml")
        bs = v.get_band_structure(kpoints_filename='KPOINTS', line_mode=True)
        plt = BSPlotter(bs)
        plt.get_plot(vbm_cbm_marker=True)
        plt.save_plot(Name + '-band.png', ylim=[-4, 4], img_format='png')

        v = Vasprun('dos-vasprun.xml')
        tdos = v.tdos
        cdos = v.complete_dos
        spd_dos = cdos.get_spd_dos()
        plotter = DosPlotter(sigma=0.1)
        plotter.add_dos("Total DOS", tdos)
        # plotter.add_dos("spd_dos", spd_dos)
        plotter.save_plot(Name + '-dos.png', img_format='png', xlim=[-4, 4])

        shutil.rmtree(band_dir)
        shutil.rmtree(dos_dir)
        shutil.rmtree(static_dir)

    os.chdir('../')
Ejemplo n.º 29
0
 def setUp(self):
     with open(os.path.join(test_dir, "complete_dos.json"), "r") as f:
         self.dos = CompleteDos.from_dict(json.load(f))
         self.plotter = DosPlotter(sigma=0.2, stack=True)
Ejemplo n.º 30
0
from pymatgen.io.vasp import Vasprun, Element
from pymatgen.electronic_structure.plotter import DosPlotter

v = Vasprun('AgTe_dos/vasprun.xml')
cdos = v.complete_dos


element_dos = cdos.get_element_dos()
element_orbital = cdos.get_element_spd_dos(el=Element("Te"))

#print(cdos.pdos)

#px = cdos.get_site_orbital_dos(site=v.final_structure.sites[0],orbital=0)
#py = cdos.get_site_orbital_dos(site=v.final_structure.sites[0],orbital=2)
#pz = cdos.get_site_orbital_dos(site=v.final_structure.sites[0],orbital=1)


plotter = DosPlotter(zero_at_efermi=True)
plotter.add_dos_dict(element_dos)
#plotter.add_dos_dict(px)
#plotter.add_dos_dict(py)
#plotter.add_dos_dict(pz)

plotter.show(xlim=[-4, 4], ylim=[0, 10])