tprnfor=True, # kwargs added to parameters input_data=input_data) atoms.calc = calc atoms.get_potential_energy() # Get the valence band maximum efermi = calc.get_fermi_level() Nk = len(calc.get_ibz_k_points()) Ns = calc.get_number_of_spins() eigval = np.array([[calc.get_eigenvalues(kpt=k, spin=s) for k in range(Nk)] for s in range(Ns)]) evbm = np.max(eigval[eigval < efermi]) # Next, a band structure calculation input_data['control'].update({ 'calculation': 'bands', 'restart_mode': 'restart', 'verbosity': 'high' }) calc.set(kpts={'path': spath, 'npoints': 50}, input_data=input_data) calc.calculate(atoms) bs_qe = calc.band_structure() bs_qe.reference = evbm bs_qe.plot(filename='bs_qe_data.png', show=False, emax=evbm + 5., emin=evbm - 15.) write_json('bs_qe.json', bs_qe)
from ase.build import bulk from ase.calculators.espresso import Espresso atoms = bulk("Cu") pseudopotentials = {'Cu':'Cu.pz-d-rrkjus.UPF'} input_data = { 'system': { 'ecutwfc': 30, 'ecutrho': 240, 'nbnd' : 35, 'occupations' : 'smearing', 'smearing':'gauss', 'degauss' : 0.01}, 'disk_io': 'low'} # automatically put into 'control' calc = Espresso(pseudopotentials=pseudopotentials,kpts=(4, 4, 4),input_data=input_data,pseudo_dir = './') atoms.set_calculator(calc) atoms.get_potential_energy() fermi_level = calc.get_fermi_level() print(fermi_level) #---- input_data.update({'calculation':'bands', 'restart_mode':'restart', 'verbosity':'high'}) calc.set(kpts={'path':'GXWLGK', 'npoints':100}, input_data=input_data) calc.calculate(atoms) #---- import matplotlib.pyplot as plt bs = calc.band_structure() bs.reference = fermi_level bs.plot(emax=40,emin=5)