Nonuniform Neck Subsampling (NNS)
The NNS allows you to obtain converged electronic self-energy on quasi-2D materials with a relatively coarse k-point grid. Before you proceed with the NNS calculation, make sure you understand the formalism and the first mean-field calculation that has to be performed, as documented in the overview of the subsampling approach.
Setup: Epsilon/subsample_plan.x
Run subsample_plan.x
, which is located in the Epsilon
subdirectory of
BerkeleyGW. The syntax is: BGW/Epsilon/subsample_plan.x format WFN
, where
format
specifies the format of the input WFN file, which can be either
ASCII
, BIN
, orHDF5
. If you generated the file WFN
with Quantum
ESPRESSO, you will want to select BIN
; if you generated a WFN.h5
file with
ParaBands, then you want to select HDF5
. The script
also supports other optional parameters, which are documented by running the
script without any argument. The default options work well for many quasi-2D
semiconductors, including monolayer MoS2.
The output of subsample_plan.x
is a list of k-points to generate q-shifted a
WFNq
file. There are two ways you can generate this: you can generate a
single WFNq
file which includes all possible shifted k points and which allow
you to compute \varepsilon(q) for all possible wavevectors q. This is the
simpler way to use the script, but the generated WFNq
may too large and you
may run out of memory depending on your calculation. The other option is to
split the calculation, and generate a series of WFNq
files, one for each
calculation of \varepsilon(q) for different q. This requires a bit more
extra work, such as running several instances of Quantum ESPRESSO, and
separately using each generated WFNq
file to compute \varepsilon(q) for a
different q point, and merging the generated eps0mat.h5
files. However,
this will use significantly less memory in BerkeleyGW.
The output files produced by subsample_plan.x
are:
kpoint_all.dat
: list of all the shifted k points needed to generate a singleWFNq
file.kpoint_xxx.dat
: list of k points needed to generate aWFNq
file of the specificxxx
qpoint by theepsilon
code.epsilon_q0s.inp
: list of qpoints for theepsilon
input file.subweights.dat
: file to be used as input in thesigma
calculation.
Mean-field calculations
Choose one of the two following ways:
-
Use the list of all k-points from
kpoint_all.dat
, then usepw2bgw
to generate one (often very large)WFNq
file. This is the easiest way to operate, but you may run out of memory. -
Use a separate list of k-points for each qpoint separately. In this case compute each different
WFNq
file in a separate directory, usekpoint_xxx.dat
for the list of kpoints of each one, and generateWFNq
for each one separately
Dielectric matrix: epsilon
Use the WFN
file that you provided to subsample_plan.x
for the epsilon
calculation, which should include many empty bands. In epsilon.inp
, replace
the usual gamma qpoint of [0 0 0]
with the q-list from epsilon_q0s.inp
. The
uniform grid kpoint list is added as usual. Use the keyword subsample
that
should also be present in epsilon_q0s.inp
. Also, remember to use the needed
truncation scheme for 2D systems, such as cell_slab_truncation
. See an
example epsilon.inp
file below. BerkeleyGW will produce an eps0mat.h5
file
which now contains a number of q\rightarrow0 points required for the NNS
calculation!
Note
You can perform epsilon for each qpoint separately. In the end, you will
need to combine all eps0mat.h5
files together and all eps0mat.h5
files
together. To do that you can use the BGW script epsmat_hdf5_merge.py
.
Self-energy: sigma
Run sigma with eps0mat
and epsmat
as usual, and in sigma.inp
file:
- Use the keyword
subsample
in the input file, as well as the truncation you used inepsilon.inp
, e.g.,cell_slab_truncation
. - Copy/link the file
subweights.dat
produced bysubsample_plan.x
to the directory in which you run sigma.
If you are interested in computing optical absorption spectra, you may also want to read about the CSI method.