Ejemplo n.º 1
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 range(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.º 2
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.º 3
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.º 4
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.º 5
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.º 6
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.º 7
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.º 8
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("Ag"))

plotter = DosPlotter()
plotter.add_dos_dict(element_orbital)
plotter.show(xlim=[-4, 4], ylim=[0, 10])
Ejemplo n.º 9
0
    '/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]
o = np.sum(
    aldos.get_densities(Spin.up)[np.logical_and(aldos.energies > -2,
                                                aldos.energies < 0)]) * dx
print(o)
# %%
Ejemplo n.º 10
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.º 11
0
@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)
plotter.show()

bsvasprun_file = './AlEuO3_Perovskite_BS/vasprun.xml'
Ejemplo n.º 12
0
cdos = vrun.complete_dos

atoms = []
i: Site

dos = {
    'd_in':
    Dos(cdos.efermi, cdos.energies, {Spin.up: np.zeros_like(cdos.energies)}),
    'd_out':
    Dos(cdos.efermi, cdos.energies, {Spin.up: np.zeros_like(cdos.energies)})
}

for i in vrun.final_structure.sites:
    if i.species_string == 'V':
        atoms.append(i)
for j in atoms:
    for n, k in dos.items():
        if n == 'd_in':
            dos[n] = k.__add__(cdos.get_site_orbital_dos(j, Orbital.dxy))
        else:
            dos[n] = k.__add__(cdos.get_site_orbital_dos(j, Orbital.dyz))
            dos[n] = k.__add__(cdos.get_site_orbital_dos(j, Orbital.dxz))

dsp.add_dos_dict(dos)
dsp.show()

# %%
for n, k in dos.items():
    with open(f'{n}.dat', 'w') as f:
        f.write(k.__str__())
Ejemplo n.º 13
0
import os
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.io.vasp.outputs import Vasprun, Element, Dos

os.chdir('/home/jinho93/molecule/ddt/vasp/2-sub/triplet/')
vrun = Vasprun('vasprun.xml')
# mpr = MPRester('DhmFQPuibZo8JtXn')
dos = vrun.complete_dos
# dos: CompleteDos = mpr.get_dos_by_material_id('mp-352')
eldos = dos.get_element_dos()
dos.get_site_spd_dos()
dos.get_site_t2g_eg_resolved_dos()
i: Element
j: Dos
print(vrun.final_structure.composition.element_composition)
#for i, j in eldos.items():
#    vasprun.final_structure.num_sites
#eldos.pop(Element.Mo)
#eldos.pop(Element.S)
dsp = DosPlotter()
dsp.add_dos_dict(eldos)
dsp.show(xlim=(-3, 5))
Ejemplo n.º 14
0
#  pure
h8, e4, d4 = 4, -5, -1

for orb in [Orbital.dxy, Orbital.dyz, Orbital.dz2, Orbital.dxz, Orbital.dx2]:
    dos_dict[orb.name] = cdos.get_site_orbital_dos(structure.sites[h8], orb)

#    dos_dict[orb.__str__()].densities = dos_dict[orb.__str__()].get_smeared_densities(0.1)


def save_dos_dict():
    arr = [
        np.concatenate(
            [cdos.energies - cdos.efermi, (cdos.energies - cdos.efermi)[::-1]])
    ]
    for i in dos_dict.values():
        tmp = np.concatenate(
            [i.densities[Spin.up], -i.densities[Spin.down][::-1]])
        arr.append(tmp)
    arr = np.array(arr)
    np.savetxt('output.dat', arr.transpose(), delimiter='\t')


if __name__ == '__main__':
    from pymatgen.electronic_structure.plotter import DosPlotter
    from VASP.vasprun_related.FeN.MAE import Coupling
    dsp = DosPlotter()
    dsp.add_dos_dict(dos_dict)
    dsp.show(xlim=(-2, 1), ylim=(-1.5, 1.5))

    save_dos_dict()
