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: setup_subsampling_nns.x
Run setup_subsampling_nns.x
, which is located in the Epsilon
subdirectory
of BerkeleyGW. The syntax is: setup_subsampling_nns.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 setup_subsampling_nns.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 setup_subsampling_nns.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 setup_subsampling_nns.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 bysetup_subsampling_nns.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.