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 singleWFNqfile.kpoint_xxx.dat: list of k points needed to generate aWFNqfile of the specificxxxqpoint by theepsiloncode.epsilon_q0s.inp: list of qpoints for theepsiloninput file.subweights.dat: file to be used as input in thesigmacalculation.
Mean-field calculations
Choose one of the two following ways:
-
Use the list of all k-points from
kpoint_all.dat, then usepw2bgwto generate one (often very large)WFNqfile. 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
WFNqfile in a separate directory, usekpoint_xxx.datfor the list of kpoints of each one, and generateWFNqfor 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
subsamplein the input file, as well as the truncation you used inepsilon.inp, e.g.,cell_slab_truncation. - Copy/link the file
subweights.datproduced bysetup_subsampling_nns.xto 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.