Ejemplo n.º 15
0
                    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 = FeffLdos.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 in xrange(len(structure)):
        site = structure[i]
        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.º 16
0
        'second': (0.5, 0.6),
    }
    for key, val in en.items():
        s: PeriodicSite = None
        dosN = Dos(cdos.efermi, cdos.energies,
                   {k: np.zeros(d.shape)
                    for k, d in cdos.densities.items()})
        dosMetal = Dos(
            cdos.efermi, cdos.energies,
            {k: np.zeros(d.shape)
             for k, d in cdos.densities.items()})
        for s in find_ind(cdos.structure, *val):
            if s.specie.__str__() == 'N':
                sum_orbital(dosN, cdos.get_site_spd_dos(s)[OrbitalType.p])
            elif s.specie.__str__() == 'Ni':
                sum_orbital(dosMetal, cdos.get_site_spd_dos(s)[OrbitalType.d])

        dosN.densities = dosN.get_smeared_densities(0.03)
        dosMetal.densities = dosMetal.get_smeared_densities(0.03)

        sum_spin(dosN)
        sum_spin(dosMetal)

        dosN = integrate(dosN)
        dosMetal = integrate(dosMetal)

        dp.add_dos_dict({key + "dosN": dosN, key + "dosM": dosMetal})
    dp.show()
    # write_dos(key + '_N_mag.dat', integrate(dosN))
    # write_dos(key + '_Cu_mag.dat', integrate(dosMetal))
Ejemplo n.º 17
0
        if b[0] == 1 and b[1] == 0:
            ter += 1
        elif b[0] == 2 and b[1] == 0:
            brig += 1

    print(ter, brig)
# %%

import numpy as np
import macrodensity as md
arr = np.genfromtxt('/home/jinho93/molecule/dems/25/100/temp.dat')
arr = arr[:, 3]
mac = md.macroscopic_average(arr, 1, 0.1)
import matplotlib.pyplot as plt

plt.plot(mac)

np.savetxt('/home/jinho93/mac.dat', mac)
# %%
a = np.genfromtxt('mac.dat')
# %%
print(a)
# %%
from pymatgen.io.vasp import Vasprun
from pymatgen import Element
from pymatgen.electronic_structure.plotter import DosPlotter
dsp = DosPlotter()
vrun = Vasprun('vasprun.xml')
dsp.add_dos('total', vrun.tdos)
dsp.show(xlim=(-1, 1.5))
Ejemplo n.º 18
0
from pymatgen.io.vasp import Vasprun
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.io.vasp.outputs import Vasprun, Procar
from pymatgen.core.ion import Ion

v = Vasprun('vasprun.xml')
cdos = v.complete_dos
#el = cdos.Structure.composition
eles = cdos.structure.composition.elements

for ele in eles:
    plotter = DosPlotter()
    ele_or_dos = cdos.get_element_spd_dos(ele)
    plotter.add_dos_dict(ele_or_dos)
    plotter.show(xlim=[-8, 8], ylim=[0, 1000])

exit(0)
print cdos.Structure
#print el.elements
#exit(0)

#orbital_dos = cdos.get_spd_dos()
#plotter = DosPlotter()
#plotter.add_dos_dict(orbital_dos)
#plotter.show(xlim=[-8, 8], ylim=[0, 1000])





Ejemplo n.º 19
0
#%%

from matplotlib.pyplot import xlim
from pymatgen.io.vasp.outputs import Vasprun, Element
from pymatgen.electronic_structure.plotter import DosPlotter

path = '/home/jinho93/oxides/perobskite/lanthanum-aluminate/bulk/hse/dos/'
# path = '/home/jinho93/oxides/perobskite/lanthanum-aluminate/periodic_step/vasp/stengel/bulk/dos/'
vrun = Vasprun(path + 'vasprun.xml')
dsp = DosPlotter(zero_at_efermi=True)
dsp.add_dos_dict(vrun.complete_dos.get_element_spd_dos(Element.La))
dsp.show(xlim=(-10, 8))

# %%