Source code for pyprocar.scripts.scriptBandGap

import numpy as np

from .. import io


[docs] def bandgap(procar:str=None, dirname:str =None, outcar:str=None, code:str="vasp", fermi:float=None, repair:bool=True): """A function to find the band gap Parameters ---------- procar : str, optional The PROCAR filename, by default None outcar : str, optional The OUTCAR filename, by default None code : str, optional The code name, by default "vasp" fermi : float, optional The fermi energy, by default None repair : bool, optional Boolean to repair the PROCAR file, by default True Returns ------- float Returns the bandgap energy """ bandGap = None parser = io.Parser(code = code, dir = dirname) ebs = parser.ebs if fermi is None: fermi = ebs.efermi bands = np.array(ebs.bands) subBands = np.subtract(bands, fermi) negArr = subBands[subBands < 0] posArr = subBands[subBands > 0] negVal = np.amax(negArr) posVal = np.amin(posArr) idx = np.where(subBands == negVal)[1][0] if all(i >= 0 for i in subBands[:, idx]) or all(i <= 0 for i in subBands[:, idx]): possibleGap = posVal - negVal if bandGap is None: bandGap = possibleGap elif possibleGap < bandGap: bandGap = possibleGap else: bandGap = 0 print("Band Gap = %s eV " % str(bandGap)) return bandGap