Skip to content

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 =====++++++++++++++++++++++++=====================================================