bands_kpts_band_gap
esta.qeBag.bands_kpts_band_gap
¶
energies_kpts(filename)
¶
finding: -nbands, band-energies -nkpts, kpt-coordinate -band gap for spin up channel -band gap for spin down channel -band gap between valence band(of spin up/down) and cond. band (spin up/down) for unpolarised/polarised qe scf.out file
NOTE: use verbosity = 'high' to print the band energies
input: name of scf.out file with verbosity high to be used in qe pw.x calculation
output: see above
internal variables: lspin lfermi nelec nband efermi energies occupations
print('no of bands: {}, no of kpts: {}, Fermi level: {}'.format(nband, nkpt, efermi))
print('no of elctrons: {}'.format(nelec))
energies = np.zeros((nkpt, nband, 2)) # 2 for spin polarised calc
occupations = np.zeros_like(energies)
coord_kpts =[]
if lspin:
return energies, coord_kpts, band_gap_up, band_gap_down, band_gap, lspin, occupations
else:
return energies, coord_kpts, band_gap_up, None, None, lspin, occupations
====++++++++++++++++============================================================
MORE to do for fermi energy:
see qexml.f90 in Modules of qe6.2 version:
lines: 4152,42 89%
IF ( two_fermi_energies_ ) THEN ! sk : fermi energies up down or up/down e eneties.. so on ! CALL iotk_scan_dat( iunit, "FERMI_ENERGY_UP", ef_up_, IERR=ierr ) IF (ierr/=0) RETURN CALL iotk_scan_dat( iunit, "FERMI_ENERGY_DOWN", ef_dw_, IERR=ierr ) IF (ierr/=0) RETURN CALL iotk_scan_dat( iunit, "ELECTRONS_UP", nel_up_, IERR=ierr ) IF (ierr/=0) RETURN CALL iotk_scan_dat( iunit, "ELECTRONS_DOWN", nel_down_, IERR=ierr ) IF (ierr/=0) RETURN ! ELSE ! CALL iotk_scan_dat ( iunit, "FERMI_ENERGY", ef_ , FOUND=found ) IF (ierr/=0) RETURN =====++++++++++++++++++++++++=====================================================