Obtain MLWFs for silicon using projectability disentanglement, with additional
\(3d\) projectors to describe high-energy conduction bands.
For more details on the methodology, see Ref.1.
&INPUTPPatom_proj=.true.! use external projectorsatom_proj_ext=.true.! dir for external projectorsatom_proj_dir='./ext_proj'outdir='./out/'prefix='silicon'seedname='silicon'! for excluding specific projectors! this excludes 3d projectors, then the results are similar! to that of using UPF file, i.e., project onto Si s+p orbitals! for the indices of orbitals, see the pw2wan stdout! atom_proj_exclude = 5 6 7 8 9 14 15 16 17 18/
num_wann=18num_bands=40auto_projections=.true.dis_froz_proj=.true.dis_proj_max=0.95dis_proj_min=0.01! you can also add an energy window to be safedis_froz_max=8.7fermi_energy=6.7332num_iter=4000conv_tol=2.0000000000d-10conv_window=3dis_conv_tol=2.0000000000d-10dis_num_iter=4000num_cg_steps=200mp_grid=101010bands_plot=.true.beginatoms_cartangSi4.04820564391.34940188134.0482056439Si0.00000000000.00000000000.0000000000end atoms_cartbeginunit_cell_cartang0.00000000002.69880376262.69880376262.69880376260.00000000002.69880376262.69880376262.69880376260.0000000000end unit_cell_cartbeginkpoint_pathG0.00000000000.00000000000.0000000000X0.50000000000.00000000000.5000000000X0.50000000000.00000000000.5000000000U0.62500000000.25000000000.6250000000K0.37500000000.37500000000.7500000000G0.00000000000.00000000000.0000000000G0.00000000000.00000000000.0000000000L0.50000000000.50000000000.5000000000L0.50000000000.50000000000.5000000000W0.50000000000.25000000000.7500000000W0.50000000000.25000000000.7500000000X0.50000000000.00000000000.5000000000end kpoint_pathbeginkpoints0.000000000.000000000.000000000.000000000.000000000.100000000.000000000.000000000.20000000......
silicon_bandsdiff.gnu The gnuplot script to compare DFT and Wannier bands
#!/usr/bin/env gnuplotsetterminalpdfenhancedcolordashedlw1size6in,6insetoutput"silicon_bandsdiff.pdf"setsizeratio1fermi=6.7332# set style data dotssetkeysetxrange[0:5.22358]setyrange[(-6.69831-fermi):(34.57817-fermi)]setarrowfrom1.16407,(-6.69831-fermi)to1.16407,(34.57817-fermi)noheadsetarrowfrom1.57563,(-6.69831-fermi)to1.57563,(34.57817-fermi)noheadsetarrowfrom2.81031,(-6.69831-fermi)to2.81031,(34.57817-fermi)noheadsetarrowfrom3.81842,(-6.69831-fermi)to3.81842,(34.57817-fermi)noheadsetarrowfrom4.64154,(-6.69831-fermi)to4.64154,(34.57817-fermi)noheadsetxtics("G"0.00000,"X"1.16407,"U|K"1.57563,"G"2.81031,\
"L"3.81842,"W"4.64154,"X"5.22358)# scale QE x-axis to be consistent with w90plot"silicon.bands.dat.gnu"u($1*1.6459):($2-fermi)wltitle"QE",\
"silicon_band.dat"u1:($2-fermi)wltitle"W90"
Run bands.x to obtain a silicon.bands.dat file containing the band
structure of silicon
Terminal
bands.x<silicon.bandsx>bandsx.out
Run pw.x to obtain the Bloch states on a uniform k-point grid
Terminal
pw.x<silicon.nscf>nscf.out
Run pw.x to generate a list of the required overlaps (written into the
silicon.nnkp file).
Note
See win input file, no need to specify initial projections,
they are chosen from the pseudo-atomic orbitals inside the
ext_proj/Si.dat file.
Terminal
wannier90.x-ppsilicon
Run pw2wannier90.x to compute the overlap between Bloch states and
the projections for the starting guess (written in the silicon.mmn
and silicon.amn files).
Terminal
pw2wannier90.x<silicon.pw2wan>pw2wan.out
Run pw.x to compute the MLWFs.
Terminal
wannier90.xsilicon
Run gnuplot to compare DFT and Wannier-interpolated bands, this
will generate a PDF file silicon_bandsdiff.pdf, see
Fig.Bands comparison.
! for excluding specific projectors! this excludes 3d projectors, then the results are similar! to that of using UPF file, i.e., project onto Si s+p orbitals! for the indices of orbitals, see the pw2wan stdout! atom_proj_exclude = 5 6 7 8 9 14 15 16 17 18
Hint
You need to set num_wann = 8 in the silicon.win file as well, to
be consistent with the reduced number of projectors.
Now that \(3d\) projectors provide us a larger space for optimization,
you can try increasing the dis_froz_max to freeze higher energy
bands, if you are targeting at reproducing those eigenvalues.
Note
The dis_proj_min/max and dis_froz_min/max can be
enabled simultaneously: the union of inner energy window and
high-projectability states will be freezed, and the union of states
outside outer energy window and having low projectability will be
discarded. Thus, you can still use energy window to make sure
near-Fermi energy states are well reproduced, and use
"projectability window" to selectively freeze atomic-like states in
the conduction region.
The default dis_proj_max = 0.95 might not freeze all the states
you want, try changing this value and see the band interpolation
results. For other materials, it might worth trying decreasing this
value to freeze more states.
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. ↩