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.
Pre-setup: kernel on a coarse grid
First, run 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 epsilon and sigma calculations as in a NNS calculation.
Use epsmat and esp0mat files from a usual, uniform epsilon calculation.
Setup: setup_subsampling_csi.x
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 ASCII, BIN, or HDF5, WFN_co
is the coarse wave function used to calculate the BSE kernel, and nk_fi_x
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 theepsilon.inpfile needed to generateepsmatfor the clustered points.kpoints_wfnq.dat: contains a list of kpoints needed for theWFNqused to calculateepsmat.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
mean-field code.
Mean-field and epsilon calculations
-
Run epsilon using
epsilon_q0s.inpas the basis forepsilon.inpand link to theWFNqfile generated above. The output file is calledeps0mat.h5, but it is referred to asepsmat_sub.h5for clarity in the rest of this document. -
Generate a
WFNfile containing the k-points in eachkpoints_sub_*.datfile. For example, for a 2x2 coarse grid, you will have 4kpoints_sub_*.datfiles, so you will need to generate 4 wavefunctions,WFN_1,WFN_2,WFN_3,WFN_4. -
Run kernel for every
WFN_1,WFN_2, etc. The recommended way to do this is to have a separate directory for eachWFN_*file and then set up symbolic links to the correct input files. For example: Indirectory_1/linkeps0mat.h5to the sameeps0mat.h5used in the coarse kernel calculation. Link the subsampled dielectric function intoepsmat.h5withln -s epsmat_sub.h5 epsmat.h5, (bear in mind our naming convention here), and the wavefunction asln -s WFN_1 WFN_co. Indirectory_2/, link botheps0mat.h5andepsmat.has indirectory_1/, but use the corresponding wavefunction withln -s WFN_2 WFN_co. Repeat for other directorie.
Kernel calculation
In kernel.inp, make sure to add the following flags:
no_symmetries_coarse_grid, and patched_sampling_co.
Warning
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.
Absorption calculation
-
Move the generated
subsample.inpfile to the directory where you will run your absorption calculation. -
Open and edit
subsample.inp. You can find a samplesubsample.inpfile that explains the file format inBSE/subsample.inpin your BerkeleyGW source directory. -
Run absorption. Link the
bsematcoarse file,WFN_cois same as in the coarse kernel calculation, andWFN_fiis as usual, with a size that has to be converged. Inabsorption.inpinclude the following flag:subsample_line cutoff, wherecutoffis your coarse grid spacing. For instance, if your coarse grid is30x30x1, the cutoff is 0.0333. Everything else inabsorption.inpshould be the same as your previous calculation. Make sure thatsubsample.inpis in the same directory asabsorption.inp.