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()
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()
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()
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()
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()
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()
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()
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])
'/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) # %%
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()
@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'
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__())
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))
# 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()
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()
'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))
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))
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])
#%% 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)) # %%