Skip to content

Kernel code input keywords (kernel.inp)

Required keywords

Optional keywords

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:

  1. With this option BerkeleyGW will calculate transitions beyond those needed by the full BSE, such as (v,v)\rightarrow(c,c).
  2. 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.
  3. 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').
  4. 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

  1. Qflag 0 : read \psi_{vk+Q} from WFNq_co
  2. Qflag 1 : standard kernel calculation, (Q=0)
  3. Qflag 2 : Q shift is assumed commensurate with the kgrid so that \psi_{vk+Q} can be read from WFN_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.