num_wann=8num_bands=60! use pseudo-atomic orbital projectionauto_projections=.true.! enable projectability disentanglementdis_froz_proj=.true.dis_proj_max=0.85dis_proj_min=0.01! you can also enable energy window disentanglement, which! will also freeze states inside inner window, so that those! states are always reproduced.fermi_energy=-2.3043! dis_froz_max = 0.5num_iter=4000conv_tol=2.0000000000d-10conv_window=3dis_num_iter=4000dis_conv_tol=2.0000000000d-10mp_grid=9,9,1! restart = plotbands_plot=.true.beginunit_cell_cartang2.46000000000.00000000000.0000000000-1.23000000002.13042249330.00000000000.00000000000.000000000020.0000000000end unit_cell_cartbeginatoms_cartangC0.00000000001.42028166220.0000000000C1.23000000000.71014083110.0000000000end atoms_cartbeginkpoint_pathG0.00000000000.00000000000.0000000000M0.50000000000.00000000000.0000000000M0.50000000000.00000000000.0000000000K0.33333333330.33333333330.0000000000K0.33333333330.33333333330.0000000000G0.00000000000.00000000000.0000000000end kpoint_pathbeginkpoints0.000000000.000000000.000000000.000000000.111111110.000000000.000000000.222222220.000000000.000000000.333333330.000000000.000000000.444444440.000000000.000000000.555555560.000000000.000000000.666666670.00000000......
graphene_bandsdiff.gnu The gnuplot script to compare DFT and Wannier bands
#!/usr/bin/env gnuplotsetterminalpdfenhancedcolordashedlw1size6in,9insetoutput"graphene_bandsdiff.pdf"setsizeratio1.5fermi=-2.3043# set style data dotssetkeysetxrange[0:4.02877]setyrange[(-22.91167-fermi):(23.53815-fermi)]setarrowfrom1.47463,(-22.91167-fermi)to1.47463,(23.53815-fermi)noheadsetarrowfrom2.32601,(-22.91167-fermi)to2.32601,(23.53815-fermi)noheadsetxtics("G"0.00000,"M"1.47463,"K"2.32601,"G"4.02877)# scale QE x-axis to be consistent with w90plot"graphene.bands.dat.gnu"u($1*2.554):($2-fermi)wltitle"QE",\
"graphene_band.dat"u1:($2-fermi)wltitle"W90"
Generate a graphene.projbands.gnu_projected.ps file
Terminal
gnuplotgraphene.projbands.gnu
Generate a graphene.projbands.gnu_projected.pdf file, see the following
Fig. Projected bands
Terminal
ps2pdfgraphene.projbands.gnu_projected.ps
Band structure of graphene with projectability.
Run pw.x to obtain the Bloch states on a uniform k-point grid
Terminal
pw.x<graphene.nscf>nscf.out
Run wannier90.x -pp to generate a list of the required overlaps (written
into the graphene.nnkp file).
Note
See win input file, no need to specify initial projections,
they are automatically chosen from the pseudo-atomic orbitals inside
pseudopotentials used in the scf calculation.
Terminal
wannier90.x-ppgraphene
Run pw2wannier90.x to compute the overlap between Bloch states and
the projections for the starting guess (written in the
graphene.mmn and graphene.amn files).
Terminal
pw2wannier90.x<graphene.pw2wan>pw2wan.out
Run to compute the MLWFs.
Terminal
wannier90.xgraphene
Run gnuplot to compare DFT and Wannier-interpolated bands, this
will generate a PDF file graphene_bandsdiff.pdf, see the following
Fig. Bands comparison.
Terminal
./graphene_bandsdiff.gnu
Notice that high-projectability states in the conduction region are
properly reproduced. Try commenting out the
dis_froz_proj, dis_proj_max/min lines in the win input file, and
use the energy disentanglement dis_froz_max/min, and compare the
band interpolations.
Comparison of DFT and Wannier bands.
(Optional) Clean up all output files
Terminal
makeclean
Junfeng Qiao, Giovanni Pizzi, and Nicola Marzari. Projectability disentanglement for accurate and automated electronic-structure Hamiltonians. npj Comput. Mater., 9(1):208, Nov 2023. doi:10.1038/s41524-023-01146-w. ↩