Clustered Sampling Interpolation (CSI)
The CSI allows you to obtain converged optical absorption spectra of quasi-2D materials with a relatively coarse k-point grid. Before you proceed with the CSI 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. You may also want to first compute the electronic self-energy using the NNS method.
kernel on a coarse grid
kernel.x as usual on a coarser, uniform grid. Note that the
converged grid for the
kernel calculation is typically finer than the one
used to converge
sigma calculations as in a NNS calculation.
esp0mat files from a usual, uniform
Analogous to the NNS, run
setup_subsampling_csi.x format WFN_co WFN nk_fi_x
nk_fi_y nk_fi_z, where
format is either
is the coarse wave function used to calculate the BSE kernel, and
nk_fi_y nk_fi_z are the find kgrid to be used in BSE. This must be an integer
multiple of the coarse grid.
The output files are:
epsilon_q0s.inp: contains part of the
epsilon.inpfile needed to generate
epsmatfor the clustered points.
kpoints_wfnq.dat: contains a list of kpoints needed for the
WFNqused to calculate
kpoints_sub_*.dat: contains a list of subsampled k-points surrounding each coarse point. There is one file per coarse point.
subsample.inp: contains the header for an input file needed during absorption.
Use the k-points in
kpoints_wfnq.dat to generate a
WFNq file with the
- Run epsilon using
epsilon_q0s.inpas the basis for
epsilon.inpand link to the
WFNqfile generated above. The output file is called
eps0mat.h5, but it is referred to as
epsmat_sub.h5for clarity in the rest of this document.
- Generate a
WFNfile containing the k-points in each
kpoints_sub_*.datfile. For example, for a 2x2 coarse grid, you will have 4
kpoints_sub_*.datfiles, so you will need to generate 4 wavefunctions,
- Run kernel for every
WFN_2, etc. The recommended way to do this is to have a separate directory for each
WFN_*file and then set up symbolic links to the correct input files. For example: In
eps0mat.h5to the same
eps0mat.h5used in the coarse kernel calculation from step 1 with
ln -s epsmat_sub.h5 epsmat.h5,
ln -s WFN_1 WFN_co. In
eps0mat.h5to the same
eps0mat.h5used in the coarse kernel calculation, and
ln -s epsmat_sub.h5 epsmat.h5and
ln -s WFN_2 WFN_co, and so forth.
kernel.inp, make sure to add the following flags:
When you run the
kernel calculation, make sure that n_k^2 > number of
processors, where n_k is the number of k-points. This is a current
limitation of how the CSI is implemented.
- Move the generated
subsample.inpfile to the directory where you will run your absorption calculation.
- Open and edit
subsample.inp. You can find a sample
subsample.inpfile that explains the file format in
BSE/subsample.inpin your BerkeleyGW source directory.
- Run absorption. Link the
WFN_cois same as in the coarse kernel calculation, and
WFN_fiis as usual, with a size that has to be converged. In
absorption.inpinclude the following flag:
subsample_line cutoff, where
cutoffis your coarse grid spacing. For instance, if your coarse grid is
30x30x1, the cutoff is 0.0333. Everything else in
absorption.inpshould be the same as your previous calculation. Make sure that
subsample.inpis in the same directory as