Back to the main Index
The FATBANDS.nc
file contains the projection of the KS wavefunctions onto atom-centered
functions with given angular momentum $l$.
The file is generated by using the prtdos
variable either in a SCF or NSCF run.
One can use the abiopen
function provided by abilab
to open the file and generate an instance of FatbandsFile
.
Alternatively, use the abiopen.py
script to open the file inside the shell with the syntax:
abiopen.py out_FATBANDS.nc
This command will start the ipython interpreter so that one can interact directly
with the FatbandFile
object (named abifile
inside ipython).
To generate a jupyter notebook use:
abiopen.py out_FATBANDS.nc -nb
For a quick visualization of the data, use:
abiopen.py out_FATBANDS.nc -e
# Use this at the beginning of your script so that your code will be compatible with python3
from __future__ import print_function, division, unicode_literals
import warnings
warnings.filterwarnings("ignore") # Ignore warnings
from abipy import abilab
abilab.enable_notebook() # This line tells AbiPy we are running inside a notebook
import abipy.data as abidata
# This line configures matplotlib to show figures embedded in the notebook.
# Replace `inline` with `notebook` in classic notebook
%matplotlib inline
# Option available in jupyterlab. See https://github.com/matplotlib/jupyter-matplotlib
#%matplotlib widget
# This fatbands file has been produced on a k-path so it is not suitable for DOS calculations.
fbnc_kpath = abilab.abiopen(abidata.ref_file("mgb2_kpath_FATBANDS.nc"))
To print file info i.e., dimensions, variables, etc. (note that prtdos = 3, so LM decomposition is not available)
print(fbnc_kpath)
================================= File Info ================================= Name: mgb2_kpath_FATBANDS.nc Directory: /Users/gmatteo/git_repos/abipy/abipy/data/refs/mgb2_fatbands Size: 149.01 kb Access Time: Tue Oct 15 00:43:34 2019 Modification Time: Wed Mar 20 16:53:35 2019 Change Time: Wed Mar 20 16:53:35 2019 ================================= Structure ================================= Full Formula (Mg1 B2) Reduced Formula: MgB2 abc : 3.086000 3.086000 3.523000 angles: 90.000000 90.000000 120.000000 Sites (3) # SP a b c --- ---- -------- -------- --- 0 Mg 0 0 0 1 B 0.333333 0.666667 0.5 2 B 0.666667 0.333333 0.5 Abinit Spacegroup: spgid: 191, num_spatial_symmetries: 24, has_timerev: True, symmorphic: False ============================== Electronic Bands ============================== ================================= Structure ================================= Full Formula (Mg1 B2) Reduced Formula: MgB2 abc : 3.086000 3.086000 3.523000 angles: 90.000000 90.000000 120.000000 Sites (3) # SP a b c --- ---- -------- -------- --- 0 Mg 0 0 0 1 B 0.333333 0.666667 0.5 2 B 0.666667 0.333333 0.5 Abinit Spacegroup: spgid: 191, num_spatial_symmetries: 24, has_timerev: True, symmorphic: False Number of electrons: 8.0, Fermi level: 6.851 (eV) nsppol: 1, nkpt: 78, mband: 8, nspinor: 1, nspden: 1 smearing scheme: none, tsmear_eV: 0.272, occopt: 1 Direct gap: Energy: 0.312 (eV) Initial state: spin=0, kpt=[+0.050, +0.050, +0.000], weight: 0.000, band=2, eig=6.621, occ=2.000 Final state: spin=0, kpt=[+0.050, +0.050, +0.000], weight: 0.000, band=3, eig=6.933, occ=2.000 Fundamental gap: Energy: 0.038 (eV) Initial state: spin=0, kpt=[+0.441, +0.000, +0.000], weight: 0.000, band=3, eig=6.822, occ=2.000 Final state: spin=0, kpt=[+0.147, +0.000, +0.500], weight: 0.000, band=3, eig=6.860, occ=2.000 Bandwidth: 12.435 (eV) Valence maximum located at: spin=0, kpt=[+0.441, +0.000, +0.000], weight: 0.000, band=3, eig=6.822, occ=2.000 Conduction minimum located at: spin=0, kpt=[+0.147, +0.000, +0.500], weight: 0.000, band=3, eig=6.860, occ=2.000 =============================== Fatbands Info =============================== prtdos: 3, prtdosm: 0, mbesslang: 5, pawprtdos: 0, usepaw: 0 nsppol: 1, nkpt: 78, mband: 8 Idx Symbol Reduced_Coords Lmax Ratsph [Bohr] Has_Atom ----- -------- ----------------------- ------ --------------- ---------- 0 Mg 0.00000 0.00000 0.00000 4 2 Yes 1 B 0.33333 0.66667 0.50000 4 2 Yes 2 B 0.66667 0.33333 0.50000 4 2 Yes
fbnc_kpath.structure.plot();
To plot the k-points belonging to the path:
fbnc_kpath.ebands.kpoints.plot();
To plot the electronic fatbands grouped by atomic type:
fbnc_kpath.plot_fatbands_typeview(tight_layout=True);
To plot the electronic fatbands grouped by $l$:
fbnc_kpath.plot_fatbands_lview(tight_layout=True);
Now we read another FATBANDS.nc file produced on 18x18x18 k-mesh
fbnc_kmesh = abilab.abiopen(abidata.ref_file("mgb2_kmesh181818_FATBANDS.nc"))
print(fbnc_kpath)
================================= File Info ================================= Name: mgb2_kpath_FATBANDS.nc Directory: /Users/gmatteo/git_repos/abipy/abipy/data/refs/mgb2_fatbands Size: 149.01 kb Access Time: Tue Oct 15 00:43:37 2019 Modification Time: Wed Mar 20 16:53:35 2019 Change Time: Wed Mar 20 16:53:35 2019 ================================= Structure ================================= Full Formula (Mg1 B2) Reduced Formula: MgB2 abc : 3.086000 3.086000 3.523000 angles: 90.000000 90.000000 120.000000 Sites (3) # SP a b c --- ---- -------- -------- --- 0 Mg 0 0 0 1 B 0.333333 0.666667 0.5 2 B 0.666667 0.333333 0.5 Abinit Spacegroup: spgid: 191, num_spatial_symmetries: 24, has_timerev: True, symmorphic: False ============================== Electronic Bands ============================== ================================= Structure ================================= Full Formula (Mg1 B2) Reduced Formula: MgB2 abc : 3.086000 3.086000 3.523000 angles: 90.000000 90.000000 120.000000 Sites (3) # SP a b c --- ---- -------- -------- --- 0 Mg 0 0 0 1 B 0.333333 0.666667 0.5 2 B 0.666667 0.333333 0.5 Abinit Spacegroup: spgid: 191, num_spatial_symmetries: 24, has_timerev: True, symmorphic: False Number of electrons: 8.0, Fermi level: 6.851 (eV) nsppol: 1, nkpt: 78, mband: 8, nspinor: 1, nspden: 1 smearing scheme: none, tsmear_eV: 0.272, occopt: 1 Direct gap: Energy: 0.312 (eV) Initial state: spin=0, kpt=[+0.050, +0.050, +0.000], weight: 0.000, band=2, eig=6.621, occ=2.000 Final state: spin=0, kpt=[+0.050, +0.050, +0.000], weight: 0.000, band=3, eig=6.933, occ=2.000 Fundamental gap: Energy: 0.038 (eV) Initial state: spin=0, kpt=[+0.441, +0.000, +0.000], weight: 0.000, band=3, eig=6.822, occ=2.000 Final state: spin=0, kpt=[+0.147, +0.000, +0.500], weight: 0.000, band=3, eig=6.860, occ=2.000 Bandwidth: 12.435 (eV) Valence maximum located at: spin=0, kpt=[+0.441, +0.000, +0.000], weight: 0.000, band=3, eig=6.822, occ=2.000 Conduction minimum located at: spin=0, kpt=[+0.147, +0.000, +0.500], weight: 0.000, band=3, eig=6.860, occ=2.000 =============================== Fatbands Info =============================== prtdos: 3, prtdosm: 0, mbesslang: 5, pawprtdos: 0, usepaw: 0 nsppol: 1, nkpt: 78, mband: 8 Idx Symbol Reduced_Coords Lmax Ratsph [Bohr] Has_Atom ----- -------- ----------------------- ------ --------------- ---------- 0 Mg 0.00000 0.00000 0.00000 4 2 Yes 1 B 0.33333 0.66667 0.50000 4 2 Yes 2 B 0.66667 0.33333 0.50000 4 2 Yes
and plot the $l$-PJDOS grouped by atomic type:
fbnc_kmesh.plot_pjdos_typeview(tight_layout=True);
Plot the L-PJDOS grouped by L:
fbnc_kmesh.plot_pjdos_lview(tight_layout=True);
Now we use the two netcdf files to produce plots with fatbands + PJDOSEs. The data for the DOS is taken from pjdosfile.
fbnc_kpath.plot_fatbands_with_pjdos(pjdosfile=fbnc_kmesh, view="type", tight_layout=True);
fatbands + PJDOS grouped by L:
fbnc_kpath.plot_fatbands_with_pjdos(pjdosfile=fbnc_kmesh, view="lview", tight_layout=True);
fbnc_kpath.close()
fbnc_kmesh.close()
Back to the main Index