Kernel
code input keywords (kernel.inp
)
Required keywords
Optional keywords
bare_coulomb_cutoff [float]
cell_box_truncation
cell_slab_truncation
cell_wire_truncation
coulomb_truncation_radius [float]
die_outside_sphere
dont_check_norms
dont_use_hdf5
energy_loss
exciton_Q_shift
extended_kernel
fermi_level [float]
fermi_level_absolute
fermi_level_relative
fullbz_replace
fullbz_write
g_sum_algo
high_memory
ignore_outside_sphere
low_comm
low_memory
mtxel_algo
n_ffts_per_batch [integer]
no_symmetries_coarse_grid
read_kpoints
screened_coulomb_cutoff [float]
screening_graphene
screening_metal
screening_semiconductor
spherical_truncation
use_symmetries_coarse_grid
use_wfn_hdf5
verbosity [integer]
w_sum_algo
wfn_hdf5_min_band_block [integer]
write_vcoul
Keyword documentation
Screening type
How does the screening of the system behaves? (default=screening_semiconductor
)
BerkeleyGW uses this information to apply a different numerical
procedure to computing the diverging q\rightarrow 0 contribution
to the screened Coulomb potential W_{GG'}(q).
These models are not used in Hartree-Fock calculations.
screening_semiconductor
Use this flag on gapped system (default).
screening_metal
Use this flag on metallic system, i.e., constant DOS at the Fermi energy.
screening_graphene
Use this flag on systems with vanishing linear DOS at the Fermi level, such as graphene.
Truncation schemes for the Coulomb potential
Since BerkerleyGW is a plane-wave-based code, one must truncate the Coulomb potential to avoid spurious interactions between repeated supercells when dealing with systems with reduced dimensionality. Make sure you understand how to setup your mean-field calculation so that the supercell is large enough to perform a truncation of the Coulomb potential.
cell_box_truncation
Truncate the Coulomb potential based on the Wigner-Seitz cell. This is the recommended truncation for 0D systems.
cell_wire_truncation
Truncation scheme for 1D systems, such as carbon nanotubes. The z direction is assumed to be periodic, and x and y confined.
cell_slab_truncation
Truncation scheme for 2D systems, such as graphene or monolayer MoS2. The z direction is assumed to be confined, and x and y periodic.
spherical_truncation
Truncate the Coulomb potential based on an analytical scheme.
This is ok for quasi-spherical systems, such as CH4 molecule or C60,
but the cell_box_truncation
is the most general and recommended
scheme. When using spherical truncation, you must also specify the
radius for the truncation in spherical_truncation
.
coulomb_truncation_radius [float]
This specifies the radius of for spherical truncation, in Bohr,
so that the Coulomb potential v(r) is zero for r larger than
these values. This flag is to be used together with spherical_truncation
.
GPUs Parameters
Input parameters controlling the execution when running with GPU support.
For the default algorithm (keys ending with _algo
) the hierarchy depends on which programming models are compiled in (OpenACC, OpenMP-target and/or CPU (threaded or not)):
if all possible implementations have been compiled then the hierarchy is OPENACC_ALGO
> OMP_TARGET_ALGO
> CPU_ALGO
.
mtxel_algo
Controlling which algorithm to use for the GPU offload of the mtxel
kernel calculating charge matrix elements.
Possible values are CPU_ALGO
, OPENACC_ALGO
and OMP_TARGET_ALGO
(See section header for default values).
g_sum_algo
Controlling which algorithm to use for the GPU offload of the g_sum
kernel calculating the direct matrix elements.
Possible values are CPU_ALGO
, OPENACC_ALGO
and OMP_TARGET_ALGO
(See section header for default values).
w_sum_algo
Controlling which algorithm to use for the GPU offload of the g_sum
kernel calculating the screened coulomb matrix elements.
Possible values are CPU_ALGO
, OPENACC_ALGO
and OMP_TARGET_ALGO
(See section header for default values).
n_ffts_per_batch [integer]
Control how many FFTs to perform simultaneously in the batched mtxel
kernel (Default 20).
Misc. parameters
number_val_bands [integer]
Number of valence bands to include in the kernel of the BSE, counting down from the highest occupied state.
number_cond_bands [integer]
Number of conduction bands to include in the kernel of the BSE, counting up from lowest unnocupied state.
screened_coulomb_cutoff [float]
Energy cutoff for the screened Coulomb interaction, in Ry. The screened Coulomb interaction W_{GG'}(q) will contain all G-vectors with kinetic energy |q+G|^2 up to this cutoff. Default is the epsilon_cutoff used in the epsilon code. This value cannot be larger then the epsilon_cutoff or the bare_coulomb_cutoff.
bare_coulomb_cutoff [float]
Energy cutoff for the bare Coulomb interaction, in Ry. The bare Coulomb interaction v(G+q) will contain all G-vectors with kinetic energy |q+G|^2 up to this cutoff. Default is the WFN cutoff.
fermi_level [float]
Specify the Fermi level (in eV), if you want implicit doping
Note that value refers to energies after scissor shift or eqp corrections.
See also fermi_level_absolute
and fermi_level_relative
to control
the meaning of the Fermi level.
The Fermi level in keyword fermi_level
can be treated as an absolute
value or relative to that found from the mean field (default). Using
fermi_level_absolute
will force the code to recompute the Fermi level
regardless of existing occupations/ifmax array.
fermi_level_absolute
fermi_level_relative
dont_use_hdf5
Read from traditional simple binary format for epsmat/eps0mat instead of HDF5 file format. Relevant only if code is compiled with HDF5 support.
verbosity [integer]
Verbosity level, options are:
- 1: default
- 2: medium - info about k-points, symmetries, and eqp corrections.
- 3: high - full dump of the reduced and unfolded k-points.
- 4: log - log of various function calls. Use to debug code.
- 5: debug - extra debug statements. Use to debug code.
- 6: max - only use if instructed to, severe performance downgrade. Note that verbosity levels are cumulative. Most users will want to stick with level 1 and, at most, level 3. Only use level 4+ if debugging the code.
use_wfn_hdf5
Read WFN_co/WFNq_co in HDF5 format (i.e. read from WFN_co.h5/WFNq_co.h5).
wfn_hdf5_min_band_block [integer]
Define minimum band block size when reading WFN, default is a block of 128 Mb minimum, used mainly for debugging.
These flags define whether to use symmetries to unfold
the Brillouin zone or not in file WFN_co
(use_symmetries_coarse_grid
, no_symmetries_coarse_grid
).
In most cases, you probably want to use symmetries to unfold
the grid in WFN_co
.
Warning
Default is not to unfold!
no_symmetries_coarse_grid
use_symmetries_coarse_grid
write_vcoul
Write the bare Coulomb potential v(q+G) to file
low_comm
Low communication The default behavior of the code is to distribute the dielectric matrix among the processors. While this minimizes memory usage, it also increases the communication. By using the low_comm flag, each processor will store the whole dielectric matrix. It is advisable to use this flag whenever each PE has enough memory to hold the whole epsmat file.
low_memory
Low Memory option Calculate matrix elements separately for each k,c,v,k',c',v' pair
high_memory
High Memory option Save all wavefunction FFTs when calculating the BSE kernel. Overwrites the low_memory option.
fullbz_replace
'unfolded BZ' is from the kpoints in the WFN file 'full BZ' is generated from the kgrid parameters in the WFN file See comments in Common/checkbz.f90 for more details Replace unfolded BZ with full BZ
fullbz_write
Write unfolded BZ and full BZ to files
die_outside_sphere
Rotation of the k-points may bring G-vectors outside of the sphere. Use the following keywords to specify whether to die if some of the G-vectors fall outside of the sphere. The default is to ignore. Set to die in case screened_coulomb_cutoff = bare_coulomb_cutoff. Set to ignore in case screened_coulomb_cutoff < bare_coulomb_cutoff.
ignore_outside_sphere
read_kpoints
Flag to read k-points from the 'kpoints' file. The default is to read k-points from the wfn file.
extended_kernel
Calculates the kernel for all (n_1,n_2)\rightarrow(n_1',n_2') transitions, and not only the pairs involving (v,c)\rightarrow(v'c') transitions necessary within by the Tamm-Dancoff approximation (TDA).
Notes:
- With this option BerkeleyGW will calculate transitions beyond those needed by the full BSE, such as (v,v)\rightarrow(c,c).
- In principle, one should always calculate these extra kernel blocks, because the interpolation routine in absorption mixes wavefunction characters, in particular for metallic and narrow-gap semiconductors.
- You do not need these extended kernel blocks only if you are not interpolating later on. However, the only way to do non-TDA absorption calculation right now is with the extended kernel flag, i.e., there's no intermediate option to include only (v,c)\rightarrow(c'v') transitions but not (v,v)\rightarrow(c'c').
- Only parallelization such that number of processors \le k^2 is supported.
exciton_Q_shift
Computes finite Q kernel (see Kernel Overview
).
Use the flag as follows:
exciton_Q_shift Qflag Qx Qy Qz
where
Qflag
0 : read \psi_{vk+Q} fromWFNq_co
Qflag
1 : standard kernel calculation, (Q=0)Qflag
2 : Q shift is assumed commensurate with the kgrid so that \psi_{vk+Q} can be read fromWFN_co
.
Qx
Qy
Qz
, specify the shift between the WFN_co
and WFNq_co
in crystal coordinates.
Note: this Q shift is not the center-of-mass momentum for the exciton being computed. There is a
relative negative sign! See Kernel Overview
.
Warning
Does not work with use_symmetries_coarse_grid
, WFN_co and WFNq_co must be
computed on the full BZ.
energy_loss
Include the long range part of the exchange, automatically activated in the case of exciton_Q_shift
calculation.
dont_check_norms
Whether we want to check WFN norms.